Table coprocessor loaded twice when region is initialized
---------------------------------------------------------
Key: HBASE-4051
URL: https://issues.apache.org/jira/browse/HBASE-4051
Project: HBase
Issue Type: Bug
Components: coprocessors
Affects Versions: 0.92.0
Environment: Ubuntu 11.04 64-bit
Reporter: Terry Siu
Fix For: 0.92.0
I'm debugging a prePut hook which I've implemented as part of the coprocessor
work being developed. This hook is loaded via a table COPROCESSOR attribute and
I've noticed that the prePut method is being called twice for a single Put.
After setting up the region server to run in a debugger, I'm noticing the call
to loadTableCoprocessors() being invoked twice during region initialization,
specifically:
1. HRegion.init => RegionCoprocessorHost.init =>
RegionCoprocessorHost.loadTableCoprocessors
2. ... => RegionCoprocessorHost.preOpen =>
RegionCoprocessorHost.loadTableCoprocessors
This results in two RegionEnvironment instances, each containing a new instance
of my coprocessor, being added to the RegionCoprocessorHost. When I issue a
put, the list of RegionEnvironments is iterated over and each calls the prePut
method in my coprocessor. Reason why this is posing a problem for me is that I
modify the family map passed in to my prePut method. Since this family map is
the same instance used in both prePut calls, the second prePut call operates on
the modified family map, which leads to an unexpected result.
Is the double loading of the same coprocessor class intentional, is this a bug?
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira