Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WFCORE-1430]: Deployment scanner logs ERROR when server is shutting down. #1455

Merged
merged 2 commits into from
Mar 18, 2016
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,8 @@ public void propertyChange(PropertyChangeEvent evt) {
}
}
} else if (ControlledProcessState.State.STOPPING == evt.getNewValue()) {
//let's prevent the starting of a new scan
scanEnabled = false;
if(undeployScanTask != null) {
undeployScanTask.cancel(true);
undeployScanTask = null;
Expand Down Expand Up @@ -484,12 +486,12 @@ void singleScan() {
/** Perform a normal scan */
void scan() {
if (acquireScanLock()) {
ScanResult scanResult = null;
boolean scheduleRescan = false;
try {
scanResult = scan(false, deploymentOperations);
scheduleRescan = scan(false, deploymentOperations);
} finally {
try {
if (scanResult != null && scanResult.scheduleRescan) {
if (scheduleRescan) {
synchronized (this) {
if (scanEnabled) {
rescanIncompleteTask = scheduledExecutor.schedule(scanRunnable, 200, TimeUnit.MILLISECONDS);
Expand Down Expand Up @@ -530,7 +532,7 @@ void forcedUndeployScan() {
scannerTasks.add(new UndeployTask(toUndeploy, deploymentDir, scanContext.scanStartTime, true));
}
try {
executeScannerTasks(scannerTasks, deploymentOperations, true, new ScanResult());
executeScannerTasks(scannerTasks, deploymentOperations, true);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
Expand Down Expand Up @@ -558,14 +560,23 @@ private void releaseScanLock() {
scanLock.unlock();
}

private ScanResult scan(boolean oneOffScan, final DeploymentOperations deploymentOperations) {
private boolean scan(boolean oneOffScan, final DeploymentOperations deploymentOperations) {

ScanResult scanResult = new ScanResult();
boolean scheduleRescan = false;

if (scanEnabled || oneOffScan) { // confirm the scan is still wanted
ROOT_LOGGER.tracef("Scanning directory %s for deployment content changes", deploymentDir.getAbsolutePath());

ScanContext scanContext = new ScanContext(deploymentOperations);
ScanContext scanContext = null;
try {
scanContext = new ScanContext(deploymentOperations);
} catch (RuntimeException ex) {
//scanner has stoppped in the meanwhile so we don't need to pursue
if (!scanEnabled) {
return scheduleRescan;
}
throw ex;
}

scanDirectory(deploymentDir, relativePath, scanContext);

Expand Down Expand Up @@ -607,7 +618,7 @@ private ScanResult scan(boolean oneOffScan, final DeploymentOperations deploymen
if (status != ScanStatus.PROCEED) {
if (status == ScanStatus.RETRY && scanInterval > 1000) {
// schedule a non-repeating task to try again more quickly
scanResult.scheduleRescan = true;
scheduleRescan = true;
}
} else {

Expand All @@ -619,8 +630,7 @@ private ScanResult scan(boolean oneOffScan, final DeploymentOperations deploymen
scannerTasks.add(new UndeployTask(missing.getKey(), missing.getValue().parentFolder, scanContext.scanStartTime, false));
}
try {
scanResult.tasks = scannerTasks;
executeScannerTasks(scannerTasks, deploymentOperations, oneOffScan, scanResult);
executeScannerTasks(scannerTasks, deploymentOperations, oneOffScan);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
Expand All @@ -629,11 +639,11 @@ private ScanResult scan(boolean oneOffScan, final DeploymentOperations deploymen
}
}

return scanResult;
return scheduleRescan;
}

private void executeScannerTasks(List<ScannerTask> scannerTasks, DeploymentOperations deploymentOperations,
boolean oneOffScan, ScanResult scanResult) throws InterruptedException {
boolean oneOffScan) throws InterruptedException {
// Process the tasks
if (scannerTasks.size() > 0) {
List<ModelNode> updates = new ArrayList<ModelNode>(scannerTasks.size());
Expand Down Expand Up @@ -688,7 +698,6 @@ private void executeScannerTasks(List<ScannerTask> scannerTasks, DeploymentOpera
final List<ScannerTask> retryTasks = new ArrayList<ScannerTask>();
if (results.hasDefined(RESULT)) {
final List<Property> resultList = results.get(RESULT).asPropertyList();
scanResult.requireUndeploy = false;
for (int i = 0; i < resultList.size(); i++) {
final ModelNode result = resultList.get(i).getValue();
final ScannerTask task = scannerTasks.get(i);
Expand All @@ -702,7 +711,6 @@ private void executeScannerTasks(List<ScannerTask> scannerTasks, DeploymentOpera
} else {
if (failureDesc.length() > 0) {
result.get(FAILURE_DESCRIPTION).set(failureDesc.toString());
scanResult.requireUndeploy = true;
}
task.handleFailureResult(result);
}
Expand Down Expand Up @@ -1637,12 +1645,6 @@ public NonScannableStatus(NonScannableZipException exception, long timestamp) {
}
}

private static class ScanResult {
private boolean scheduleRescan;
private boolean requireUndeploy;
private List<ScannerTask> tasks;
}

/**
* Possible overall scan behaviors following return from handling auto-deploy failures
*/
Expand Down