@Override public boolean acquireAtomicExclusiveLock(Object key) { OBaseIndexEngine engine; while (true) { try { engine = storage.getIndexEngine(indexId); break; } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } } return engine.acquireAtomicExclusiveLock(key); }
@Override public String getIndexNameByKey(final Object key) { OBaseIndexEngine engine; while (true) { try { engine = storage.getIndexEngine(indexId); break; } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } } return engine.getIndexNameByKey(key); }
@Override public Object getFirstKey() { acquireSharedLock(); try { while (true) try { return storage.getIndexFirstKey(indexId); } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } } finally { releaseSharedLock(); } }
@Override public Object getLastKey() { acquireSharedLock(); try { while (true) try { return storage.getIndexLastKey(indexId); } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } } finally { releaseSharedLock(); } }
@Override public boolean hasRangeQuerySupport() { acquireSharedLock(); try { while (true) try { return storage.hasIndexRangeQuerySupport(indexId); } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } } finally { releaseSharedLock(); } }
@Override public OIndexKeyCursor keyCursor() { acquireSharedLock(); try { while (true) try { return storage.getIndexKeyCursor(indexId); } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } } finally { releaseSharedLock(); } }
public OIndex<T> clear() { acquireSharedLock(); try { while (true) try { storage.clearIndex(indexId); break; } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } return this; } finally { releaseSharedLock(); } }
public boolean remove(Object key) { key = getCollatingValue(key); acquireSharedLock(); try { while (true) try { return storage.removeKeyFromIndex(indexId, key); } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } } finally { releaseSharedLock(); } }
public boolean contains(Object key) { key = getCollatingValue(key); acquireSharedLock(); try { assert indexId >= 0; while (true) try { return storage.indexContainsKey(indexId, key); } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } } finally { releaseSharedLock(); } }
protected void onIndexEngineChange(final int indexId) { while (true) try { storage.callIndexEngine(false, false, indexId, engine -> { engine.init(getName(), getType(), getDefinition(), isAutomatic(), getMetadata()); return null; }); break; } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } }
public OIndexInternal<T> delete() { acquireExclusiveLock(); try { while (true) try { storage.deleteIndexEngine(indexId); break; } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } // REMOVE THE INDEX ALSO FROM CLASS MAP if (getDatabase().getMetadata() != null) //noinspection deprecation getDatabase().getMetadata().getIndexManager().removeClassPropertyIndex(this); removeValuesContainer(); return this; } finally { releaseExclusiveLock(); } }
break; } catch (OInvalidIndexEngineIdException ignore) { doReloadIndexEngine(); } catch (Exception ex) { OLogManager.instance().error(this, "Exception during index '%s' deletion", ex, name);