class
Task::CollectGarbage
- Task::CollectGarbage
- Task
- Reference
- Object
Overview
Garbage collection task for ActivityPub objects.
Garbage collection identifies and removes objects that are not connected to the user through preservation rules, described below.
How It Works
-
Identification: Identifies objects that should be preserved based on preservation rules, described below.
-
Deletion: Deletes objects and all associated records (tags, activities, relationships, translations).
-
Optimization: Runs SQLite VACUUM and OPTIMIZE to reclaim freed space.
Preservation Rules
Objects are preserved if they meet any of the following criteria:
-
Objects attributed to local users or to remote actors that local users follow
-
Objects associated with activities created by local users or by remote actors that local users follow
-
Objects with hashtags, mentions, or that are part of threads that local users follow
-
Objects in relationships with local users (timelines,
-
notifications, the outbox)
-
Objects in a thread (unless every object in the thread can be
-
deleted)
-
Recent objects
Of Note
-
Deleting an object will remove many associated records (activities, relationships, tags, translations), but never other objects.
-
Either entire threads are preserved or they are eligible for deletion.
Included Modules
Defined in:
models/task/collect_garbage.crConstant Summary
-
DEFAULT_MAX_AGE_DAYS =
365
-
DEFAULT_MAX_DELETE_COUNT =
1000
-
Log =
::Log.for(self)
Constructors
Class Method Summary
- .followed_hashtags
- .followed_mentions
- .followed_or_following_actors
- .followed_threads
- .get_max_age_days : Int32
- .get_max_age_days=(get_max_age_days : Int32)
- .get_max_delete_count : Int32
- .get_max_delete_count=(get_max_delete_count : Int32)
- .instance=(instance : self)
- .objects_associated_with_followed_actor_activities
- .objects_associated_with_followed_content
- .objects_associated_with_user_activities
- .objects_attributed_to_followed_actors
- .objects_attributed_to_user
- .objects_in_threads
- .objects_in_user_relationships
- .objects_to_preserve
- .objects_too_recent_to_delete
- .schedule_unless_exists
Instance Method Summary
-
#delete_object_and_associations(object_iri : String)
Deletes an object and associated records.
-
#perform(max_age_days = self.class.get_max_age_days, max_delete_count = self.class.get_max_delete_count)
Performs garbage collection when scheduled.
-
#perform_on_demand(max_age_days = self.class.get_max_age_days, max_delete_count = Int32::MAX)
Performs garbage collection on-demand.
Instance methods inherited from class Task
backtrace : Array(String) | Nil
backtrace,
backtrace=(backtrace : Array(String) | Nil)
backtrace=,
complete : Bool
complete,
complete=(complete : Bool)
complete=,
gone?
gone?,
last_attempt_at : Time | Nil
last_attempt_at,
last_attempt_at=(last_attempt_at : Time | Nil)
last_attempt_at=,
next_attempt_at : Time | Nil
next_attempt_at,
next_attempt_at=(next_attempt_at : Time | Nil)
next_attempt_at=,
past_due?(now = Time.utc)
past_due?,
perform
perform,
runnable?
runnable?,
running : Bool
running,
running=(running : Bool)
running=,
schedule(next_attempt_at : Time | Nil = nil)
schedule,
source_iri : String
source_iri,
source_iri=(source_iri : String)
source_iri=,
subject_iri : String
subject_iri,
subject_iri=(subject_iri : String)
subject_iri=
Class methods inherited from class Task
clean_up_running_tasks
clean_up_running_tasks,
destroy_old_tasks
destroy_old_tasks,
priority
priority,
priority=(priority : Int32)
priority=,
scheduled(now = Time.utc, reserve = false)
scheduled
Instance methods inherited from module Ktistec::Model::Polymorphic
as_a(as _as : T.class) : T forall T
as_a,
type : String
type,
type=(type : String)
type=
Macros inherited from module Ktistec::Model::Polymorphic
find(_id id, *, as _as)find(*, as _as, **options) find
Instance methods inherited from module Ktistec::Model::Common
created_at : Time
created_at,
created_at=(created_at : Time)
created_at=,
updated_at : Time
updated_at,
updated_at=(updated_at : Time)
updated_at=
Instance methods inherited from module Ktistec::Model
==(other : self)==(other) ==, _run_validations _run_validations, _save_model(skip_validation = false) _save_model, _serialize_graph(nodes, association = nil, index = nil, skip_associated = false) _serialize_graph, assign(properties : Hash(String, Any), *, _strict : Bool = false) forall Any
assign(*, _strict : Bool = false, **properties) assign, changed!(*properties : Symbol) changed!, changed?
changed?(*properties : Symbol) changed?, clear!
clear!(*properties : Symbol) clear!, destroy destroy, destroyed? destroyed?, errors errors, hash(hasher) hash, id : Int64 | Nil id, id=(id : Int64 | Nil) id=, inspect(io : IO) inspect, new_record? new_record?, reload! reload!, save(skip_validation = false, skip_associated = false) save, serialize_graph(skip_associated = false) serialize_graph, table_name table_name, to_h to_h, to_json(json : JSON::Builder) to_json, to_s(io : IO) to_s, update_property(property, value) update_property, valid?(skip_associated = false) valid?, validate(skip_associated = false) validate
Constructor methods inherited from module Ktistec::Model
new(properties : Hash(String, Any), *, _strict : Bool = false) forall Anynew(*, _strict : Bool = false, **properties) new
Macros inherited from module Ktistec::Model
belongs_to(name, primary_key = id, foreign_key = nil, class_name = nil, inverse_of = nil)
belongs_to,
derived(decl, *, aliased_to)
derived,
has_many(name, primary_key = id, foreign_key = nil, class_name = nil, inverse_of = nil)
has_many,
has_one(name, primary_key = id, foreign_key = nil, class_name = nil, inverse_of = nil)
has_one,
validates(property, &block)
validates
Constructor Detail
Class Method Detail
Instance Method Detail
Deletes an object and associated records.
This method deletes the object and all records (except other
objects via the in_reply_to
association) that reference that
object.
Returns the number of objects deleted.
Parameters
object_iri
- The IRI of the object to delete
Performs garbage collection when scheduled.
Performs garbage collection on-demand.