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

Add force_destroy field to aws_athena_database #2363

Merged
merged 4 commits into from
Dec 11, 2017

Conversation

betabandido
Copy link
Contributor

@betabandido betabandido commented Nov 18, 2017

This PR fixes #2362.

By adding a force_destroy field, it is now possible to delete a database that contains tables (by using the cascade option in the drop table query).

Additionally, error handling has been improved. When a query fails, StateChangeReason contains a message with the reason for the failure. The reason is now returned as part of the error message being printed on the console.

@atsushi-ishibashi Can you please have a look at this?

@radeksimko I can add some tests to check that destroying the database fails when force_destroy is not used, and it succeeds when the option is used. But, I would need some guidance on how to implement them. I imagine I would need to create the tables in a second test step (in the first step the creation of the database would take place) using the PreConfig hook. Is that correct?

@atsushi-ishibashi
Copy link
Contributor

LGTM👍

In my opinion, StateChangeReason may be error format so it seems be better with prefix such like fmt.Errorf("[QUERY FAILED REASON] %s", *status.StateChangeReason) .
But this depends on the convention so I leave it to @radeksimko 🙇

@betabandido
Copy link
Contributor Author

This is the current output when the error occurs:

1 error(s) occurred:

* aws_athena_database.db (destroy): 1 error(s) occurred:

* aws_athena_database.db: FAILED: Execution Error, return code 1 from
    org.apache.hadoop.hive.ql.exec.DDLTask.
    MetaException(message:Unable to drop database:
    InvalidOperationException(message:Database tf_cascade is not empty.))

@Ninir Ninir added the enhancement Requests to existing resources that expand the functionality or scope. label Nov 20, 2017
@betabandido
Copy link
Contributor Author

@Ninir Could you please let me know whether this looks good to be merged or it needs more work? I would really appreciate having this feature included in the next release, as I am using it in a project at my work :)

@radeksimko
Copy link
Member

Hi @betabandido
thanks for raising the PR.

It looks like a reasonable feature to have. To your question:

I can add some tests to check that destroying the database fails when force_destroy is not used, and it succeeds when the option is used. But, I would need some guidance on how to implement them. I imagine I would need to create the tables in a second test step (in the first step the creation of the database would take place) using the PreConfig hook. Is that correct?

I would do it as part of a test check, e.g.

Steps: []resource.TestStep{
			{
				Config: ..., // with `force_destroy = true`
				Check: resource.ComposeTestCheckFunc(
					testAccAthenaDatabaseCreateTables(),

Let me know if you need any further help with those tests.

In my opinion, StateChangeReason may be error format so it seems be better with prefix such like fmt.Errorf("[QUERY FAILED REASON] %s", *status.StateChangeReason) .

@atsushi-ishibashi I agree with you here that some extra context would be certainly helpful. I don't think it should be there as prefix in square brackets though. That format is usually used for levels of log messages, e.g. DEBUG, INFO, WARN etc. We can do something as simple as fmt.Errorf("Reason: %s", *status.StateChangeReason).

@radeksimko radeksimko added the waiting-response Maintainers are waiting on response from community or contributor. label Nov 26, 2017
@betabandido
Copy link
Contributor Author

@radeksimko I added the tests and made some other minor improvements :)

@betabandido
Copy link
Contributor Author

Is there anything left to do before merging this PR?

Copy link
Member

@radeksimko radeksimko left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks.

@radeksimko radeksimko merged commit 90347f6 into hashicorp:master Dec 11, 2017
psyvision added a commit to psyvision/terraform-provider-aws that referenced this pull request Dec 12, 2017
* Add Data Source: aws_elb

* Fix dataSourceAwsElb typo

* Fix dataSourceAwsElb Schema name field to not include Computed

* Remove dataSourceAwsElb schema defaults for computed fields

* Remove dataSourceAwsElb schema defaults for nested computed fields too

* Corrected depends_on entry for EIP

  depends_on                = ["aws_internet_gateway.gw"] is the correct syntax

* Add sweeper for IAM Server Certificates

* test/aws_config_delivery_channel: Add missing dependencies

* d/aws_elb r/aws_elb: hashicorp#2004 review comments

* Remove enable_deletion_protection from testAccDataSourceAWSELBConfigBasic
* Replace unnecessary errwrap.Wrapf with fmt.Errorf
* Reduce flattenAwsELbResource to ec2conn and elbconn instead of meta
* Properly name TestAccDataSourceAWSELB_basic resources
* Use t.Name() for description and TestName tags

* d/aws_elb: Fix documentation sidebar ordering after merging master with new d/aws_elasticache_replication_group

* Makefile: Add sweep target

* Update cognito_user_pool.markdown

* Update CHANGELOG.md

* r/aws_elasticache_security_group: add import support (hashicorp#2277)

* r/aws_elasticache_security_group: add import support

* r/aws_elasticache_security_group: hashicorp#2277 review updates

* Use d.Id() instead of d.Get("name") on read, which allows using schema.ImportStatePassthrough
* d.Set("security_group_names") on read
* Set AWS_DEFAULT_REGION to us-east-1 on import testing

* Update CHANGELOG.md

* documentation: remove antislashes in page titles

* Added missing WARN debug lines when reading a non-existing resource

* Removed <wbr> from documentation titles

* vendor: Bump aws-sdk-go to v.1.12.44

* Add logs for iam server certificate delete conflict (hashicorp#2533)

* Query elb API for load balancer arn causing delete conflict

- For IAM server certificate.

* Use regex for lb name.

* Edits for hashicorp#2533

* r/aws_sqs_queue_policy: Support import by queue URL (hashicorp#2544)

* Update CHANGELOG.md

* r/aws_elasticsearch_domain: Add LogPublishingOption (hashicorp#2285)

* WIP

* Add enabled

* Use cwl policy

* Reflect reviews

* Update CHANGELOG.md

* Add force_destroy field to aws_athena_database (hashicorp#2363)

* Add force_destroy field to aws_athena_database.

Fixes hashicorp#2362.

* Remove unnecessary import.

* Code review feedback

* Update CHANGELOG.md

* Add more example and missing field

* New Resource: aws_media_store_container (hashicorp#2448)

* New Resource: aws_media_store_container

* Reflect reviews

* remove policy

* Update CHANGELOG.md

* Add Redis AUTH, in-transit and at-rest encryption (hashicorp#2090)

* add AUTH, at-rest and in-transit encryption to Elasticache replication groups

* add _enabled to transit/at_rest encyrption parameters

* added one more _enabled

* move validateAwsElastiCacheReplicationGroupAuthToken to aws/validators.go, as well as tests

* set auth_token to nil during Reads

* update Replication Group encryption acceptance tests to use config functions instead of vars

* Fix whitespacing (tabs -> spaces)

* docs/elasticache_replication_group: Add missing fields

* Update CHANGELOG.md

* r/aws_dynamodb_table: Ensure ttl is properly read (hashicorp#2452)

* r/aws_dynamodb_table: Ensure ttl is properly read

* r/aws_dynamodb_table: hashicorp#2452 review updates

* Add timeToLiveOutput.TimeToLiveDescription nil check
* Simplify logic to d.Set ttl

* Update CHANGELOG.md

* Bump aws-sdk-go to v.1.12.45

* New Resource: PublicDnsNamespace (hashicorp#2569)

* WIP

* Add test, docs

* Reflect reviews

* Modify error handling

* Update CHANGELOG.md

* New Resource: ServiceDiscovery PrivateDNS Namespace (hashicorp#2589)

* New Resource: service_discovery_private_dns_namespace

* Reflect reviews

* Update CHANGELOG.md
@ghost
Copy link

ghost commented Apr 10, 2020

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you feel this issue should be reopened, we encourage creating a new issue linking back to this one for added context. Thanks!

@ghost ghost locked and limited conversation to collaborators Apr 10, 2020
@breathingdust breathingdust removed the waiting-response Maintainers are waiting on response from community or contributor. label Sep 17, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement Requests to existing resources that expand the functionality or scope.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

aws_athena_database fails to destroy if it contains tables
5 participants