Package org.apache.hadoop.hbase.mob
Class MobCell
java.lang.Object
org.apache.hadoop.hbase.mob.MobCell
- All Implemented Interfaces:
Closeable
,AutoCloseable
The MobCell will maintain a
Cell
and a StoreFileScanner
inside. Now, the mob cell
is backend by NIO ByteBuffers which are allocated from ByteBuffAllocator, so we cannot just read
the cell and close the MOB file scanner because the MOB file scanner closing will deallocate the
NIO ByteBuffers, which resulting memory leak.
Actually, the right solution is:
1. Read the normal cell;
2. Parse the value of normal cell and get MOB fileName,offset,length;
3. Open scanner to read the mob value;
4. Construct the response cell whose key is from the normal cell and value is from the mob cell.
5. Ship the response cell to HBase client.
6. Release both normal cell's block and mob cell's block.
For mob cell, the block releasing just means closing the the mob scanner, so here we need to keep
the StoreFileScanner
inside and close only when we're ensure that the MobCell has been
shipped to RPC client.
-
Field Summary
-
Constructor Summary
ConstructorDescriptionMobCell
(ExtendedCell cell) MobCell
(ExtendedCell cell, StoreFileScanner sfScanner) -
Method Summary
-
Field Details
-
cell
-
sfScanner
-
-
Constructor Details
-
MobCell
-
MobCell
-
-
Method Details
-
getCell
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-