This commit is contained in:
Lucio Lelii 2019-05-23 14:48:31 +00:00
parent ed556a9960
commit f47693f27a
1 changed files with 26 additions and 12 deletions

View File

@ -19,6 +19,7 @@ import org.gcube.common.storagehub.client.dsl.FolderContainer;
import org.gcube.common.storagehub.client.dsl.ItemContainer;
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
import org.gcube.common.storagehub.model.Metadata;
import org.gcube.common.storagehub.model.exceptions.ItemLockedException;
import org.gcube.common.storagehub.model.items.GCubeItem;
import org.gcube.common.storagehub.model.items.Item;
import org.gcube.contentmanagement.lexicalmatcher.utils.FileTools;
@ -62,6 +63,9 @@ public class DataspaceManager implements Runnable {
public static String operator = "operator_name";
public static String payload = "payload";
private String statusComputationName;
private static final String STATUS_POSTFIX="-STATUS";
public DataspaceManager(AlgorithmConfiguration config, ComputationData computation, List<StoredData> inputData,
List<StoredData> outputData, List<File> generatedFiles) {
this.config = config;
@ -69,6 +73,8 @@ public class DataspaceManager implements Runnable {
this.inputData = inputData;
this.outputData = outputData;
this.generatedFiles = generatedFiles;
this.statusComputationName = this.computation.id+STATUS_POSTFIX;
LOGGER.debug("DataspaceManager [config=" + config + ", computation=" + computation + ", inputData=" + inputData
+ ", outputData=" + outputData + ", generatedFiles=" + generatedFiles + "]");
}
@ -432,7 +438,7 @@ public class DataspaceManager implements Runnable {
} catch (Exception e) {
LOGGER.debug("Dataspace->impossible to delete running computation : {} ", e.getMessage());
}
// LOGGER.debug("Dataspace->create folders network");
FolderContainer folderContainer = createFoldersNetwork();
@ -459,8 +465,10 @@ public class DataspaceManager implements Runnable {
List<String> scopes = new ArrayList<String>();
scopes.add(config.getGcubeScope());
//TODO: update gcubeItem not recreate it...
GCubeItem gcubeItem = new GCubeItem();
gcubeItem.setName(computation.id);
gcubeItem.setName(this.statusComputationName);
gcubeItem.setDescription(computation.operatorDescription);
gcubeItem.setScopes(scopes.toArray(new String[scopes.size()]));
gcubeItem.setItemType(itemType);
@ -501,19 +509,25 @@ public class DataspaceManager implements Runnable {
.getContainers().get(0);
LOGGER.debug("Dataspace->removing computation data");
List<ItemContainer<? extends Item>> wi = computationContainer.findByName(computation.id).getContainers();
if (wi.isEmpty()) {
for (ItemContainer<? extends Item> container : wi)
container.forceDelete();
List<ItemContainer<? extends Item>> wi = computationContainer.findByName(this.statusComputationName).getContainers();
if (!wi.isEmpty()) {
for (ItemContainer<? extends Item> container : wi) {
boolean retry = false;
do {
try {
container.forceDelete();
retry = false;
}catch (ItemLockedException e) {
LOGGER.warn("item locked, retrying");
Thread.sleep(1000);
retry = true;
}
}while (retry);
}
} else
LOGGER.debug("Dataspace->Warning Could not find {} under {}", computation.id,
LOGGER.debug("Dataspace->Warning Could not find {} under {}", this.statusComputationName,
computationContainer.get().getName());
List<ItemContainer<? extends Item>> fileComputations = computationContainer.findByName(computation.id)
.getContainers();
if (fileComputations.size() > 0)
fileComputations.get(0).forceDelete();;
/*
* TODO: ASK GIANPAOLO int maxtries = 3; int i =1; while