-
- Downloads
Includes logic to persist namespace statistics
- Add two new ActiveRecord models: - RootNamespaceStoragestatistics will persist root namespace statistics - NamespaceAggregationSchedule will save information when a new update to the namespace statistics needs to be scheduled - Inject into UpdateProjectStatistics concern a new callback that will call an async job to insert a new row onto NamespaceAggregationSchedule table - When a new row is inserted a new job is scheduled. This job will update call an specific service to update the statistics and after that it will delete thee aggregated scheduled row - The RefresherServices makes heavy use of arel to build composable queries to update Namespace::RootStorageStatistics attributes. - Add an extra worker to traverse pending rows on NAmespace::AggregationSchedule table and schedule a worker for each one of this rows. - Add an extra worker to traverse pending rows on NAmespace::AggregationSchedule table and schedule a worker for each one of this rows
Showing
- app/models/concerns/update_project_statistics.rb 17 additions, 2 deletionsapp/models/concerns/update_project_statistics.rb
- app/models/namespace.rb 4 additions, 0 deletionsapp/models/namespace.rb
- app/models/namespace/aggregation_schedule.rb 40 additions, 0 deletionsapp/models/namespace/aggregation_schedule.rb
- app/models/namespace/root_storage_statistics.rb 28 additions, 0 deletionsapp/models/namespace/root_storage_statistics.rb
- app/services/namespaces/statistics_refresher_service.rb 22 additions, 0 deletionsapp/services/namespaces/statistics_refresher_service.rb
- app/workers/all_queues.yml 4 additions, 0 deletionsapp/workers/all_queues.yml
- app/workers/namespaces/prune_aggregation_schedules_worker.rb 22 additions, 0 deletionsapp/workers/namespaces/prune_aggregation_schedules_worker.rb
- app/workers/namespaces/root_statistics_worker.rb 31 additions, 0 deletionsapp/workers/namespaces/root_statistics_worker.rb
- app/workers/namespaces/schedule_aggregation_worker.rb 45 additions, 0 deletionsapp/workers/namespaces/schedule_aggregation_worker.rb
- config/initializers/1_settings.rb 3 additions, 0 deletionsconfig/initializers/1_settings.rb
- config/sidekiq_queues.yml 1 addition, 0 deletionsconfig/sidekiq_queues.yml
- spec/factories/project_statistics.rb 15 additions, 0 deletionsspec/factories/project_statistics.rb
- spec/models/namespace/aggregation_schedule_spec.rb 72 additions, 1 deletionspec/models/namespace/aggregation_schedule_spec.rb
- spec/models/namespace/root_storage_statistics_spec.rb 65 additions, 0 deletionsspec/models/namespace/root_storage_statistics_spec.rb
- spec/models/namespace_spec.rb 16 additions, 0 deletionsspec/models/namespace_spec.rb
- spec/services/namespaces/statistics_refresher_service_spec.rb 58 additions, 0 deletions.../services/namespaces/statistics_refresher_service_spec.rb
- spec/support/shared_examples/models/update_project_statistics_shared_examples.rb 87 additions, 3 deletions...mples/models/update_project_statistics_shared_examples.rb
- spec/workers/namespaces/prune_aggregation_schedules_worker_spec.rb 35 additions, 0 deletions...ers/namespaces/prune_aggregation_schedules_worker_spec.rb
- spec/workers/namespaces/root_statistics_worker_spec.rb 88 additions, 0 deletionsspec/workers/namespaces/root_statistics_worker_spec.rb
- spec/workers/namespaces/schedule_aggregation_worker_spec.rb 66 additions, 0 deletionsspec/workers/namespaces/schedule_aggregation_worker_spec.rb
Please register or sign in to comment