[
https://issues.apache.org/jira/browse/HADOOP-2261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12546085
]
Jim Kellerman commented on HADOOP-2261:
---------------------------------------
Since HADOOP-2139 phase 1, abort may be called without throwing an exception if
no update is in progress. So if you want to do:
{code}
long lockid = table.startUpdate(....);
try {
table.put(...);
table.delete(...);
table.commit(...)
} finally {
table.abort(lockid);
}
{code}
This will work just fine. The only restriction is that the lockid match the one
returned from startUpdate()
I have updated the Javadoc for HTable to reflect this. When it is committed,
hopefully this will be clearer.
> [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
> Fix For: 0.16.0
>
> Attachments: patch.txt
>
>
> 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.