示例#1
0
        public ByteBuffer GetValue()
        {
            if (!IsValidKey())
            {
                return(ByteBuffer.NewEmpty());
            }
            var nodeIdxPair = _stack[_stack.Count - 1];
            var leafMember  = ((IBTreeLeafNode)nodeIdxPair.Node).GetMemberValue(nodeIdxPair.Idx);

            return(_keyValueDB.ReadValue(leafMember.ValueFileId, leafMember.ValueOfs, leafMember.ValueSize));
        }
示例#2
0
        public ByteBuffer GetValue()
        {
            if (!IsValidKey())
            {
                return(ByteBuffer.NewEmpty());
            }
            var nodeIdxPair = _stack[_stack.Count - 1];
            var leafMember  = ((IBTreeLeafNode)nodeIdxPair.Node).GetMemberValue(nodeIdxPair.Idx);

            try
            {
                return(_keyValueDB.ReadValue(leafMember.ValueFileId, leafMember.ValueOfs, leafMember.ValueSize));
            }
            catch (BTDBException ex)
            {
                throw new BTDBException($"GetValue failed in TrId:{BtreeRoot.TransactionId},TRL:{BtreeRoot.TrLogFileId},Ofs:{BtreeRoot.TrLogOffset},ComUlong:{BtreeRoot.CommitUlong} and LastTrId:{_keyValueDB.LastCommited.TransactionId},ComUlong:{_keyValueDB.LastCommited.CommitUlong} OldestTrId:{_keyValueDB.OldestRoot.TransactionId},TRL:{_keyValueDB.OldestRoot.TrLogFileId},ComUlong:{_keyValueDB.OldestRoot.CommitUlong} innerMessage:{ex.Message}", ex);
            }
        }
示例#3
0
        public ByteBuffer GetValue()
        {
            if (!IsValidKey())
            {
                return(ByteBuffer.NewEmpty());
            }
            var nodeIdxPair = _stack[_stack.Count - 1];
            var leafMember  = ((IBTreeLeafNode)nodeIdxPair.Node).GetMemberValue(nodeIdxPair.Idx);

            try
            {
                return(_keyValueDB.ReadValue(leafMember.ValueFileId, leafMember.ValueOfs, leafMember.ValueSize));
            }
            catch (BTDBException ex)
            {
                var oldestRoot   = (IBTreeRootNode)_keyValueDB.ReferenceAndGetOldestRoot();
                var lastCommited = (IBTreeRootNode)_keyValueDB.ReferenceAndGetLastCommitted();
                // no need to dereference roots because we know it is managed
                throw new BTDBException($"GetValue failed in TrId:{BtreeRoot.TransactionId},TRL:{BtreeRoot.TrLogFileId},Ofs:{BtreeRoot.TrLogOffset},ComUlong:{BtreeRoot.CommitUlong} and LastTrId:{lastCommited.TransactionId},ComUlong:{lastCommited.CommitUlong} OldestTrId:{oldestRoot.TransactionId},TRL:{oldestRoot.TrLogFileId},ComUlong:{oldestRoot.CommitUlong} innerMessage:{ex.Message}", ex);
            }
        }