[ https://issues.apache.org/jira/browse/HADOOP-2261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12545690 ]
Jim Kellerman commented on HADOOP-2261: --------------------------------------- Changing abort(long) so that it only throws an exception if: - the table does not exist - the HTable is closed - there is an outstanding update and the lockid passed in does not match the lockid of the update. otherwise, it will just clean up and return. > [hbase] Change abort to finalize; does nothing if commit ran successfully > ------------------------------------------------------------------------- > > Key: HADOOP-2261 > URL: https://issues.apache.org/jira/browse/HADOOP-2261 > Project: Hadoop > Issue Type: Improvement > Components: contrib/hbase > Reporter: stack > Assignee: Jim Kellerman > > From Michael Bieniosek: > {code}I'm trying to do an update row, so I write code like: > long lockid = table.startUpdate(new Text(article.getName())); try { > for (File articleInfo: article.listFiles(new NonDirectories())) { > articleTable.put(lockid, columnName(articleInfo.getName()), > readFile(articleInfo)); } > table.commit(lockid); > } finally { > table.abort(lockid); > } > This doesn't work, because in the normal case it calls abort after commit. > But I'm not sure what the code should be, eg.: > long lockid = table.startUpdate(new Text(article.getName())); try { > for (File articleInfo: article.listFiles(new NonDirectories())) { > articleTable.put(lockid, columnName(articleInfo.getName()), > readFile(articleInfo)); } > table.commit(lockid); > } catch (IOException e) { > table.abort(lockid); > throw e; > } catch (RuntimeException e) { > table.abort(lockid); > throw e; > } > This gets unwieldy very quickly. Could you maybe change abort() to > finalize() which either aborts or does nothing if a commit was successful? > {code} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.