From 33b50bc5b235af515921eecdbefef31e67b453bc Mon Sep 17 00:00:00 2001 From: Aliaksei Andreyeu Date: Wed, 13 Jul 2022 14:22:43 -0700 Subject: [PATCH] Proper cleanup of a single trace file folder Reviewed By: simpleton Differential Revision: D37825765 fbshipit-source-id: a1fe26289b1d159918842d414e36f4b8010f7b5b --- .../profilo/core/TraceOrchestrator.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/java/main/com/facebook/profilo/core/TraceOrchestrator.java b/java/main/com/facebook/profilo/core/TraceOrchestrator.java index 6cf41b61..ba3217cf 100644 --- a/java/main/com/facebook/profilo/core/TraceOrchestrator.java +++ b/java/main/com/facebook/profilo/core/TraceOrchestrator.java @@ -493,9 +493,9 @@ public void onTraceWriteEnd(TraceContext trace) { } private void handleZipAndUpload(TraceContext trace) { - File uploadFile; + File uploadFile = null; if (ZipHelper.shouldZipDirectory(trace.folder)) { - uploadFile = + File traceFile = ZipHelper.getCompressedFile(trace.folder, ZipHelper.ZIP_SUFFIX + ZipHelper.TMP_SUFFIX); // Add a timestamp to the file so that the FileManager's trimming rules @@ -503,19 +503,24 @@ private void handleZipAndUpload(TraceContext trace) { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH-mm-ss", Locale.US); String timestamp = dateFormat.format(new Date()); File fileWithTimestamp = - new File(uploadFile.getParentFile(), timestamp + "-" + uploadFile.getName()); - if (uploadFile.renameTo(fileWithTimestamp)) { + new File(traceFile.getParentFile(), timestamp + "-" + traceFile.getName()); + if (traceFile.renameTo(fileWithTimestamp)) { uploadFile = fileWithTimestamp; } - deleteDirectory(trace.folder); } else { File[] fileList = trace.folder.listFiles(); if (fileList == null || fileList.length == 0) { return; } - uploadFile = fileList[0]; + File traceFile = fileList[0]; + // Move the trace file up to the base folder + File targetTraceFile = new File(trace.folder.getParentFile(), traceFile.getName()); + if (traceFile.renameTo(targetTraceFile)) { + uploadFile = targetTraceFile; + } } if (uploadFile == null) { + // Unable to prepare trace file for processing return; }