[ https://issues.apache.org/jira/browse/HBASE-2025?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12795401#action_12795401 ]
Jean-Daniel Cryans commented on HBASE-2025: ------------------------------------------- Further notes. When we add a new method in RPC we call this: {code} static void addToMap(final String name, final byte code) { if (METHODNAME_TO_CODE.containsKey(name)) { return; } METHODNAME_TO_CODE.put(name, Byte.valueOf(code)); CODE_TO_METHODNAME.put(Byte.valueOf(code), name); } {code} This means that put(final byte [] regionName, final Put put) and put(final byte[] regionName, final Put [] puts) share the same code. The reason it works is that once we get the name of the method we build the full signature using the name of the classes passed by the client call: {code} Method method = implementation.getMethod(call.getMethodName(), call.getParameterClasses()); {code} This means that the NPE we get is pure luck, we could also be in a situation where the code is valid but returns the wrong method name. > 0.20.2 accessed from older client throws UndeclaredThrowableException; > frustrates rolling upgrade > ------------------------------------------------------------------------------------------------- > > Key: HBASE-2025 > URL: https://issues.apache.org/jira/browse/HBASE-2025 > Project: Hadoop HBase > Issue Type: Bug > Reporter: stack > Assignee: Jean-Daniel Cryans > Priority: Blocker > Fix For: 0.20.3 > > > From the list: > {code} > After upgrading HBase from 0.20.0 to 0.20.2 I am getting following error > message: > java.lang.reflect.UndeclaredThrowableException > at $Proxy2.getRegionInfo(Unknown Source) > at > org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRootRegion(HConnectionManager.java:931) > at > org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:573) > at > org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:549) > at > org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegionInMeta(HConnectionManager.java:623) > at > org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:582) > at > org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:549) > at > org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegionInMeta(HConnectionManager.java:623) > at > org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:586) > at > org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:549) > at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:125) > at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:103) > at com.xxxx.OrderLoader$CustomerReducer.setup(OrderLoader.java:81) > at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:172) > at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:563) > at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:408) > at org.apache.hadoop.mapred.Child.main(Child.java:170) > Caused by: org.apache.hadoop.ipc.RemoteException: java.io.IOException: > java.lang.NullPointerException > at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:723) > at org.apache.hadoop.hbase.ipc.HBaseRPC$Invoker.invoke(HBaseRPC.java:328) > ... 17 more > This is happening for the following line in my code: > this.table = new HTable(new HBaseConfiguration(), tableName); > This used to work flawlessly before, so seems like something changed in > HBaseConfiguration, may be? I am looking into this, but any pointers would > be greatly appreciated. > {code} > We should figure what we broke. Try fix for 0.20.3. In future, as part of > release, try accessing cluster with an older client to ensure we've not done > something that would frustrate rolling upgrade. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.