Finished Replica/Non-Replica specific handling of MongoDB model

management
This commit is contained in:
Vladislav Chumak committed 2019-02-06 17:49:40 +01:00
1 parent 0b5870d9fa
commit 01481d2ce3
3 files changed
+18 -10

No files matched your search

@@ -81,7 +81,7 @@ public class IncrementalMstHmmWindEstimationForTrackedRaceTest extends OnlineTra
throws MalformedURLException, URISyntaxException, ModelPersistenceException {
dateFormat = new SimpleDateFormat("MM/dd/yyyy-HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+2")); // will result in CEST
windEstimationFactoryService = new WindEstimationFactoryServiceImpl(false);
windEstimationFactoryService = new WindEstimationFactoryServiceImpl();
modelStore = new ClassPathReadOnlyModelStore("trained_wind_estimation_models", getClass().getClassLoader(),
modelFilesNames);
windEstimationFactoryService.importAllModelsFromModelStore(modelStore);
@@ -14,6 +14,8 @@ import com.sap.sailing.domain.windestimation.WindEstimationFactoryService;
import com.sap.sailing.windestimation.model.exception.ModelLoadingException;
import com.sap.sailing.windestimation.model.exception.ModelPersistenceException;
import com.sap.sailing.windestimation.model.store.FileSystemModelStore;
import com.sap.sailing.windestimation.model.store.MongoDbModelStore;
import com.sap.sse.mongodb.MongoDBService;
import com.sap.sse.replication.Replicable;
import com.sap.sse.util.ClearStateTestSupport;
@@ -35,9 +37,7 @@ public class Activator implements BundleActivator {
@Override
public void start(BundleContext context) throws Exception {
logger.info("Registering WindEstimationFactoryService");
//FIXME determine whether this is a replica or not
boolean replica = false;
service = new WindEstimationFactoryServiceImpl(replica);
service = new WindEstimationFactoryServiceImpl();
final String windEstimationModelDataSourceURL = System
.getProperty(WIND_ESTIMATION_MODEL_DATA_SOURCE_URL_PROPERTY_NAME);
final String windEstimationModelDataSourceFolder = System
@@ -49,9 +49,10 @@ public class Activator implements BundleActivator {
}
if (windEstimationModelDataSourceURL != null) {
importWindEstimationModelsFromUrl(windEstimationModelDataSourceURL);
}
if (windEstimationModelDataSourceFolder != null) {
} else if (windEstimationModelDataSourceFolder != null) {
importWindEstimationModelsFromFolder(windEstimationModelDataSourceFolder);
} else {
importWindEstimationModelsFromMongoDb();
}
final ServiceRegistration<WindEstimationFactoryService> serviceRegistration = context
.registerService(WindEstimationFactoryService.class, service, null);
@@ -62,6 +63,15 @@ public class Activator implements BundleActivator {
registrations.add(context.registerService(ClearStateTestSupport.class.getName(), service, null));
}
private void importWindEstimationModelsFromMongoDb() {
MongoDbModelStore modelStore = new MongoDbModelStore(MongoDBService.INSTANCE.getDB());
try {
service.importAllModelsFromModelStore(modelStore);
} catch (ModelPersistenceException e) {
throw new ModelLoadingException("Could not import wind estimation models from MongoDB", e);
}
}
private void importWindEstimationModelsFromFolder(String windEstimationModelDataSourceFolder) {
FileSystemModelStore modelStore = new FileSystemModelStore(windEstimationModelDataSourceFolder);
try {
@@ -19,9 +19,7 @@ import com.sap.sailing.windestimation.model.exception.ModelPersistenceException;
import com.sap.sailing.windestimation.model.regressor.twdtransition.GaussianBasedTwdTransitionDistributionCache;
import com.sap.sailing.windestimation.model.store.InMemoryModelStore;
import com.sap.sailing.windestimation.model.store.ModelStore;
import com.sap.sailing.windestimation.model.store.MongoDbModelStore;
import com.sap.sailing.windestimation.model.store.PersistenceContextType;
import com.sap.sse.mongodb.MongoDBService;
public class WindEstimationFactoryServiceImpl
extends AbstractReplicableWithObjectInputStream<WindEstimationFactoryService, WindEstimationDataOperation<?>>
@@ -46,8 +44,8 @@ public class WindEstimationFactoryServiceImpl
private boolean modelsReady = false;
private boolean shutdown = false;
public WindEstimationFactoryServiceImpl(boolean replica) {
MODEL_STORE = replica ? new InMemoryModelStore() : new MongoDbModelStore(MongoDBService.INSTANCE.getDB());
public WindEstimationFactoryServiceImpl() {
MODEL_STORE = new InMemoryModelStore();
maneuverClassifiersCache = new ManeuverClassifiersCache(MODEL_STORE, PRELOAD_ALL_MODELS,
PRESERVE_LOADED_MODELS_MILLIS, MAX_MANEUVER_FEATURES);
gaussianBasedTwdTransitionDistributionCache = new GaussianBasedTwdTransitionDistributionCache(MODEL_STORE,