Allowing elaborate only when last update is before last 8 hours. This avoid to start two recovery/elaboration while the previous is not terminated.
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-aggregator-se-plugin@154426 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
a7590738c1
commit
cfc1fb3980
|
@ -15,6 +15,7 @@ import org.gcube.accounting.aggregator.persistence.CouchBaseConnector.SUFFIX;
|
||||||
import org.gcube.accounting.aggregator.plugin.AccountingAggregatorPlugin;
|
import org.gcube.accounting.aggregator.plugin.AccountingAggregatorPlugin;
|
||||||
import org.gcube.accounting.aggregator.status.AggregationState;
|
import org.gcube.accounting.aggregator.status.AggregationState;
|
||||||
import org.gcube.accounting.aggregator.status.AggregationStatus;
|
import org.gcube.accounting.aggregator.status.AggregationStatus;
|
||||||
|
import org.gcube.accounting.aggregator.utility.Constant;
|
||||||
import org.gcube.accounting.aggregator.utility.Utility;
|
import org.gcube.accounting.aggregator.utility.Utility;
|
||||||
import org.gcube.documentstore.records.DSMapper;
|
import org.gcube.documentstore.records.DSMapper;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -110,6 +111,15 @@ public class Elaborator {
|
||||||
aggregationStatus.getAggregationState(),
|
aggregationStatus.getAggregationState(),
|
||||||
DSMapper.getObjectMapper().writeValueAsString(aggregationStatus));
|
DSMapper.getObjectMapper().writeValueAsString(aggregationStatus));
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Calendar now = Utility.getUTCCalendarInstance();
|
||||||
|
now.add(Constant.CALENDAR_FIELD_TO_SUBSTRACT_TO_CONSIDER_UNTERMINATED, -Constant.UNIT_TO_SUBSTRACT_TO_CONSIDER_UNTERMINATED);
|
||||||
|
if(aggregationStatus.getLastUpdateTime().after(now)){
|
||||||
|
logger.info("Cannot elaborate of {} because has been modified in the last {} ",
|
||||||
|
DSMapper.getObjectMapper().writeValueAsString(aggregationStatus),
|
||||||
|
Constant.UNIT_TO_SUBSTRACT_TO_CONSIDER_UNTERMINATED, Constant.CALENDAR_FIELD_TO_SUBSTRACT_TO_CONSIDER_UNTERMINATED==Calendar.HOUR_OF_DAY? "hours" : "unit");
|
||||||
|
return;
|
||||||
}else {
|
}else {
|
||||||
aggregationStatus.updateLastUpdateTime(true);
|
aggregationStatus.updateLastUpdateTime(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
package org.gcube.accounting.aggregator.elaboration;
|
package org.gcube.accounting.aggregator.elaboration;
|
||||||
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.gcube.accounting.aggregator.aggregation.AggregationInfo;
|
import org.gcube.accounting.aggregator.aggregation.AggregationInfo;
|
||||||
import org.gcube.accounting.aggregator.persistence.CouchBaseConnector;
|
import org.gcube.accounting.aggregator.persistence.CouchBaseConnector;
|
||||||
import org.gcube.accounting.aggregator.status.AggregationStatus;
|
import org.gcube.accounting.aggregator.status.AggregationStatus;
|
||||||
import org.gcube.accounting.aggregator.utility.Constant;
|
|
||||||
import org.gcube.accounting.aggregator.utility.Utility;
|
|
||||||
import org.gcube.documentstore.records.DSMapper;
|
import org.gcube.documentstore.records.DSMapper;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -42,14 +39,6 @@ public class RecoveryManager {
|
||||||
aggregationInfo.getAggregationStartDate());
|
aggregationInfo.getAggregationStartDate());
|
||||||
logger.info("Going to Recover unterminated elaboration {}", DSMapper.getObjectMapper().writeValueAsString(aggregationStatus));
|
logger.info("Going to Recover unterminated elaboration {}", DSMapper.getObjectMapper().writeValueAsString(aggregationStatus));
|
||||||
|
|
||||||
Calendar now = Utility.getUTCCalendarInstance();
|
|
||||||
now.add(Constant.CALENDAR_FIELD_TO_SUBSTRACT_TO_CONSIDER_UNTERMINATED, -Constant.UNIT_TO_SUBSTRACT_TO_CONSIDER_UNTERMINATED);
|
|
||||||
if(aggregationStatus.getLastUpdateTime().after(now)){
|
|
||||||
logger.info("Cannot start recovery of {} because has been modified in the last {} ",
|
|
||||||
DSMapper.getObjectMapper().writeValueAsString(aggregationStatus),
|
|
||||||
Constant.UNIT_TO_SUBSTRACT_TO_CONSIDER_UNTERMINATED, Constant.CALENDAR_FIELD_TO_SUBSTRACT_TO_CONSIDER_UNTERMINATED==Calendar.HOUR_OF_DAY? "hours" : "unit");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Elaborator elaborator = new Elaborator(aggregationStatus, persistStartTime, persistEndTime);
|
Elaborator elaborator = new Elaborator(aggregationStatus, persistStartTime, persistEndTime);
|
||||||
elaborator.elaborate();
|
elaborator.elaborate();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue