Skip to content

Commit

Permalink
[api] don't crash if a linked_to package is no longer there
Browse files Browse the repository at this point in the history
  • Loading branch information
coolo committed Oct 1, 2013
1 parent 3d8a41d commit 4d43e59
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 47 deletions.
5 changes: 3 additions & 2 deletions src/api/app/jobs/check_package_event.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ def update_pkg(pkg)
pkg.update_backendinfo
self.checked_pkgs[pkg.id] = 1
BackendPackage.where(links_to_id: pkg.id).each do |p|
update_pkg(Package.find(p.package_id))
p = Package.find_by_id p.package_id
update_pkg(p) if p
end
end

Expand All @@ -24,4 +25,4 @@ def perform
# dig into recursion
update_pkg(pkg)
end
end
end
9 changes: 7 additions & 2 deletions src/api/app/models/package.rb
Original file line number Diff line number Diff line change
Expand Up @@ -379,8 +379,13 @@ def update_issue_list
Project.transaction do
self.package_issues.delete_all
xml.elements('issue') { |i|
issue = Issue.find_or_create_by_name_and_tracker(i['id'], i['tracker'])
self.package_issues.create(issue: issue, change: 'kept')
begin
issue = Issue.find_or_create_by_name_and_tracker(i['id'], i['tracker'])
self.package_issues.create(issue: issue, change: 'kept')
rescue IssueTracker::NotFoundError => e
# if the issue is invalid, we ignore it
Rails.logger.debug e
end
}
end
else
Expand Down
4 changes: 2 additions & 2 deletions src/api/config/clock.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
Event::NotifyBackends.trigger_delayed_sent
end

every(17.seconds, 'fetch notificatoins', thread: true) do
every(17.seconds, 'fetch notifications', thread: true) do
ActiveRecord::Base.connection_pool.with_connection do |sql|
# this will return if there is already a thread running
UpdateNotificationEvents.new.perform
Expand All @@ -64,4 +64,4 @@
every(1.day, 'refresh dirties') do
# inject a delayed job for every dirty project
BackendPackage.refresh_dirty
end
end
84 changes: 43 additions & 41 deletions src/api/script/check_database
Original file line number Diff line number Diff line change
Expand Up @@ -60,67 +60,69 @@ if old_mode
arch_rep_tbl="architectures_repositories"
end

check_foreign_key("db_project_id", packages_tbl, projects_tbl, 1);
check_foreign_key("develproject_id", packages_tbl, projects_tbl, 0) if old_mode;
check_foreign_key("develpackage_id", packages_tbl, packages_tbl, 0);
check_foreign_key("db_project_id", packages_tbl, projects_tbl, 1)
check_foreign_key("develproject_id", packages_tbl, projects_tbl, 0) if old_mode
check_foreign_key("develpackage_id", packages_tbl, packages_tbl, 0)
check_foreign_key("repository_id", arch_rep_tbl, "repositories", 1)
check_foreign_key("architecture_id", arch_rep_tbl, "architectures", 1)

check_foreign_key("bs_user_id", "watched_projects", "users", 1);
check_foreign_key("bs_user_id", "watched_projects", "users", 1)

check_foreign_key("db_project_id", "db_projects_tags", projects_tbl, 1);
check_foreign_key("tag_id", "db_projects_tags", "tags", 1);
check_foreign_key("db_project_id", "db_projects_tags", projects_tbl, 1)
check_foreign_key("tag_id", "db_projects_tags", "tags", 1)

check_foreign_key("attrib_type_id", "attribs", "attrib_types", 1);
check_foreign_key("db_package_id", "attribs", packages_tbl, 1);
check_foreign_key("db_project_id", "attribs", projects_tbl, 1);
check_foreign_key("attrib_type_id", "attribs", "attrib_types", 1)
check_foreign_key("db_package_id", "attribs", packages_tbl, 1)
check_foreign_key("db_project_id", "attribs", projects_tbl, 1)

check_foreign_key("db_project_id", "flags", projects_tbl, 1);
check_foreign_key("db_package_id", "flags", packages_tbl, 1);
check_foreign_key("architecture_id", "flags", "architectures", 1);
check_foreign_key("db_project_id", "flags", projects_tbl, 1)
check_foreign_key("db_package_id", "flags", packages_tbl, 1)
check_foreign_key("architecture_id", "flags", "architectures", 1)

check_foreign_key("attrib_id", "attrib_values", "attribs", 1);
check_foreign_key("attrib_id", "attrib_values", "attribs", 1)

check_foreign_key("attrib_namespace_id", "attrib_types", "attrib_namespaces", 1);
check_foreign_key("attrib_namespace_id", "attrib_types", "attrib_namespaces", 1)

check_foreign_key("group_id", "groups_roles", "groups", 1);
check_foreign_key("role_id", "groups_roles", "roles", 1);
check_foreign_key("group_id", "groups_roles", "groups", 1)
check_foreign_key("role_id", "groups_roles", "roles", 1)

check_foreign_key("group_id", "groups_users", "groups", 1);
check_foreign_key("user_id", "groups_users", "users", 1);
check_foreign_key("group_id", "groups_users", "groups", 1)
check_foreign_key("user_id", "groups_users", "users", 1)

check_foreign_key("db_package_id", "relationships", packages_tbl, 1);
check_foreign_key("bs_user_id", "relationships", "users", 1);
check_foreign_key("role_id", "relationships", "roles", 1);
check_foreign_key("db_project_id", "relationships", projects_tbl, 1);
check_foreign_key("db_package_id", "relationships", packages_tbl, 1)
check_foreign_key("bs_user_id", "relationships", "users", 1)
check_foreign_key("role_id", "relationships", "roles", 1)
check_foreign_key("db_project_id", "relationships", projects_tbl, 1)

check_foreign_key("parent_id", "path_elements", "repositories", 1);
check_foreign_key("repository_id", "path_elements", "repositories", 1);
check_foreign_key("parent_id", "path_elements", "repositories", 1)
check_foreign_key("repository_id", "path_elements", "repositories", 1)

check_foreign_key("repository_id", "release_targets", "repositories", 1);
check_foreign_key("target_repository_id", "release_targets", "repositories", 1);
check_foreign_key("repository_id", "release_targets", "repositories", 1)
check_foreign_key("target_repository_id", "release_targets", "repositories", 1)

check_foreign_key("user_id", "ratings", "users", 1);
check_foreign_key("user_id", "ratings", "users", 1)

check_foreign_key("db_project_id", "repositories", projects_tbl, 1);
check_foreign_key("db_project_id", "repositories", projects_tbl, 1)

check_foreign_key("parent_id", "roles", "roles", 1);
check_foreign_key("parent_id", "roles", "roles", 1)

check_foreign_key("role_id", "roles_static_permissions", "roles", 1);
check_foreign_key("static_permission_id", "roles_static_permissions", "static_permissions", 1);
check_foreign_key("role_id", "roles_static_permissions", "roles", 1)
check_foreign_key("static_permission_id", "roles_static_permissions", "static_permissions", 1)

check_foreign_key("user_id", "roles_users", "users", 1);
check_foreign_key("role_id", "roles_users", "roles", 1);
check_foreign_key("user_id", "roles_users", "users", 1)
check_foreign_key("role_id", "roles_users", "roles", 1)

check_foreign_key("tag_id", "taggings", "tags", 1);
check_foreign_key("user_id", "taggings", "users", 1);
check_foreign_key("tag_id", "taggings", "tags", 1)
check_foreign_key("user_id", "taggings", "users", 1)

check_foreign_key("user_id", "user_registrations", "users", 1);
check_foreign_key("user_id", "user_registrations", "users", 1)

check_foreign_key("attrib_type_id", "attrib_allowed_values", "attrib_types", 1);
check_foreign_key("attrib_type_id", "attrib_default_values", "attrib_types", 1);
check_foreign_key("attrib_type_id", "attrib_allowed_values", "attrib_types", 1)
check_foreign_key("attrib_type_id", "attrib_default_values", "attrib_types", 1)

check_foreign_key("attrib_namespace_id", "attrib_namespace_modifiable_bies", "attrib_namespaces", 1);
check_foreign_key("bs_user_id", "attrib_namespace_modifiable_bies", "users", 1);
check_foreign_key("bs_group_id", "attrib_namespace_modifiable_bies", "groups", 1);
check_foreign_key("attrib_namespace_id", "attrib_namespace_modifiable_bies", "attrib_namespaces", 1)
check_foreign_key("bs_user_id", "attrib_namespace_modifiable_bies", "users", 1)
check_foreign_key("bs_group_id", "attrib_namespace_modifiable_bies", "groups", 1)

check_foreign_key("package_id", "backend_packages", "packages", 1)
check_foreign_key("links_to_id", "backend_packages", "packages", 1)

0 comments on commit 4d43e59

Please sign in to comment.