git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/branches/data-access/species-products-discovery/3.0@154674 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
56ab89ca45
commit
cd43b8f199
|
@ -0,0 +1,6 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
encoding//src/main/java=UTF-8
|
||||||
|
encoding//src/main/resources=UTF-8
|
||||||
|
encoding//src/test/java=UTF-8
|
||||||
|
encoding//src/test/resources=UTF-8
|
||||||
|
encoding/<project>=UTF-8
|
|
@ -27,4 +27,7 @@
|
||||||
<Changeset component="org.gcube.data-access.species-products-discovery.3-0-0" date="2017-02-09">
|
<Changeset component="org.gcube.data-access.species-products-discovery.3-0-0" date="2017-02-09">
|
||||||
<Change>service moved to smartgears</Change>
|
<Change>service moved to smartgears</Change>
|
||||||
</Changeset>
|
</Changeset>
|
||||||
|
<Changeset component="org.gcube.data-access.species-products-discovery.3-0-1" date="2017-02-09">
|
||||||
|
<Change>changed for the new JobUsageRecord</Change>
|
||||||
|
</Changeset>
|
||||||
</ReleaseNotes>
|
</ReleaseNotes>
|
14
pom.xml
14
pom.xml
|
@ -3,10 +3,16 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.gcube.data.spd</groupId>
|
<groupId>org.gcube.data.spd</groupId>
|
||||||
<artifactId>species-products-discovery</artifactId>
|
<artifactId>species-products-discovery</artifactId>
|
||||||
<version>3.0.0-SNAPSHOT</version>
|
<version>3.0.1-SNAPSHOT</version>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<name>species product discovery</name>
|
<name>species product discovery</name>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<artifactId>maven-parent</artifactId>
|
||||||
|
<groupId>org.gcube.tools</groupId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -221,10 +227,6 @@
|
||||||
<plugin>
|
<plugin>
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
<version>2.3.2</version>
|
<version>2.3.2</version>
|
||||||
<configuration>
|
|
||||||
<source>1.7</source>
|
|
||||||
<target>1.7</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
|
|
@ -7,8 +7,11 @@ import org.gcube.accounting.datamodel.usagerecords.JobUsageRecord;
|
||||||
import org.gcube.accounting.persistence.AccountingPersistence;
|
import org.gcube.accounting.persistence.AccountingPersistence;
|
||||||
import org.gcube.accounting.persistence.AccountingPersistenceFactory;
|
import org.gcube.accounting.persistence.AccountingPersistenceFactory;
|
||||||
import org.gcube.common.authorization.library.provider.AuthorizationProvider;
|
import org.gcube.common.authorization.library.provider.AuthorizationProvider;
|
||||||
|
import org.gcube.common.authorization.library.utils.Caller;
|
||||||
import org.gcube.common.scope.api.ScopeProvider;
|
import org.gcube.common.scope.api.ScopeProvider;
|
||||||
import org.gcube.data.spd.model.service.types.JobStatus;
|
import org.gcube.data.spd.model.service.types.JobStatus;
|
||||||
|
import org.gcube.smartgears.ContextProvider;
|
||||||
|
import org.gcube.smartgears.context.application.ApplicationContext;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -34,34 +37,46 @@ public abstract class SpeciesJob implements Runnable {
|
||||||
|
|
||||||
public abstract boolean isResubmitPermitted();
|
public abstract boolean isResubmitPermitted();
|
||||||
|
|
||||||
|
private ApplicationContext ctx = ContextProvider.get();
|
||||||
|
|
||||||
public final void run(){
|
public final void run(){
|
||||||
if (getStatus()!=JobStatus.PENDING && !isResubmitPermitted()){
|
if (getStatus()!=JobStatus.PENDING && !isResubmitPermitted()){
|
||||||
log.warn("the job with id {} cannot be resubmitted",getId());
|
log.warn("the job with id {} cannot be resubmitted",getId());
|
||||||
throw new IllegalStateException("this job cannot be resubmitted");
|
throw new IllegalStateException("this job cannot be resubmitted");
|
||||||
}
|
}
|
||||||
try{
|
try{
|
||||||
|
log.debug("running job with id {}",this.getId());
|
||||||
execute();
|
execute();
|
||||||
|
log.debug("job with id {} executed",this.getId());
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
log.error("unexpected exception in job, setting status to FAILED",e);
|
log.error("unexpected exception in job with id {}, setting status to FAILED",this.getId(),e);
|
||||||
this.setStatus(JobStatus.FAILED);
|
this.setStatus(JobStatus.FAILED);
|
||||||
}
|
}
|
||||||
generateAccounting();
|
generateAccounting();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private final void generateAccounting(){
|
private final void generateAccounting(){
|
||||||
AccountingPersistence persistence = AccountingPersistenceFactory.getPersistence();
|
AccountingPersistence persistence = AccountingPersistenceFactory.getPersistence();
|
||||||
JobUsageRecord jobUsageRecord = new JobUsageRecord();
|
JobUsageRecord jobUsageRecord = new JobUsageRecord();
|
||||||
try{
|
try{
|
||||||
|
Caller caller = AuthorizationProvider.instance.get();
|
||||||
jobUsageRecord.setConsumerId(AuthorizationProvider.instance.get().getClient().getId());
|
String consumerId = caller!= null ?
|
||||||
|
caller.getClient().getId() : "UNKNOWN";
|
||||||
|
String qualifier = caller!= null ?
|
||||||
|
caller.getTokenQualifier() : "UNKNOWN";
|
||||||
|
|
||||||
|
jobUsageRecord.setConsumerId(consumerId);
|
||||||
jobUsageRecord.setScope(ScopeProvider.instance.get());
|
jobUsageRecord.setScope(ScopeProvider.instance.get());
|
||||||
jobUsageRecord.setJobName(this.getClass().getSimpleName());
|
jobUsageRecord.setJobName(this.getClass().getSimpleName());
|
||||||
jobUsageRecord.setOperationResult(getStatus()==JobStatus.COMPLETED?OperationResult.SUCCESS:OperationResult.FAILED);
|
jobUsageRecord.setOperationResult(getStatus()==JobStatus.COMPLETED?OperationResult.SUCCESS:OperationResult.FAILED);
|
||||||
jobUsageRecord.setJobId(this.getId());
|
jobUsageRecord.setDuration(this.getEndDate().getTime().getTime()-this.getStartDate().getTime().getTime());
|
||||||
jobUsageRecord.setJobStartTime(this.getStartDate());
|
jobUsageRecord.setServiceName(ctx.configuration().name());
|
||||||
jobUsageRecord.setJobEndTime(this.getEndDate());
|
jobUsageRecord.setServiceClass(ctx.configuration().serviceClass());
|
||||||
|
jobUsageRecord.setHost(ctx.container().configuration().hostname());
|
||||||
|
jobUsageRecord.setCallerQualifier(qualifier);
|
||||||
|
|
||||||
persistence.account(jobUsageRecord);
|
persistence.account(jobUsageRecord);
|
||||||
log.info("Job {} accounted successfully",getId());
|
log.info("Job {} accounted successfully",getId());
|
||||||
}catch(Exception ex){
|
}catch(Exception ex){
|
||||||
|
|
|
@ -42,7 +42,7 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
public class PluginManager{
|
public class PluginManager{
|
||||||
|
|
||||||
private static Logger log = LoggerFactory.getLogger(PluginManager.class);
|
private static final Logger log = LoggerFactory.getLogger(PluginManager.class);
|
||||||
|
|
||||||
private static final int CACHE_ENTRIES_PER_PLUGIN =500;
|
private static final int CACHE_ENTRIES_PER_PLUGIN =500;
|
||||||
private static final String RESOURCE_CATEGORY ="BiodiversityRepository";
|
private static final String RESOURCE_CATEGORY ="BiodiversityRepository";
|
||||||
|
@ -199,7 +199,7 @@ public class PluginManager{
|
||||||
if (pluginDescriptions==null) continue;
|
if (pluginDescriptions==null) continue;
|
||||||
|
|
||||||
|
|
||||||
log.trace("plugins in Pluginmanager are "+plugins.keySet());
|
log.trace("plugins in Pluginmanager are {} ",plugins.keySet().toString());
|
||||||
|
|
||||||
addRemotePlugins(pluginDescriptions, endpointId);
|
addRemotePlugins(pluginDescriptions, endpointId);
|
||||||
}
|
}
|
||||||
|
@ -292,7 +292,7 @@ public class PluginManager{
|
||||||
}
|
}
|
||||||
|
|
||||||
retrievePlugins(runtimeResourcePerPlugin);
|
retrievePlugins(runtimeResourcePerPlugin);
|
||||||
retrieveRemotePlugins();
|
//TODO : reintroduce it to discovery twin services // retrieveRemotePlugins();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,9 @@ public abstract class RetryCall<T, E extends Throwable>{
|
||||||
int retry = 0;
|
int retry = 0;
|
||||||
do {
|
do {
|
||||||
try{
|
try{
|
||||||
return execute();
|
T result = execute();
|
||||||
|
if (result != null)
|
||||||
|
return result;
|
||||||
}catch (ExternalRepositoryException e) {
|
}catch (ExternalRepositoryException e) {
|
||||||
logger.warn("error on external repository, "+(retry<retries?" ":"not ")+"retrying",e);
|
logger.warn("error on external repository, "+(retry<retries?" ":"not ")+"retrying",e);
|
||||||
retry++;
|
retry++;
|
||||||
|
|
Reference in New Issue