Skip to content

Commit 82339b0

Browse files
committed
Make keep_unprocessed_records feature configurable
Keep it off by default
1 parent 76a91cc commit 82339b0

File tree

14 files changed

+38
-20
lines changed

14 files changed

+38
-20
lines changed

app/jobs/runtime/app_usage_events_cleanup.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ module VCAP::CloudController
44
module Jobs
55
module Runtime
66
class AppUsageEventsCleanup < VCAP::CloudController::Jobs::CCJob
7-
attr_accessor :cutoff_age_in_days, :threshold_for_keeping_unprocessed_records
7+
attr_accessor :cutoff_age_in_days, :keep_unprocessed_records, :threshold_for_keeping_unprocessed_records
88

9-
def initialize(cutoff_age_in_days, threshold_for_keeping_unprocessed_records)
9+
def initialize(cutoff_age_in_days, keep_unprocessed_records, threshold_for_keeping_unprocessed_records)
1010
@cutoff_age_in_days = cutoff_age_in_days
11+
@keep_unprocessed_records = keep_unprocessed_records
1112
@threshold_for_keeping_unprocessed_records = threshold_for_keeping_unprocessed_records
1213
end
1314

@@ -16,7 +17,7 @@ def perform
1617
logger.info('Cleaning up old AppUsageEvent rows')
1718

1819
repository = Repositories::AppUsageEventRepository.new
19-
repository.delete_events_older_than(cutoff_age_in_days, threshold_for_keeping_unprocessed_records)
20+
repository.delete_events_older_than(cutoff_age_in_days, keep_unprocessed_records, threshold_for_keeping_unprocessed_records)
2021
end
2122

2223
def job_name_in_configuration

app/jobs/v2/services/service_usage_events_cleanup.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ module VCAP::CloudController
44
module Jobs
55
module Services
66
class ServiceUsageEventsCleanup < VCAP::CloudController::Jobs::CCJob
7-
attr_accessor :cutoff_age_in_days, :threshold_for_keeping_unprocessed_records
7+
attr_accessor :cutoff_age_in_days, :keep_unprocessed_records, :threshold_for_keeping_unprocessed_records
88

9-
def initialize(cutoff_age_in_days, threshold_for_keeping_unprocessed_records)
9+
def initialize(cutoff_age_in_days, keep_unprocessed_records, threshold_for_keeping_unprocessed_records)
1010
@cutoff_age_in_days = cutoff_age_in_days
11+
@keep_unprocessed_records = keep_unprocessed_records
1112
@threshold_for_keeping_unprocessed_records = threshold_for_keeping_unprocessed_records
1213
end
1314

@@ -16,7 +17,7 @@ def perform
1617
logger.info('Cleaning up old ServiceUsageEvent rows')
1718

1819
repository = Repositories::ServiceUsageEventRepository.new
19-
repository.delete_events_older_than(cutoff_age_in_days, threshold_for_keeping_unprocessed_records)
20+
repository.delete_events_older_than(cutoff_age_in_days, keep_unprocessed_records, threshold_for_keeping_unprocessed_records)
2021
end
2122

2223
def job_name_in_configuration

app/repositories/app_usage_event_repository.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,10 @@ def purge_and_reseed_started_apps!
151151
AppUsageEvent.insert(column_map.keys, usage_query)
152152
end
153153

154-
def delete_events_older_than(cutoff_age_in_days, threshold_for_keeping_unprocessed_records)
154+
def delete_events_older_than(cutoff_age_in_days, keep_unprocessed_records, threshold_for_keeping_unprocessed_records)
155155
Database::OldRecordCleanup.new(AppUsageEvent, cutoff_age_in_days: cutoff_age_in_days, keep_at_least_one_record: true, keep_running_records: true,
156-
keep_unprocessed_records: true, threshold_for_keeping_unprocessed_records: threshold_for_keeping_unprocessed_records).delete
156+
keep_unprocessed_records: keep_unprocessed_records,
157+
threshold_for_keeping_unprocessed_records: threshold_for_keeping_unprocessed_records).delete
157158
end
158159

159160
private

app/repositories/service_usage_event_repository.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,9 @@ def purge_and_reseed_service_instances!
9191
ServiceUsageEvent.insert(column_map.keys, usage_query)
9292
end
9393

94-
def delete_events_older_than(cutoff_age_in_days, threshold_for_keeping_unprocessed_records)
94+
def delete_events_older_than(cutoff_age_in_days, keep_unprocessed_records, threshold_for_keeping_unprocessed_records)
9595
Database::OldRecordCleanup.new(ServiceUsageEvent, cutoff_age_in_days: cutoff_age_in_days, keep_at_least_one_record: true, keep_running_records: true,
96-
keep_unprocessed_records: true,
96+
keep_unprocessed_records: keep_unprocessed_records,
9797
threshold_for_keeping_unprocessed_records: threshold_for_keeping_unprocessed_records).delete
9898
end
9999
end

config/bosh-lite.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@ jobs:
2121

2222
app_usage_events:
2323
cutoff_age_in_days: 31
24+
keep_unprocessed_records: false
2425
threshold_for_keeping_unprocessed_records: 5000000
2526

2627
service_usage_events:
2728
cutoff_age_in_days: 31
29+
keep_unprocessed_records: false
2830
threshold_for_keeping_unprocessed_records: 5000000
2931

3032
audit_events:

config/cloud_controller.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,12 @@ jobs:
3838

3939
app_usage_events:
4040
cutoff_age_in_days: 31
41+
keep_unprocessed_records: false
4142
threshold_for_keeping_unprocessed_records: 5000000
4243

4344
service_usage_events:
4445
cutoff_age_in_days: 31
46+
keep_unprocessed_records: false
4547
threshold_for_keeping_unprocessed_records: 5000000
4648

4749
audit_events:

lib/cloud_controller/clock/scheduler.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ module VCAP::CloudController
66
class Scheduler
77
CLEANUPS = [
88
{ name: 'app_usage_events', class: Jobs::Runtime::AppUsageEventsCleanup, time: '18:00',
9-
arg_from_config: [%i[app_usage_events cutoff_age_in_days], %i[app_usage_events threshold_for_keeping_unprocessed_records]] },
9+
arg_from_config: [%i[app_usage_events cutoff_age_in_days], %i[app_usage_events keep_unprocessed_records],
10+
%i[app_usage_events threshold_for_keeping_unprocessed_records]] },
1011
{ name: 'audit_events', class: Jobs::Runtime::EventsCleanup, time: '20:00', arg_from_config: %i[audit_events cutoff_age_in_days] },
1112
{ name: 'service_usage_events', class: Jobs::Services::ServiceUsageEventsCleanup, time: '22:00',
12-
arg_from_config: [%i[service_usage_events cutoff_age_in_days], %i[service_usage_events threshold_for_keeping_unprocessed_records]] },
13+
arg_from_config: [%i[service_usage_events cutoff_age_in_days], %i[service_usage_events keep_unprocessed_records],
14+
%i[service_usage_events threshold_for_keeping_unprocessed_records]] },
1315
{ name: 'completed_tasks', class: Jobs::Runtime::PruneCompletedTasks, time: '23:00', arg_from_config: %i[completed_tasks cutoff_age_in_days] },
1416
{ name: 'expired_blob_cleanup', class: Jobs::Runtime::ExpiredBlobCleanup, time: '00:00' },
1517
{ name: 'expired_resource_cleanup', class: Jobs::Runtime::ExpiredResourceCleanup, time: '00:30' },

lib/cloud_controller/config_schemas/clock_schema.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class ClockSchema < VCAP::Config
1616
},
1717
app_usage_events: {
1818
cutoff_age_in_days: Integer,
19+
keep_unprocessed_records: bool,
1920
threshold_for_keeping_unprocessed_records: Integer
2021
},
2122
audit_events: {
@@ -209,6 +210,7 @@ class ClockSchema < VCAP::Config
209210

210211
service_usage_events: {
211212
cutoff_age_in_days: Integer,
213+
keep_unprocessed_records: bool,
212214
threshold_for_keeping_unprocessed_records: Integer
213215
},
214216
default_app_ssh_access: bool,

spec/fixtures/config/port_8181_config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ jobs:
3030

3131
app_usage_events:
3232
cutoff_age_in_days: 31
33+
keep_unprocessed_records: true
3334
threshold_for_keeping_unprocessed_records: 5000000
3435

3536
audit_events:

spec/unit/jobs/runtime/app_usage_events_cleanup_spec.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ module VCAP::CloudController
44
module Jobs::Runtime
55
RSpec.describe AppUsageEventsCleanup, job_context: :worker do
66
let(:cutoff_age_in_days) { 30 }
7+
let(:keep_unprocessed_records) { true }
78
let(:threshold_for_keeping_unprocessed_records) { 5_000_000 }
89
let(:logger) { double(Steno::Logger, info: nil) }
910
let!(:event_before_threshold) { AppUsageEvent.make(created_at: (cutoff_age_in_days + 1).days.ago, state: 'STOPPED') }
1011
let!(:event_after_threshold) { AppUsageEvent.make(created_at: (cutoff_age_in_days - 1).days.ago) }
1112

1213
subject(:job) do
13-
AppUsageEventsCleanup.new(cutoff_age_in_days, threshold_for_keeping_unprocessed_records)
14+
AppUsageEventsCleanup.new(cutoff_age_in_days, keep_unprocessed_records, threshold_for_keeping_unprocessed_records)
1415
end
1516

1617
before do

0 commit comments

Comments
 (0)