Skip to content

Commit

Permalink
Prevent ForeignKeyConstraintViolation during migration
Browse files Browse the repository at this point in the history
- Reproduced reported issue by enhancing the unit test.
- Fixed ForeignKeyConstraintViolation by re-ordering migration
  statements.

Fixes issue #3803.
  • Loading branch information
philippthun authored and sethboyles committed May 24, 2024
1 parent 0998bf8 commit 01473c7
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
ForeignKey.new(:build_labels, :fk_build_labels_resource_guid, :resource_guid, :builds, :guid),
ForeignKey.new(:build_annotations, :fk_build_annotations_resource_guid, :resource_guid, :builds, :guid),
ForeignKey.new(:kpack_lifecycle_data, :fk_kpack_lifecycle_build_guid, :build_guid, :builds, :guid),
ForeignKey.new(:buildpack_lifecycle_data, :fk_buildpack_lifecycle_build_guid, :build_guid, :builds, :guid, new_constraint: true),
ForeignKey.new(:buildpack_lifecycle_buildpacks, :fk_blbuildpack_bldata_guid, :buildpack_lifecycle_data_guid, :buildpack_lifecycle_data, :guid),
ForeignKey.new(:buildpack_lifecycle_data, :fk_buildpack_lifecycle_build_guid, :build_guid, :builds, :guid, new_constraint: true),
ForeignKey.new(:task_labels, :fk_task_labels_resource_guid, :resource_guid, :tasks, :guid),
ForeignKey.new(:task_annotations, :fk_task_annotations_resource_guid, :resource_guid, :tasks, :guid),
ForeignKey.new(:revision_labels, :fk_revision_labels_resource_guid, :resource_guid, :revisions, :guid),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,16 @@
it 'deleted orphaned buildpack_lifecycle_data entries but kept valid ones' do
db[:builds].insert(guid: 'build_guid')
db[:buildpack_lifecycle_data].insert(guid: 'bld_guid', build_guid: 'build_guid')
db[:buildpack_lifecycle_buildpacks].insert(guid: 'blb_guid', buildpack_lifecycle_data_guid: 'bld_guid')
db[:buildpack_lifecycle_data].insert(guid: 'another_bld_guid', build_guid: 'not_exists')
db[:buildpack_lifecycle_buildpacks].insert(guid: 'another_blb_guid', buildpack_lifecycle_data_guid: 'another_bld_guid')

Sequel::Migrator.run(db, migrations_path, target: current_migration_index, allow_missing_migration_files: true)

expect(db[:buildpack_lifecycle_data].where(guid: 'bld_guid').count).to eq(1)
expect(db[:buildpack_lifecycle_buildpacks].where(guid: 'blb_guid').count).to eq(1)
expect(db[:buildpack_lifecycle_data].where(guid: 'another_bld_guid').count).to eq(0)
expect(db[:buildpack_lifecycle_buildpacks].where(guid: 'another_blb_guid').count).to eq(0)
end
end
end
Expand Down

0 comments on commit 01473c7

Please sign in to comment.