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

Issue #4111 - Bug: secret_exists column not added to secrets_policy i… #4116

Merged
merged 2 commits into from
Jul 30, 2024

Conversation

MaxMcAdam
Copy link
Contributor

…f table already exists

Pull Request Template

Description

Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.

Fixes # (issue)

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

Additional Context (Please include any Screenshots/gifs if relevant)

...

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules
  • I have checked my code and corrected any misspellings
  • I have tagged the reviewers in a comment below incase my pull request is ready for a review
  • I have signed the commit message to agree to Developer Certificate of Origin (DCO) (to certify that you wrote or otherwise have the right to submit your contribution to the project.) by adding "--signoff" to my git commit command.

}

var migrationSQL = map[int]SchemaUpdate{}
var v2SchemaUpdate = SchemaUpdate{sql: []string{"ALTER TABLE secrets_policy ADD COLUMN \"secret_exists\" BOOLEAN NOT NULL DEFAULT true;", "ALTER TABLE secrets_pattern ADD COLUMN \"secret_exists\" BOOLEAN NOT NULL DEFAULT true;"}, description: "Add a column to the secrets table to indicate if the secret exists or not. This is necessary to support node-specific secrets.", exitOnFailure: false}
Copy link
Contributor

Choose a reason for hiding this comment

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

I am wondering if it would be better to still fail on error but change the SQL to be
ALTER TABLE secrets_policy ADD COLUMN IF NOT EXISTS "secret_exists" BOOLEAN NOT NULL DEFAULT true

@@ -138,8 +138,10 @@ func (db *AgbotPostgresqlDB) Initialize(cfg *config.HorizonConfig) error {

// Run each SQL statement in the array of SQL statements for the current version.
for si := 0; si < len(migrationSQL[v].sql); si++ {
if _, err := db.db.Exec(migrationSQL[v].sql[si]); err != nil {
if _, err := db.db.Exec(migrationSQL[v].sql[si]); err != nil && migrationSQL[v].exitOnFailure {
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think this logic is correct.. I think it needs to be

                                // Run each SQL statement in the array of SQL statements for the current version.
                                for si := 0; si < len(migrationSQL[v].sql); si++ {
                                        if _, err := db.db.Exec(migrationSQL[v].sql[si]); err != nil && migrationSQL[v].exitOnFailure {
                                                return errors.New(fmt.Sprintf("unable to run SQL migration statement version %v, index %v, statement %v, error: %v", v, si, migrationSQL[v].sql[si], err))
                                        } else if err != nil {
                                                fmt.Printf("unable to run SQL migration statement version %v, index %v, statement %v, error: %v", v, si, migrationSQL[v].sql[si], err)
                                        }
                                }
                                if _, err := db.db.Exec(VERSION_UPDATE, HIGHEST_DATABASE_VERSION, migrationSQL[v].description); err != nil {
                                        return errors.New(fmt.Sprintf("unable to create version table, error: %v", err))
                                } else {
                                        glog.V(3).Infof("Postgresql database tables upgraded to version %v, %v", v, migrationSQL[v].description)
                                }

You don't want the version to be updated unless all the sql's were execute... Also, in my test, the version never actually got updated.

return errors.New(fmt.Sprintf("unable to run SQL migration statement version %v, index %v, statement %v, error: %v", v, si, migrationSQL[v].sql[si], err))
} else if err != nil {
fmt.Printf("unable to run SQL migration statement version %v, index %v, statement %v, error: %v", v, si, migrationSQL[v].sql[si], err)
Copy link
Contributor

Choose a reason for hiding this comment

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

This should be a log message

@MaxMcAdam MaxMcAdam force-pushed the anax-4111 branch 2 times, most recently from db20d7f to cf00a6c Compare July 30, 2024 15:34
…ets_policy if table already exists

Signed-off-by: Max McAdam <[email protected]>
@MaxMcAdam MaxMcAdam merged commit 760633f into open-horizon:master Jul 30, 2024
1 of 3 checks passed
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.

2 participants