git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-analysis/DataMiner@179537 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
b84c097408
commit
281476cb0c
|
@ -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.ItemContainer;
|
||||||
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
|
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
|
||||||
import org.gcube.common.storagehub.model.Metadata;
|
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.GCubeItem;
|
||||||
import org.gcube.common.storagehub.model.items.Item;
|
import org.gcube.common.storagehub.model.items.Item;
|
||||||
import org.gcube.contentmanagement.lexicalmatcher.utils.FileTools;
|
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 operator = "operator_name";
|
||||||
public static String payload = "payload";
|
public static String payload = "payload";
|
||||||
|
|
||||||
|
private String statusComputationName;
|
||||||
|
private static final String STATUS_POSTFIX="-STATUS";
|
||||||
|
|
||||||
public DataspaceManager(AlgorithmConfiguration config, ComputationData computation, List<StoredData> inputData,
|
public DataspaceManager(AlgorithmConfiguration config, ComputationData computation, List<StoredData> inputData,
|
||||||
List<StoredData> outputData, List<File> generatedFiles) {
|
List<StoredData> outputData, List<File> generatedFiles) {
|
||||||
this.config = config;
|
this.config = config;
|
||||||
|
@ -69,6 +73,8 @@ public class DataspaceManager implements Runnable {
|
||||||
this.inputData = inputData;
|
this.inputData = inputData;
|
||||||
this.outputData = outputData;
|
this.outputData = outputData;
|
||||||
this.generatedFiles = generatedFiles;
|
this.generatedFiles = generatedFiles;
|
||||||
|
this.statusComputationName = this.computation.id+STATUS_POSTFIX;
|
||||||
|
|
||||||
LOGGER.debug("DataspaceManager [config=" + config + ", computation=" + computation + ", inputData=" + inputData
|
LOGGER.debug("DataspaceManager [config=" + config + ", computation=" + computation + ", inputData=" + inputData
|
||||||
+ ", outputData=" + outputData + ", generatedFiles=" + generatedFiles + "]");
|
+ ", outputData=" + outputData + ", generatedFiles=" + generatedFiles + "]");
|
||||||
}
|
}
|
||||||
|
@ -432,7 +438,7 @@ public class DataspaceManager implements Runnable {
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOGGER.debug("Dataspace->impossible to delete running computation : {} ", e.getMessage());
|
LOGGER.debug("Dataspace->impossible to delete running computation : {} ", e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
// LOGGER.debug("Dataspace->create folders network");
|
// LOGGER.debug("Dataspace->create folders network");
|
||||||
FolderContainer folderContainer = createFoldersNetwork();
|
FolderContainer folderContainer = createFoldersNetwork();
|
||||||
|
|
||||||
|
@ -459,8 +465,10 @@ public class DataspaceManager implements Runnable {
|
||||||
|
|
||||||
List<String> scopes = new ArrayList<String>();
|
List<String> scopes = new ArrayList<String>();
|
||||||
scopes.add(config.getGcubeScope());
|
scopes.add(config.getGcubeScope());
|
||||||
|
|
||||||
|
//TODO: update gcubeItem not recreate it...
|
||||||
GCubeItem gcubeItem = new GCubeItem();
|
GCubeItem gcubeItem = new GCubeItem();
|
||||||
gcubeItem.setName(computation.id);
|
gcubeItem.setName(this.statusComputationName);
|
||||||
gcubeItem.setDescription(computation.operatorDescription);
|
gcubeItem.setDescription(computation.operatorDescription);
|
||||||
gcubeItem.setScopes(scopes.toArray(new String[scopes.size()]));
|
gcubeItem.setScopes(scopes.toArray(new String[scopes.size()]));
|
||||||
gcubeItem.setItemType(itemType);
|
gcubeItem.setItemType(itemType);
|
||||||
|
@ -501,19 +509,25 @@ public class DataspaceManager implements Runnable {
|
||||||
.getContainers().get(0);
|
.getContainers().get(0);
|
||||||
LOGGER.debug("Dataspace->removing computation data");
|
LOGGER.debug("Dataspace->removing computation data");
|
||||||
|
|
||||||
List<ItemContainer<? extends Item>> wi = computationContainer.findByName(computation.id).getContainers();
|
List<ItemContainer<? extends Item>> wi = computationContainer.findByName(this.statusComputationName).getContainers();
|
||||||
if (wi.isEmpty()) {
|
if (!wi.isEmpty()) {
|
||||||
for (ItemContainer<? extends Item> container : wi)
|
for (ItemContainer<? extends Item> container : wi) {
|
||||||
container.forceDelete();
|
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
|
} else
|
||||||
LOGGER.debug("Dataspace->Warning Could not find {} under {}", computation.id,
|
LOGGER.debug("Dataspace->Warning Could not find {} under {}", this.statusComputationName,
|
||||||
computationContainer.get().getName());
|
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
|
* TODO: ASK GIANPAOLO int maxtries = 3; int i =1; while
|
||||||
|
|
Loading…
Reference in New Issue