public static ODatabaseRecordThreadLocal instance() { final ODatabaseRecordThreadLocal dbInst = INSTANCE.get(); if (dbInst != null) return dbInst; //we can do that to avoid thread local memory leaks in containers if (INSTANCE.get() == null) { final Orient inst = Orient.instance(); inst.registerListener(new OOrientListenerAbstract() { @Override public void onStartup() { } @Override public void onShutdown() { INSTANCE.set(null); } }); INSTANCE.compareAndSet(null, new ODatabaseRecordThreadLocal()); } return INSTANCE.get(); }
public ODatabasePoolAbstract(final Object iOwner, final int iMinSize, final int iMaxSize, final int iTimeout, final long idleTimeoutMillis, final long timeBetweenEvictionRunsMillis) { super(true, OGlobalConfiguration.STORAGE_LOCK_TIMEOUT .getValueAsInteger(), true); maxSize = iMaxSize; timeout = iTimeout; owner = iOwner; Orient.instance().registerListener(this); if (idleTimeoutMillis > 0 && timeBetweenEvictionRunsMillis > 0) { this.evictionTask = new Timer(); this.evictor = new Evictor(idleTimeoutMillis); this.evictionTask.schedule(evictor, timeBetweenEvictionRunsMillis, timeBetweenEvictionRunsMillis); } }
public OLuceneIndexManagerAbstract() { super(OGlobalConfiguration.ENVIRONMENT_CONCURRENT.getValueAsBoolean(), OGlobalConfiguration.MVRBTREE_TIMEOUT .getValueAsInteger(), true); Orient.instance().registerListener(this); }