private void checkEntreeSize(int entreeSize) { if (entreeSize > MAX_ENTREE_SIZE) throw new OSBTreeBonsaiLocalException( "Serialized key-value pair size bigger than allowed " + entreeSize + " vs " + MAX_ENTREE_SIZE + ".", tree); } }
.wrapException(new OSBTreeBonsaiLocalException("Error during finding first key in sbtree [" + getName() + "]", this), e); } finally { atomicOperationsManager.releaseReadLock(this);
.wrapException(new OSBTreeBonsaiLocalException("Error during finding first key in sbtree [" + getName() + "]", this), e); } finally { atomicOperationsManager.releaseReadLock(this);
@Override public long size() { atomicOperationsManager.acquireReadLock(this); try { final Lock lock = FILE_LOCK_MANAGER.acquireSharedLock(fileId); try { final OAtomicOperation atomicOperation = OAtomicOperationsManager.getCurrentOperation(); final OCacheEntry rootCacheEntry = loadPageForRead(atomicOperation, fileId, rootBucketPointer.getPageIndex(), false); try { final OSBTreeBonsaiBucket rootBucket = new OSBTreeBonsaiBucket<>(rootCacheEntry, rootBucketPointer.getPageOffset(), keySerializer, valueSerializer, this); return rootBucket.getTreeSize(); } finally { releasePageFromRead(atomicOperation, rootCacheEntry); } } finally { lock.unlock(); } } catch (final IOException e) { throw OException .wrapException(new OSBTreeBonsaiLocalException("Error during retrieving of size of index " + getName(), this), e); } finally { atomicOperationsManager.releaseReadLock(this); } }
@Override public V get(final K key) { atomicOperationsManager.acquireReadLock(this); try { final Lock lock = FILE_LOCK_MANAGER.acquireSharedLock(fileId); try { final OAtomicOperation atomicOperation = OAtomicOperationsManager.getCurrentOperation(); final BucketSearchResult bucketSearchResult = findBucket(key, atomicOperation); if (bucketSearchResult.itemIndex < 0) { return null; } final OBonsaiBucketPointer bucketPointer = bucketSearchResult.getLastPathItem(); final OCacheEntry keyBucketCacheEntry = loadPageForRead(atomicOperation, fileId, bucketPointer.getPageIndex(), false); try { final OSBTreeBonsaiBucket<K, V> keyBucket = new OSBTreeBonsaiBucket<>(keyBucketCacheEntry, bucketPointer.getPageOffset(), keySerializer, valueSerializer, this); return keyBucket.getEntry(bucketSearchResult.itemIndex).value; } finally { releasePageFromRead(atomicOperation, keyBucketCacheEntry); } } finally { lock.unlock(); } } catch (final IOException e) { throw OException .wrapException(new OSBTreeBonsaiLocalException("Error during retrieving of sbtree with name " + getName(), this), e); } finally { atomicOperationsManager.releaseReadLock(this); } }
new OSBTreeBonsaiLocalException("Error during fetch of major values for key " + key + " in sbtree " + getName(), this), ioe); } finally {
public boolean load(final OBonsaiBucketPointer rootBucketPointer) { final Lock lock = FILE_LOCK_MANAGER.acquireExclusiveLock(fileId); try { this.rootBucketPointer = rootBucketPointer; final OAtomicOperation atomicOperation = OAtomicOperationsManager.getCurrentOperation(); this.fileId = openFile(atomicOperation, getFullName()); final OCacheEntry rootCacheEntry = loadPageForRead(atomicOperation, this.fileId, this.rootBucketPointer.getPageIndex(), false); try { final OSBTreeBonsaiBucket<K, V> rootBucket = new OSBTreeBonsaiBucket<>(rootCacheEntry, this.rootBucketPointer.getPageOffset(), keySerializer, valueSerializer, this); //noinspection unchecked keySerializer = (OBinarySerializer<K>) storage.getComponentsFactory().binarySerializerFactory .getObjectSerializer(rootBucket.getKeySerializerId()); //noinspection unchecked valueSerializer = (OBinarySerializer<V>) storage.getComponentsFactory().binarySerializerFactory .getObjectSerializer(rootBucket.getValueSerializerId()); return !rootBucket.isDeleted(); } finally { releasePageFromRead(atomicOperation, rootCacheEntry); } } catch (final IOException e) { throw OException.wrapException(new OSBTreeBonsaiLocalException("Exception during loading of sbtree " + fileId, this), e); } finally { lock.unlock(); } }
new OSBTreeBonsaiLocalException("Error during fetch of minor values for key " + key + " in sbtree " + getName(), this), ioe); } finally {
throw OException.wrapException(new OSBTreeBonsaiLocalException( "Error during fetch of values between key " + keyFrom + " and key " + keyTo + " in sbtree " + getName(), this), ioe); } finally {
return false; else throw new OSBTreeBonsaiLocalException( "Entry size ('key + value') is more than is more than allowed " + (freePointer - 2 * OIntegerSerializer.INT_SIZE + POSITIONS_ARRAY_OFFSET) + " bytes, either increase page size using '"