# crunchstat logs from the logs table.
clean_container_log_rows_after: <%= 30.days %>
- # Time to keep audit logs (a row in the log table added each time an
- # Arvados object is created, modified, or deleted) in the PostgreSQL
- # database. Currently, websocket event notifications rely on audit
- # logs, so this should not be set lower than 600 (5 minutes).
+ # Time to keep audit logs, in seconds. (An audit log is a row added
+ # to the "logs" table in the PostgreSQL database each time an
+ # Arvados object is created, modified, or deleted.)
+ #
+ # Currently, websocket event notifications rely on audit logs, so
+ # this should not be set lower than 600 (5 minutes).
max_audit_log_age: 1209600
# Maximum number of log rows to delete in a single SQL transaction.
websocket_address: <% if ENV['ARVADOS_TEST_EXPERIMENTAL_WS'] %>"wss://0.0.0.0:<%= ENV['ARVADOS_TEST_WSS_PORT'] %>/websocket"<% else %>false<% end %>
trash_sweep_interval: -1
docker_image_formats: ["v1"]
- max_audit_log_delete_batch: 0
Log.unscoped.where('event_type in (?)', %w(create update destroy delete))
end
+ # Default settings should not delete anything -- some sites rely on
+ # the original "keep everything forever" behavior.
test 'retain old audit logs with default settings' do
assert_no_logs_deleted do
AuditLogs.delete_old(
end
end
- test 'retain old audit logs with batch=0' do
+ # Batch size 0 should retain all logs -- even if max_age is very
+ # short, and even if the default settings (and associated test) have
+ # changed.
+ test 'retain old audit logs with max_audit_log_delete_batch=0' do
assert_no_logs_deleted do
AuditLogs.delete_old(max_age: 1, max_batch: 0)
end
end
+ # We recommend a more conservative age of 5 minutes for production,
+ # but 3 minutes suits our test data better (and is test-worthy in
+ # that it's expected to work correctly in production).
test 'delete old audit logs with production settings' do
initial_log_count = Log.unscoped.all.count
AuditLogs.delete_old(max_age: 180, max_batch: 100000)
assert_operator remaining_audit_logs.count, :<, initial_log_count
end
- test 'delete old audit logs in multiple batches' do
- AuditLogs.delete_old(max_age: 0, max_batch: 2)
+ test 'delete all audit logs in multiple batches' do
+ AuditLogs.delete_old(max_age: 0.00001, max_batch: 2)
assert_equal [], remaining_audit_logs.collect(&:uuid)
end