Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AP-Dev] create account_history_v1 topic #746

Merged
merged 7 commits into from
Jan 3, 2025
Merged

Conversation

pansbro12
Copy link
Contributor

No description provided.

@pansbro12 pansbro12 requested a review from a team as a code owner January 3, 2025 14:09
@uw-infra
Copy link

uw-infra commented Jan 3, 2025

Terraform run output for

Cluster: dev-aws
Module: account-platform/kafka-shared
Path: dev-aws/account-platform/
Commit ID: aebb666d11564c72109c9e826111225b03f55b7c
✅ Run Status: Ok, Run Summary: Plan: 1 to add, 0 to change, 0 to destroy.
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # kafka_topic.account_history_v1 will be created
  + resource "kafka_topic" "account_history_v1" {
      + config             = {
          + "cleanup.policy"        = "compact"
          + "max.compaction.lag.ms" = "604800000"
        }
      + id                 = (known after apply)
      + name               = "account.history.v1"
      + partitions         = 15
      + replication_factor = 3
    }

Plan: 1 to add, 0 to change, 0 to destroy.

To manually trigger plan again please post @terraform-applier plan dev-aws/account-platform/ as comment.

denisnikulin
denisnikulin previously approved these changes Jan 3, 2025
@denisnikulin denisnikulin dismissed their stale review January 3, 2025 14:16

should go to terraform

@uw-infra
Copy link

uw-infra commented Jan 3, 2025

Terraform run output for

Cluster: dev-aws
Module: pubsub/kafka-shared-msk-account-identity
Path: dev-aws/kafka-shared-msk/account-identity
Commit ID: 4adbe6ed3b63b650af23c6365d873c6599f38f19
⛔ Run Status: Errored, Run Summary: unable to init module
{
  "terraform_version": "1.10.3",
  "platform": "linux_amd64",
  "provider_selections": {},
  "terraform_outdated": false
}
Initializing the backend...
Initializing modules...
- account_identity_legacy_account_holder_compaction in ../../../modules/tls-app
- account_identity_update_holders in ../../../modules/tls-app
- account_identity_verification in ../../../modules/tls-app

Error: Missing Required Value

  on __env.tf line 4, in terraform:
   4:   backend "s3" {}

The attribute "bucket" is required by the backend.

Refer to the backend documentation for additional information which
attributes are required.

Error: Missing Required Value

  on __env.tf line 4, in terraform:
   4:   backend "s3" {}

The attribute "key" is required by the backend.

Refer to the backend documentation for additional information which
attributes are required.

Error: Missing region value

  on __env.tf line 4, in terraform:
   4:   backend "s3" {}

The "region" attribute or the "AWS_REGION" or "AWS_DEFAULT_REGION"
environment variables must be set.

unable to init module

To manually trigger plan again please post @terraform-applier plan dev-aws/kafka-shared-msk/account-identity as comment.

@uw-infra
Copy link

uw-infra commented Jan 3, 2025

Terraform run output for

Cluster: dev-aws
Module: account-platform/kafka-shared
Path: dev-aws/account-platform/
Commit ID: 5d67fbeef2e6b0b1d2753bec5e4d7ea4fb35f258
✅ Run Status: Ok, Run Summary: No changes. Your infrastructure matches the configuration.
No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration
and found no differences, so no changes are needed.

To manually trigger plan again please post @terraform-applier plan dev-aws/account-platform/ as comment.

@uw-infra
Copy link

uw-infra commented Jan 3, 2025

Terraform run output for

Cluster: dev-aws
Module: pubsub/kafka-shared-msk-account-identity
Path: dev-aws/kafka-shared-msk/account-identity
Commit ID: 5d5be18525382cffa58b32529c02a45dcdc1e3dd
✅ Run Status: Ok, Run Summary: Plan: 1 to add, 0 to change, 89 to destroy.
Plan output has reached the max character limit of 65000 characters. The output is truncated from the top.
_indexer|*|Read|Allow|Group|account-identity.account-unified-events|Literal" -> null
      - resource_name                = "account-identity.account-unified-events" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Group" -> null
    }

  # module.account_identity_unified_events_indexer.kafka_acl.topic_acl["account-identity.account.unified.events"] will be destroyed
  # (because kafka_acl.topic_acl is not in configuration)
  - resource "kafka_acl" "topic_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=account-platform/unified_events_indexer" -> null
      - id                           = "User:CN=account-platform/unified_events_indexer|*|Read|Allow|Topic|account-identity.account.unified.events|Literal" -> null
      - resource_name                = "account-identity.account.unified.events" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Topic" -> null
    }

  # module.account_identity_update_account_projector.kafka_acl.group_acl["account-identity.update-account-projector-aws"] will be destroyed
  # (because kafka_acl.group_acl is not in configuration)
  - resource "kafka_acl" "group_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=account-platform/update_account_projector" -> null
      - id                           = "User:CN=account-platform/update_account_projector|*|Read|Allow|Group|account-identity.update-account-projector-aws|Literal" -> null
      - resource_name                = "account-identity.update-account-projector-aws" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Group" -> null
    }

  # module.account_identity_update_account_projector.kafka_acl.topic_acl["account-identity.legacy.account.change.events.compacted"] will be destroyed
  # (because kafka_acl.topic_acl is not in configuration)
  - resource "kafka_acl" "topic_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=account-platform/update_account_projector" -> null
      - id                           = "User:CN=account-platform/update_account_projector|*|Read|Allow|Topic|account-identity.legacy.account.change.events.compacted|Literal" -> null
      - resource_name                = "account-identity.legacy.account.change.events.compacted" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Topic" -> null
    }

  # module.cbc_account_events_relay.kafka_acl.group_acl["account-identity.cbc-account-events-relay-v2"] will be destroyed
  # (because kafka_acl.group_acl is not in configuration)
  - resource "kafka_acl" "group_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=cbc/cbc-account-events-relay-v2" -> null
      - id                           = "User:CN=cbc/cbc-account-events-relay-v2|*|Read|Allow|Group|account-identity.cbc-account-events-relay-v2|Literal" -> null
      - resource_name                = "account-identity.cbc-account-events-relay-v2" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Group" -> null
    }

  # module.cbc_account_events_relay.kafka_acl.topic_acl["account-identity.legacy.account.events"] will be destroyed
  # (because kafka_acl.topic_acl is not in configuration)
  - resource "kafka_acl" "topic_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=cbc/cbc-account-events-relay-v2" -> null
      - id                           = "User:CN=cbc/cbc-account-events-relay-v2|*|Read|Allow|Topic|account-identity.legacy.account.events|Literal" -> null
      - resource_name                = "account-identity.legacy.account.events" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Topic" -> null
    }

  # module.cbc_account_events_relay.kafka_acl.topic_acl["account-identity.public.account.events"] will be destroyed
  # (because kafka_acl.topic_acl is not in configuration)
  - resource "kafka_acl" "topic_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=cbc/cbc-account-events-relay-v2" -> null
      - id                           = "User:CN=cbc/cbc-account-events-relay-v2|*|Read|Allow|Topic|account-identity.public.account.events|Literal" -> null
      - resource_name                = "account-identity.public.account.events" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Topic" -> null
    }

  # module.cbc_fraud_detection_consumer.kafka_acl.group_acl["account-identity.cbc-fraud-detection-consumer-v1"] will be destroyed
  # (because kafka_acl.group_acl is not in configuration)
  - resource "kafka_acl" "group_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=cbc/cbc-fraud-detection-consumer" -> null
      - id                           = "User:CN=cbc/cbc-fraud-detection-consumer|*|Read|Allow|Group|account-identity.cbc-fraud-detection-consumer-v1|Literal" -> null
      - resource_name                = "account-identity.cbc-fraud-detection-consumer-v1" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Group" -> null
    }

  # module.cbc_fraud_detection_consumer.kafka_acl.topic_acl["account-identity.public.account.events"] will be destroyed
  # (because kafka_acl.topic_acl is not in configuration)
  - resource "kafka_acl" "topic_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=cbc/cbc-fraud-detection-consumer" -> null
      - id                           = "User:CN=cbc/cbc-fraud-detection-consumer|*|Read|Allow|Topic|account-identity.public.account.events|Literal" -> null
      - resource_name                = "account-identity.public.account.events" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Topic" -> null
    }

  # module.contact_channels_account_events_consumer.kafka_acl.group_acl["contact-channels.account-events-consumer"] will be destroyed
  # (because kafka_acl.group_acl is not in configuration)
  - resource "kafka_acl" "group_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=contact-channels/account-events-consumer" -> null
      - id                           = "User:CN=contact-channels/account-events-consumer|*|Read|Allow|Group|contact-channels.account-events-consumer|Literal" -> null
      - resource_name                = "contact-channels.account-events-consumer" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Group" -> null
    }

  # module.contact_channels_account_events_consumer.kafka_acl.topic_acl["account-identity.account.unified.events"] will be destroyed
  # (because kafka_acl.topic_acl is not in configuration)
  - resource "kafka_acl" "topic_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=contact-channels/account-events-consumer" -> null
      - id                           = "User:CN=contact-channels/account-events-consumer|*|Read|Allow|Topic|account-identity.account.unified.events|Literal" -> null
      - resource_name                = "account-identity.account.unified.events" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Topic" -> null
    }

  # module.customer_support_crm.kafka_acl.group_acl["customer-support.account.legacy.events.v31072024"] will be destroyed
  # (because kafka_acl.group_acl is not in configuration)
  - resource "kafka_acl" "group_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=crm/account-projector" -> null
      - id                           = "User:CN=crm/account-projector|*|Read|Allow|Group|customer-support.account.legacy.events.v31072024|Literal" -> null
      - resource_name                = "customer-support.account.legacy.events.v31072024" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Group" -> null
    }

  # module.customer_support_crm.kafka_acl.topic_acl["account-identity.legacy.account.events"] will be destroyed
  # (because kafka_acl.topic_acl is not in configuration)
  - resource "kafka_acl" "topic_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=crm/account-projector" -> null
      - id                           = "User:CN=crm/account-projector|*|Read|Allow|Topic|account-identity.legacy.account.events|Literal" -> null
      - resource_name                = "account-identity.legacy.account.events" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Topic" -> null
    }

  # module.customer_support_crm_idv.kafka_acl.group_acl["customer-support.idv.projector-001"] will be destroyed
  # (because kafka_acl.group_acl is not in configuration)
  - resource "kafka_acl" "group_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=crm/idv-projector" -> null
      - id                           = "User:CN=crm/idv-projector|*|Read|Allow|Group|customer-support.idv.projector-001|Literal" -> null
      - resource_name                = "customer-support.idv.projector-001" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Group" -> null
    }

  # module.customer_support_crm_idv.kafka_acl.topic_acl["account-identity.legacy.account.events"] will be destroyed
  # (because kafka_acl.topic_acl is not in configuration)
  - resource "kafka_acl" "topic_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=crm/idv-projector" -> null
      - id                           = "User:CN=crm/idv-projector|*|Read|Allow|Topic|account-identity.legacy.account.events|Literal" -> null
      - resource_name                = "account-identity.legacy.account.events" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Topic" -> null
    }

  # module.quoting_platform_account_projector.kafka_acl.group_acl["quoting-platform.account-projector"] will be destroyed
  # (because kafka_acl.group_acl is not in configuration)
  - resource "kafka_acl" "group_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=quoting-platform/account-projector" -> null
      - id                           = "User:CN=quoting-platform/account-projector|*|Read|Allow|Group|quoting-platform.account-projector|Literal" -> null
      - resource_name                = "quoting-platform.account-projector" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Group" -> null
    }

  # module.quoting_platform_account_projector.kafka_acl.topic_acl["account-identity.account.unified.events"] will be destroyed
  # (because kafka_acl.topic_acl is not in configuration)
  - resource "kafka_acl" "topic_acl" {
      - acl_host                     = "*" -> null
      - acl_operation                = "Read" -> null
      - acl_permission_type          = "Allow" -> null
      - acl_principal                = "User:CN=quoting-platform/account-projector" -> null
      - id                           = "User:CN=quoting-platform/account-projector|*|Read|Allow|Topic|account-identity.account.unified.events|Literal" -> null
      - resource_name                = "account-identity.account.unified.events" -> null
      - resource_pattern_type_filter = "Literal" -> null
      - resource_type                = "Topic" -> null
    }

Plan: 1 to add, 0 to change, 89 to destroy.

To manually trigger plan again please post @terraform-applier plan dev-aws/kafka-shared-msk/account-identity as comment.

@Jarota
Copy link
Contributor

Jarota commented Jan 3, 2025

300 deletions doesn't seem right, is that intentional? 🤔

@uw-infra
Copy link

uw-infra commented Jan 3, 2025

Terraform run output for

Cluster: dev-aws
Module: pubsub/kafka-shared-msk-account-identity
Path: dev-aws/kafka-shared-msk/account-identity
Commit ID: 7ac5b4c783fbc89762dc8efbdd35445deedde066
✅ Run Status: Ok, Run Summary: Plan: 4 to add, 0 to change, 0 to destroy.
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # kafka_topic.account_identity_account_history_v1 will be created
  + resource "kafka_topic" "account_identity_account_history_v1" {
      + config             = {
          + "cleanup.policy"        = "delete"
          + "compression.type"      = "zstd"
          + "local.retention.ms"    = "86400000"
          + "remote.storage.enable" = "true"
          + "retention.ms"          = "-1"
        }
      + id                 = (known after apply)
      + name               = "account-identity.account.history.v1"
      + partitions         = 15
      + replication_factor = 3
    }

  # module.account_identity_account_api_history.kafka_acl.group_acl["account-identity.account-api-history"] will be created
  + resource "kafka_acl" "group_acl" {
      + acl_host                     = "*"
      + acl_operation                = "Read"
      + acl_permission_type          = "Allow"
      + acl_principal                = "User:CN=account-platform/account_api_history"
      + id                           = (known after apply)
      + resource_name                = "account-identity.account-api-history"
      + resource_pattern_type_filter = "Literal"
      + resource_type                = "Group"
    }

  # module.account_identity_account_api_history.kafka_acl.producer_acl["account-identity.account.history.v1"] will be created
  + resource "kafka_acl" "producer_acl" {
      + acl_host                     = "*"
      + acl_operation                = "Write"
      + acl_permission_type          = "Allow"
      + acl_principal                = "User:CN=account-platform/account_api_history"
      + id                           = (known after apply)
      + resource_name                = "account-identity.account.history.v1"
      + resource_pattern_type_filter = "Literal"
      + resource_type                = "Topic"
    }

  # module.account_identity_account_api_history.kafka_acl.topic_acl["account-identity.account.atomic.v1"] will be created
  + resource "kafka_acl" "topic_acl" {
      + acl_host                     = "*"
      + acl_operation                = "Read"
      + acl_permission_type          = "Allow"
      + acl_principal                = "User:CN=account-platform/account_api_history"
      + id                           = (known after apply)
      + resource_name                = "account-identity.account.atomic.v1"
      + resource_pattern_type_filter = "Literal"
      + resource_type                = "Topic"
    }

Plan: 4 to add, 0 to change, 0 to destroy.

To manually trigger plan again please post @terraform-applier plan dev-aws/kafka-shared-msk/account-identity as comment.

@uw-infra
Copy link

uw-infra commented Jan 3, 2025

Terraform run output for

Cluster: dev-aws
Module: account-platform/kafka-shared
Path: dev-aws/account-platform/
Commit ID: 0473d92c5c7da8b0ac18666fa8093baa9581982e
✅ Run Status: Ok, Run Summary: No changes. Your infrastructure matches the configuration.
No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration
and found no differences, so no changes are needed.

To manually trigger plan again please post @terraform-applier plan dev-aws/account-platform/ as comment.

@denisnikulin denisnikulin merged commit 9827b2e into main Jan 3, 2025
2 checks passed
@denisnikulin denisnikulin deleted the account-history branch January 3, 2025 15:07
@uw-infra
Copy link

uw-infra commented Jan 3, 2025

Terraform run output for

Cluster: dev-aws
Module: pubsub/kafka-shared-msk-account-identity
Path: dev-aws/kafka-shared-msk/account-identity
Commit ID: 9827b2e78a3742a4f3e4ad9c8aaf4e0f8369a0f4
✅ Run Status: Ok, Run Summary: Apply complete! Resources: 4 added, 0 changed, 0 destroyed
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # kafka_topic.account_identity_account_history_v1 will be created
  + resource "kafka_topic" "account_identity_account_history_v1" {
      + config             = {
          + "cleanup.policy"        = "delete"
          + "compression.type"      = "zstd"
          + "local.retention.ms"    = "86400000"
          + "remote.storage.enable" = "true"
          + "retention.ms"          = "-1"
        }
      + id                 = (known after apply)
      + name               = "account-identity.account.history.v1"
      + partitions         = 15
      + replication_factor = 3
    }

  # module.account_identity_account_api_history.kafka_acl.group_acl["account-identity.account-api-history"] will be created
  + resource "kafka_acl" "group_acl" {
      + acl_host                     = "*"
      + acl_operation                = "Read"
      + acl_permission_type          = "Allow"
      + acl_principal                = "User:CN=account-platform/account_api_history"
      + id                           = (known after apply)
      + resource_name                = "account-identity.account-api-history"
      + resource_pattern_type_filter = "Literal"
      + resource_type                = "Group"
    }

  # module.account_identity_account_api_history.kafka_acl.producer_acl["account-identity.account.history.v1"] will be created
  + resource "kafka_acl" "producer_acl" {
      + acl_host                     = "*"
      + acl_operation                = "Write"
      + acl_permission_type          = "Allow"
      + acl_principal                = "User:CN=account-platform/account_api_history"
      + id                           = (known after apply)
      + resource_name                = "account-identity.account.history.v1"
      + resource_pattern_type_filter = "Literal"
      + resource_type                = "Topic"
    }

  # module.account_identity_account_api_history.kafka_acl.topic_acl["account-identity.account.atomic.v1"] will be created
  + resource "kafka_acl" "topic_acl" {
      + acl_host                     = "*"
      + acl_operation                = "Read"
      + acl_permission_type          = "Allow"
      + acl_principal                = "User:CN=account-platform/account_api_history"
      + id                           = (known after apply)
      + resource_name                = "account-identity.account.atomic.v1"
      + resource_pattern_type_filter = "Literal"
      + resource_type                = "Topic"
    }

Plan: 4 to add, 0 to change, 0 to destroy.
kafka_topic.account_identity_account_history_v1: Creating...
module.account_identity_account_api_history.kafka_acl.group_acl["account-identity.account-api-history"]: Creating...
module.account_identity_account_api_history.kafka_acl.topic_acl["account-identity.account.atomic.v1"]: Creating...
module.account_identity_account_api_history.kafka_acl.topic_acl["account-identity.account.atomic.v1"]: Creation complete after 0s [id=User:CN=account-platform/account_api_history|*|Read|Allow|Topic|account-identity.account.atomic.v1|Literal]
module.account_identity_account_api_history.kafka_acl.group_acl["account-identity.account-api-history"]: Creation complete after 0s [id=User:CN=account-platform/account_api_history|*|Read|Allow|Group|account-identity.account-api-history|Literal]
kafka_topic.account_identity_account_history_v1: Creation complete after 1s [id=account-identity.account.history.v1]
module.account_identity_account_api_history.kafka_acl.producer_acl["account-identity.account.history.v1"]: Creating...
module.account_identity_account_api_history.kafka_acl.producer_acl["account-identity.account.history.v1"]: Creation complete after 0s [id=User:CN=account-platform/account_api_history|*|Write|Allow|Topic|account-identity.account.history.v1|Literal]

Warning: Argument is deprecated

  with provider["registry.terraform.io/mongey/kafka"],
  on __env.tf line 12, in provider "kafka":
  12: provider "kafka" {

This parameter is now deprecated and will be removed in a later release,
please use `client_cert` instead.

(and one more similar warning elsewhere)

Apply complete! Resources: 4 added, 0 changed, 0 destroyed.

To manually trigger plan again please post @terraform-applier plan dev-aws/kafka-shared-msk/account-identity as comment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants