Skip to content

Commit 3e0d896

Browse files
committed
Fix upload thread order
1 parent ba3731f commit 3e0d896

File tree

4 files changed

+38
-17
lines changed

4 files changed

+38
-17
lines changed

DriveBackup/src/main/java/ratismal/drivebackup/UploadThread.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import java.nio.file.FileSystems;
4141
import java.nio.file.Path;
4242
import java.nio.file.Paths;
43+
import java.time.Duration;
4344
import java.time.LocalDateTime;
4445
import java.time.ZonedDateTime;
4546
import java.time.format.DateTimeFormatter;
@@ -66,6 +67,7 @@ public class UploadThread implements Runnable {
6667
private CommandSender initiator;
6768
private final UploadLogger logger;
6869
private final FileUtil fileUtil;
70+
private Timer totalTimer;
6971

7072
/**
7173
* The current status of the backup thread
@@ -80,7 +82,9 @@ enum BackupStatus {
8082
* The backup thread is compressing the files to be backed up.
8183
*/
8284
COMPRESSING,
83-
85+
86+
STARTING,
87+
PRUNING,
8488
/**
8589
* The backup thread is uploading the files
8690
*/
@@ -147,6 +151,7 @@ public void log(String input, String... placeholders) {
147151
}
148152
};
149153
fileUtil = new FileUtil(logger);
154+
totalTimer = new Timer();
150155
}
151156

152157
/**
@@ -181,16 +186,18 @@ public void initiatorError(String input, String... placeholders) {
181186
*/
182187
@Override
183188
public void run() {
184-
if (!locationsToBePruned.isEmpty()) {
185-
locationsToBePruned.clear();
186-
}
187189
Config config = ConfigParser.getConfig();
188190
if (initiator != null && backupStatus != BackupStatus.NOT_RUNNING) {
189191
logger.initiatorError(
190192
intl("backup-already-running"),
191193
"backup-status", getBackupStatus());
192194
return;
193195
}
196+
totalTimer.start();
197+
backupStatus = BackupStatus.STARTING;
198+
if (!locationsToBePruned.isEmpty()) {
199+
locationsToBePruned.clear();
200+
}
194201
if (initiator == null) {
195202
updateNextIntervalBackupTime();
196203
}
@@ -203,7 +210,7 @@ public void run() {
203210
}
204211
boolean errorOccurred = false;
205212
List<ExternalBackupSource> externalBackupList = Arrays.asList(config.externalBackups.sources);
206-
backupList = new ArrayList<BackupListEntry>(Arrays.asList(config.backupList.list));
213+
backupList = new ArrayList<>(Arrays.asList(config.backupList.list));
207214
if (externalBackupList.isEmpty() && backupList.isEmpty()) {
208215
logger.log(intl("backup-empty-list"));
209216
return;
@@ -262,7 +269,6 @@ public void run() {
262269
uploadBackupFiles(uploaders);
263270
FileUtil.deleteFolder(new File("external-backups"));
264271
logger.log(intl("backup-upload-complete"));
265-
backupStatus = BackupStatus.NOT_RUNNING;
266272
logger.log(intl("upload-error-check"));
267273
for (Uploader uploader : uploaders) {
268274
uploader.close();
@@ -288,7 +294,13 @@ public void run() {
288294
PlayerListener.setAutoBackupsActive(false);
289295
}
290296
lastBackupSuccessful = !errorOccurred;
297+
backupStatus = BackupStatus.PRUNING;
291298
pruneLocalBackups();
299+
totalTimer.end();
300+
long totalBackupTime = totalTimer.getTime();
301+
long totalSeconds = Duration.of(totalBackupTime, ChronoUnit.MILLIS).getSeconds();
302+
logger.log(intl("backup-total-time"), "<time>", String.valueOf(totalSeconds));
303+
backupStatus = BackupStatus.NOT_RUNNING;
292304
if (errorOccurred) {
293305
DriveBackupApi.backupError();
294306
} else {
@@ -545,6 +557,12 @@ public static String getBackupStatus() {
545557
case UPLOADING:
546558
message = intl("backup-status-uploading");
547559
break;
560+
case STARTING:
561+
message = intl("backup-status-starting");
562+
break;
563+
case PRUNING:
564+
message = intl("backup-status-pruning");
565+
break;
548566
default:
549567
return intl("backup-status-not-running");
550568
}

DriveBackup/src/main/java/ratismal/drivebackup/util/FileUtil.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -136,30 +136,32 @@ public void pruneLocalBackups(String location, LocalDateTimeFormatter formatter)
136136
}
137137
logger.log(intl("local-backup-pruning-start"), "location", location);
138138
int localKeepCount = ConfigParser.getConfig().backupStorage.localKeepCount;
139-
if (localKeepCount != -1) {
139+
if (localKeepCount == -1) {
140+
logger.info(intl("local-backup-no-limit"));
141+
} else {
140142
try {
141143
TreeMap<Long, File> backupList = getLocalBackups(location, formatter);
142144
String size = String.valueOf(backupList.size());
143145
String keepCount = String.valueOf(localKeepCount);
144146
if (backupList.size() > localKeepCount) {
145147
logger.info(intl("local-backup-limit-reached"),
146-
"backup-count", size,
147-
"backup-limit", keepCount);
148+
"backup-count", size,
149+
"backup-limit", keepCount);
148150
} else {
149151
logger.info(intl("local-backup-limit-not-reached"),
150-
"backup-count", size,
151-
"backup-limit", keepCount);
152+
"backup-count", size,
153+
"backup-limit", keepCount);
152154
return;
153155
}
154156
while (backupList.size() > localKeepCount) {
155157
File fileToDelete = backupList.descendingMap().lastEntry().getValue();
156158
long dateOfFile = backupList.descendingMap().lastKey();
157159
if (!fileToDelete.delete()) {
158160
logger.log(intl("local-backup-file-failed-to-delete"),
159-
"local-backup-name", fileToDelete.getName());
161+
"local-backup-name", fileToDelete.getName());
160162
} else {
161163
logger.info(intl("local-backup-file-deleted"),
162-
"local-backup-name", fileToDelete.getName());
164+
"local-backup-name", fileToDelete.getName());
163165
}
164166
backupList.remove(dateOfFile);
165167
}
@@ -168,8 +170,6 @@ public void pruneLocalBackups(String location, LocalDateTimeFormatter formatter)
168170
logger.log(intl("local-backup-failed-to-delete"));
169171
MessageUtil.sendConsoleException(e);
170172
}
171-
} else {
172-
logger.info(intl("local-backup-no-limit"));
173173
}
174174
}
175175

DriveBackup/src/main/java/ratismal/drivebackup/util/Timer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import java.io.File;
66
import java.text.DecimalFormat;
77
import java.text.DecimalFormatSymbols;
8-
import java.util.Locale;
98
import java.util.Date;
9+
import java.util.Locale;
1010

1111
import static ratismal.drivebackup.config.Localization.intl;
1212

@@ -64,7 +64,7 @@ public String getUploadTimeMessage(@NotNull File file) {
6464
* Calculates the time
6565
* @return Calculated time
6666
*/
67-
public double getTime() {
67+
public long getTime() {
6868
return end.getTime() - start.getTime();
6969
}
7070

DriveBackup/src/main/resources/intl.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,10 @@ backup-schedule-time-invalid: "Time invalid, skipping schedule entry <entry>"
6464
backup-start: "Creating backups, the server may lag for a little while..."
6565
backup-status-compressing: 'Compressing backup set "<set-name>", set <set-num> of <set-count>'
6666
backup-status-not-running: "No backups are running"
67+
backup-status-pruning: "Pruning backups"
68+
backup-status-starting: "Backup is starting"
6769
backup-status-uploading: 'Uploading backup set "<set-name>", set <set-num> of <set-count>'
70+
backup-total-time: "Backup took <time> seconds to compleate"
6871
backup-upload-complete: "Backup(s) uploaded"
6972
backup-upload-start: "Uploading backup(s)..."
7073
backups-interval-scheduled: "Scheduling a backup to run every <delay> minutes"

0 commit comments

Comments
 (0)