Lars Hofhansl created HBASE-26812:
-------------------------------------
Summary: ShortCircuitingClusterConnection fails to close
RegionScanners when making short-circuited calls
Key: HBASE-26812
URL: https://issues.apache.org/jira/browse/HBASE-26812
Project: HBase
Issue Type: Bug
Affects Versions: 2.4.9
Reporter: Lars Hofhansl
Just ran into this on the Phoenix side.
We retrieve a Connection via {{RegionCoprocessorEnvironment.createConnection...
getTable(...)}}. And then call get on that table. The Get's key happens to
local. Now each call to table.get() leaves an open StoreScanner around forever.
(verified with a memory profiler).
There references are held via
RegionScannerImpl.storeHeap.scannersForDelayedClose. Eventially the
RegionServer goes a GC of death.
The reason appears to be that in this case there is currentCall context. Some
time in 2.x the Rpc handler/call was made responsible for closing open region
scanners, but we forgot to handle {{ShortCircuitingClusterConnection}}
It's not immediately clear how to fix this. But it does make
ShortCircuitingClusterConnection useless and dangerous. If you use it, you
*will* create a giant memory leak.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)