Commit c01f80ea authored by Tim Zallmann's avatar Tim Zallmann

Merge branch 'mk/geo-fix-package-file-count' into 'master'

Geo: Fix incorrect Package File progress bar total count

Closes #223095

See merge request gitlab-org/gitlab!35294
parents 341724a0 d93e84cf
......@@ -367,8 +367,9 @@ Example response:
"package_files_count": 10,
"package_files_checksummed_count": 10,
"package_files_checksum_failed_count": 0,
"package_files_synced_count": 10,
"package_files_failed_count": 5
"package_files_registry_count": 10,
"package_files_synced_count": 6,
"package_files_failed_count": 3
},
{
"geo_node_id": 2,
......@@ -440,8 +441,9 @@ Example response:
"package_files_count": 10,
"package_files_checksummed_count": 10,
"package_files_checksum_failed_count": 0,
"package_files_synced_count": 10,
"package_files_failed_count": 5
"package_files_registry_count": 10,
"package_files_synced_count": 6,
"package_files_failed_count": 3
}
]
```
......
......@@ -138,7 +138,7 @@ export default class GeoNodesStore {
failureCount: rawNodeDetails.design_repositories_failed_count || 0,
},
packageFiles: {
totalCount: rawNodeDetails.package_files_count || 0,
totalCount: rawNodeDetails.package_files_registry_count || 0,
successCount: rawNodeDetails.package_files_synced_count || 0,
failureCount: rawNodeDetails.package_files_failed_count || 0,
},
......
......@@ -80,6 +80,7 @@ class GeoNodeStatus < ApplicationRecord
package_files_checksum_failed_count
package_files_synced_count
package_files_failed_count
package_files_registry_count
).freeze
# Be sure to keep this consistent with Prometheus naming conventions
......@@ -156,8 +157,9 @@ class GeoNodeStatus < ApplicationRecord
package_files_count: 'Number of package files on primary',
package_files_checksummed_count: 'Number of package files checksummed on primary',
package_files_checksum_failed_count: 'Number of package files failed to checksum on primary',
package_files_synced_count: 'Number of syncable package files synced on secondary',
package_files_failed_count: 'Number of syncable package files failed to sync on secondary'
package_files_registry_count: 'Number of package files in the registry',
package_files_synced_count: 'Number of package files synced on secondary',
package_files_failed_count: 'Number of package files failed to sync on secondary'
}.freeze
EXPIRATION_IN_MINUTES = 10
......@@ -374,7 +376,7 @@ class GeoNodeStatus < ApplicationRecord
attr_in_percentage :container_repositories_synced, :container_repositories_synced_count, :container_repositories_count
attr_in_percentage :design_repositories_synced, :design_repositories_synced_count, :design_repositories_count
attr_in_percentage :package_files_checksummed, :package_files_checksummed_count, :package_files_count
attr_in_percentage :package_files_synced, :package_files_synced_count, :package_files_count
attr_in_percentage :package_files_synced, :package_files_synced_count, :package_files_registry_count
def storage_shards_match?
return true if geo_node.primary?
......@@ -439,6 +441,7 @@ class GeoNodeStatus < ApplicationRecord
load_attachments_data
load_container_registry_data
load_designs_data
load_package_files_data
end
def load_lfs_objects_data
......@@ -489,6 +492,14 @@ class GeoNodeStatus < ApplicationRecord
self.design_repositories_registry_count = design_registry_finder.count_registry
end
def load_package_files_data
# return unless package_files_replication_enabled # TODO: https://gitlab.com/gitlab-org/gitlab/-/issues/221069
self.package_files_registry_count = Geo::PackageFileReplicator.registry_count
self.package_files_synced_count = Geo::PackageFileReplicator.synced_count
self.package_files_failed_count = Geo::PackageFileReplicator.failed_count
end
def load_repository_check_data
if Gitlab::Geo.primary?
self.repositories_checked_count = Project.where.not(last_repository_check_at: nil).count
......@@ -518,8 +529,6 @@ class GeoNodeStatus < ApplicationRecord
self.wikis_checksum_mismatch_count = registries_for_mismatch_projects(:wiki).count
self.repositories_retrying_verification_count = registries_retrying_verification(:repository).count
self.wikis_retrying_verification_count = registries_retrying_verification(:wiki).count
self.package_files_synced_count = Geo::PackageFileReplicator.synced_count
self.package_files_failed_count = Geo::PackageFileReplicator.failed_count
end
end
......
---
title: 'Geo: Fix incorrect Package File progress bar total count'
merge_request: 35294
author:
type: fixed
......@@ -125,6 +125,10 @@ module Gitlab
model.count
end
def self.registry_count
registry_class.count
end
def self.synced_count
registry_class.synced.count
end
......
......@@ -37,8 +37,9 @@ FactoryBot.define do
wikis_checksum_failed_count { 55 }
package_files_count { 585 }
package_files_checksummed_count { 585 }
package_files_registry_count { 585 }
package_files_failed_count { 3 }
package_files_synced_count { 585 }
package_files_synced_count { 580 }
package_files_checksum_failed_count { 585 }
repositories_verified_count { 501 }
repositories_verification_failed_count { 100 }
......
......@@ -129,6 +129,7 @@
"package_files_count": { "type": ["integer", "null"] },
"package_files_checksummed_count": { "type": ["integer", "null"] },
"package_files_checksum_failed_count": { "type": ["integer", "null"] },
"package_files_registry_count": { "type": ["integer", "null"] },
"package_files_failed_count": { "type": ["integer", "null"] },
"package_files_synced_count": { "type": ["integer", "null"] },
"package_files_synced_in_percentage": { "type": "string" },
......
......@@ -93,7 +93,7 @@ export const rawMockNodeDetails = {
design_repositories_synced_count: 0,
design_repositories_failed_count: 0,
design_repositories_synced_in_percentage: '0.00%',
package_files_count: 25,
package_files_registry_count: 25,
package_files_synced_count: 25,
package_files_failed_count: 0,
package_files_synced_in_percentage: '100.00%',
......
......@@ -1234,6 +1234,10 @@ RSpec.describe GeoNodeStatus, :geo, :geo_fdw do
create(:geo_package_file_registry, :synced)
end
it 'returns the right number of repos in registry' do
expect(subject.package_files_registry_count).to eq(3)
end
it 'returns the right number of failed and synced repos' do
expect(subject.package_files_failed_count).to eq(2)
expect(subject.package_files_synced_count).to eq(1)
......@@ -1246,6 +1250,7 @@ RSpec.describe GeoNodeStatus, :geo, :geo_fdw do
context 'when no package registries available' do
it 'returns 0' do
expect(subject.package_files_registry_count).to eq(0)
expect(subject.package_files_failed_count).to eq(0)
expect(subject.package_files_synced_count).to eq(0)
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment