HBASE-3762 HTableFactory.releaseHTableInterface() should throw IOException not wrap in RTE

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1091165 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Gary Helmling 2011-04-11 18:39:42 +00:00
parent 9fe4b7c5bc
commit a7f8453d50
6 changed files with 71 additions and 19 deletions

View File

@ -6,6 +6,8 @@ Release 0.91.0 - Unreleased
changes at runtime (Gary Helmling via Andrew Purtell)
HBASE-3677 Generate a globally unique cluster ID (changed
ClusterStatus serialization)
HBASE-3762 HTableFactory.releaseHTableInterface() should throw IOException
instead of wrapping in RuntimeException (Ted Yu via garyh)
BUG FIXES
HBASE-3280 YouAreDeadException being swallowed in HRS getMaster

View File

@ -401,7 +401,13 @@ public class AvroServer {
ioe.message = new Utf8(e.getMessage());
throw ioe;
} finally {
htablePool.putTable(htable);
try {
htablePool.putTable(htable);
} catch (IOException e) {
AIOError ioe = new AIOError();
ioe.message = new Utf8(e.getMessage());
throw ioe;
}
}
}
@ -414,7 +420,13 @@ public class AvroServer {
ioe.message = new Utf8(e.getMessage());
throw ioe;
} finally {
htablePool.putTable(htable);
try {
htablePool.putTable(htable);
} catch (IOException e) {
AIOError ioe = new AIOError();
ioe.message = new Utf8(e.getMessage());
throw ioe;
}
}
}
@ -428,7 +440,13 @@ public class AvroServer {
ioe.message = new Utf8(e.getMessage());
throw ioe;
} finally {
htablePool.putTable(htable);
try {
htablePool.putTable(htable);
} catch (IOException e) {
AIOError ioe = new AIOError();
ioe.message = new Utf8(e.getMessage());
throw ioe;
}
}
}
@ -442,7 +460,13 @@ public class AvroServer {
ioe.message = new Utf8(e.getMessage());
throw ioe;
} finally {
htablePool.putTable(htable);
try {
htablePool.putTable(htable);
} catch (IOException e) {
AIOError ioe = new AIOError();
ioe.message = new Utf8(e.getMessage());
throw ioe;
}
}
}
@ -455,7 +479,13 @@ public class AvroServer {
ioe.message = new Utf8(e.getMessage());
throw ioe;
} finally {
htablePool.putTable(htable);
try {
htablePool.putTable(htable);
} catch (IOException e) {
AIOError ioe = new AIOError();
ioe.message = new Utf8(e.getMessage());
throw ioe;
}
}
}
@ -473,7 +503,13 @@ public class AvroServer {
ioe.message = new Utf8(e.getMessage());
throw ioe;
} finally {
htablePool.putTable(htable);
try {
htablePool.putTable(htable);
} catch (IOException e) {
AIOError ioe = new AIOError();
ioe.message = new Utf8(e.getMessage());
throw ioe;
}
}
}

View File

@ -40,11 +40,7 @@ public class HTableFactory implements HTableInterfaceFactory {
}
@Override
public void releaseHTableInterface(HTableInterface table) {
try {
table.close();
} catch (IOException ioe) {
throw new RuntimeException(ioe);
}
public void releaseHTableInterface(HTableInterface table) throws IOException {
table.close();
}
}

View File

@ -19,6 +19,8 @@
*/
package org.apache.hadoop.hbase.client;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
@ -43,5 +45,5 @@ public interface HTableInterfaceFactory {
* Release the HTable resource represented by the table.
* @param table
*/
void releaseHTableInterface(final HTableInterface table);
void releaseHTableInterface(final HTableInterface table) throws IOException;
}

View File

@ -19,6 +19,7 @@
*/
package org.apache.hadoop.hbase.client;
import java.io.IOException;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.ConcurrentHashMap;
@ -114,7 +115,7 @@ public class HTablePool {
* then the table instance gets closed after flushing buffered edits.
* @param table table
*/
public void putTable(HTableInterface table) {
public void putTable(HTableInterface table) throws IOException {
Queue<HTableInterface> queue = tables.get(Bytes.toString(table.getTableName()));
if(queue.size() >= maxSize) {
// release table instance since we're not reusing it
@ -137,7 +138,7 @@ public class HTablePool {
*
* @param tableName
*/
public void closeTablePool(final String tableName) {
public void closeTablePool(final String tableName) throws IOException {
Queue<HTableInterface> queue = tables.get(tableName);
if (queue != null) {
HTableInterface table = queue.poll();
@ -154,7 +155,7 @@ public class HTablePool {
*
* @param tableName
*/
public void closeTablePool(final byte[] tableName) {
public void closeTablePool(final byte[] tableName) throws IOException {
closeTablePool(Bytes.toString(tableName));
}

View File

@ -189,7 +189,12 @@ public class RowResource extends ResourceBase {
Response.Status.SERVICE_UNAVAILABLE);
} finally {
if (table != null) {
pool.putTable(table);
try {
pool.putTable(table);
} catch (IOException ioe) {
throw new WebApplicationException(ioe,
Response.Status.SERVICE_UNAVAILABLE);
}
}
}
}
@ -248,7 +253,12 @@ public class RowResource extends ResourceBase {
Response.Status.SERVICE_UNAVAILABLE);
} finally {
if (table != null) {
pool.putTable(table);
try {
pool.putTable(table);
} catch (IOException ioe) {
throw new WebApplicationException(ioe,
Response.Status.SERVICE_UNAVAILABLE);
}
}
}
}
@ -337,7 +347,12 @@ public class RowResource extends ResourceBase {
Response.Status.SERVICE_UNAVAILABLE);
} finally {
if (table != null) {
pool.putTable(table);
try {
pool.putTable(table);
} catch (IOException ioe) {
throw new WebApplicationException(ioe,
Response.Status.SERVICE_UNAVAILABLE);
}
}
}
return Response.ok().build();