You are fixing it for HTD only? Not all Writables? St>Ack
On Fri, Jul 22, 2011 at 9:50 PM, Ted Yu <[email protected]> wrote: > Looks like I need to enhance the following code in HbaseObjectWritable (line > 575): > Writable writable = WritableFactories.newInstance(instanceClass, > conf); > > If HTableDescriptor has the following method where T is HTableDescriptor: > public <T> T newInstance(DataInput dataInput) > > HbaseObjectWritable.readObject() would be able to create an HTD instance > without relying on its default ctor. > > On Fri, Jul 22, 2011 at 9:31 PM, Stack <[email protected]> wrote: > >> Try your proposal. I don't think it will work. It'll fail over in >> RPC where expectation is that there is a null/default constructor on >> every Writable. >> St.Ack >> >> On Fri, Jul 22, 2011 at 9:24 PM, Ted Yu <[email protected]> wrote: >> > My proposal below would make default HTableDescriptor ctor package >> private. >> > >> > If there is no object, I will log a new JIRA. >> > >> > On Fri, Jul 22, 2011 at 4:27 PM, Ted Yu (JIRA) <[email protected]> wrote: >> > >> >> >> >> [ >> >> >> https://issues.apache.org/jira/browse/HBASE-4127?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13069840#comment-13069840 >> ] >> >> >> >> Ted Yu commented on HBASE-4127: >> >> ------------------------------- >> >> >> >> +1 on the patch. >> >> >> >> Long term, we should hide this ctor, HTableDescriptor(). >> >> Its existence is to support the following pattern: >> >> {code} >> >> hTableDescriptor = new HTableDescriptor(); >> >> hTableDescriptor.readFields(fsDataInputStream); >> >> {code} >> >> I think we should replace this ctor with the following: >> >> {code} >> >> public HTableDescriptor getTableDescriptor(DataInputStream >> dataInputStream) >> >> {code} >> >> >> >> > HBaseAdmin : Don't modify table's name away >> >> > ------------------------------------------- >> >> > >> >> > Key: HBASE-4127 >> >> > URL: https://issues.apache.org/jira/browse/HBASE-4127 >> >> > Project: HBase >> >> > Issue Type: Bug >> >> > Components: client, master >> >> > Affects Versions: 0.92.0 >> >> > Reporter: Nicolas Spiegelberg >> >> > Assignee: Nicolas Spiegelberg >> >> > Priority: Blocker >> >> > Attachments: HBASE-4127.patch >> >> > >> >> > >> >> > One of the developers was using the default constructor for >> >> HTableDescriptor, which is sadly a bad constructor that should never be >> >> used. It made the tablename empty in META & caused an ERROR cycle as >> region >> >> onlining kept failing. We should have never let this happen. Don't do >> table >> >> modifications if the HTableDescriptor name doesn't match the table name >> >> passed in. >> >> >> >> -- >> >> This message is automatically generated by JIRA. >> >> For more information on JIRA, see: >> http://www.atlassian.com/software/jira >> >> >> >> >> >> >> > >> >
