// by the ExecutionEngine class. This class has implementations for both
// JNI and IPC - and selects the desired implementation based on the
// value of this.eeBackend.
HsqlBackend hsqlTemp = null;
ExecutionEngine eeTemp = null;
SnapshotSiteProcessor snapshotter = null;
try {
if (trace.val) LOG.trace("Creating EE wrapper with target type '" + target + "'");
if (this.backend_target == BackendTarget.HSQLDB_BACKEND) {
hsqlTemp = new HsqlBackend(partitionId);
final String hexDDL = catalogContext.database.getSchema();
final String ddl = Encoder.hexDecodeToString(hexDDL);
final String[] commands = ddl.split(";");
for (String command : commands) {
if (command.length() == 0) {
continue;
}
hsqlTemp.runDDL(command);
}
eeTemp = new MockExecutionEngine();
}
else if (target == BackendTarget.NATIVE_EE_JNI) {
org.voltdb.EELibraryLoader.loadExecutionEngineLibrary(true);
// set up the EE
eeTemp = new ExecutionEngineJNI(this,
catalogContext.cluster.getRelativeIndex(),
this.getSiteId(),
this.getPartitionId(),
this.site.getHost().getId(),
"localhost");
// Initialize Anti-Cache
if (hstore_conf.site.anticache_enable) {
File acFile = AntiCacheManager.getDatabaseDir(this);
long blockSize = hstore_conf.site.anticache_block_size;
eeTemp.antiCacheInitialize(acFile, blockSize);
}
// Initialize STORAGE_MMAP
if (hstore_conf.site.storage_mmap) {
File dbFile = getMMAPDir(this);
long mapSize = hstore_conf.site.storage_mmap_file_size;
long syncFrequency = hstore_conf.site.storage_mmap_sync_frequency;
eeTemp.MMAPInitialize(dbFile, mapSize, syncFrequency);
}
// Initialize ARIES
if (hstore_conf.site.aries) {
File dbFile = getARIESDir(this);
File logFile = getARIESFile(this);
eeTemp.ARIESInitialize(dbFile, logFile);
}
// Important: This has to be called *after* we initialize the anti-cache
// and the storage information!
eeTemp.loadCatalog(catalogContext.catalog.serialize());
this.lastTickTime = System.currentTimeMillis();
eeTemp.tick(this.lastTickTime, 0);
snapshotter = new SnapshotSiteProcessor(new Runnable() {
final PotentialSnapshotWorkMessage msg = new PotentialSnapshotWorkMessage();
@Override
public void run() {
PartitionExecutor.this.work_queue.add(this.msg);
}