Skip to content

Commit 5d125af

Browse files
authored
feat: [PPT-2388] add cron task to prune strayed clone folders (#94)
1 parent 6c9bfeb commit 5d125af

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

src/placeos-frontend-loader/loader.cr

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,29 @@ module PlaceOS::FrontendLoader
132132
load_resources(timeout: LOAD_TIMEOUT).tap do
133133
# Pull base PlaceOS WWW folder
134134
create_base_www
135+
# Clean up stale temp folders
136+
cleanup_stale_temp_folders
135137
end
136138
end
137139

140+
# Remove temp folders older than 12 hours
141+
protected def cleanup_stale_temp_folders
142+
www_folder = File.expand_path(content_directory)
143+
cutoff_time = Time.utc - 12.hours
144+
145+
stale_dirs = Dir.children(www_folder)
146+
.select { |child| File.directory?(Path[www_folder, child]) }
147+
.select(&.matches?(/^.+_temp_\d+$/))
148+
.select do |dir|
149+
path = Path[www_folder, dir]
150+
File.info?(path).try { |info| info.modification_time < cutoff_time } || false
151+
end
152+
153+
stale_dirs.each { |dir| Log.info { "removing stale temp folder: #{dir}" } }
154+
stale_dirs.map! { |dir| Path[www_folder, dir].to_s }
155+
FileUtils.rm_rf(stale_dirs) unless stale_dirs.empty?
156+
end
157+
138158
def process_resource(action : Resource::Action, resource : Model::Repository) : Resource::Result
139159
repository = resource
140160

0 commit comments

Comments
 (0)