Skip to content

Commit 5560e8c

Browse files
committed
Avoid deleting created dropins folder before checkpoint
If a dropins folder is created before checkpoint there are cases where the folder could be in the middle of being processed when a checkpoint happens. Deleting such a directory that is in the middle of being monitored (i.e. getting a file listing) will prevent the process from being restored successfuly by criu. This fix avoids deleting such directories created before a checkpoint. This allows the process to be restored multiple times.
1 parent 15cb6fe commit 5560e8c

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

dev/com.ibm.ws.app.manager/src/com/ibm/ws/app/manager/internal/monitor/DropinMonitor.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@
4949
import com.ibm.wsspi.kernel.service.utils.FilterUtils;
5050
import com.ibm.wsspi.kernel.service.utils.FrameworkState;
5151

52+
import io.openliberty.checkpoint.spi.CheckpointPhase;
53+
5254
/**
5355
* App manager file monitoring service which monitors a given directory for applications being added/deleted and starts/stops them as
5456
* appropriate.
@@ -474,7 +476,17 @@ private File updateMonitoredDirectory(String newMonitoredFolder) {
474476
_monitors.clear();
475477

476478
if (!!!newDir.exists()) {
477-
createdMonitoredDir.set(newDir.mkdirs());
479+
boolean successfulMkDirs = newDir.mkdirs();
480+
if (CheckpointPhase.getPhase().restored()) {
481+
createdMonitoredDir.set(successfulMkDirs);
482+
} else {
483+
// Any created dropins directory created before checkpoint we want to avoid
484+
// deleting on shutdown.
485+
// The directory may be in the middle of being monitored during checkpoint.
486+
// Deleting such a directory on shutdown potentially can prevent the process
487+
// from being restored subsequent times.
488+
createdMonitoredDir.set(false);
489+
}
478490
}
479491
} else {
480492
oldDir = null;

0 commit comments

Comments
 (0)