You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by stack <st...@duboce.net> on 2008/04/30 02:25:36 UTC
Re: svn commit: r652185 - in /hadoop/hbase/trunk: CHANGES.txt src/java/org/apache/hadoop/hbase/client/HTable.java
src/java/org/apache/hadoop/hbase/client/RetriesExhaustedException.java
Any chance of getting the address of the server that threw the exception
into the message?
Helps debugging.
St.Ack
bryanduxbury@apache.org wrote:
> Author: bryanduxbury
> Date: Tue Apr 29 16:03:20 2008
> New Revision: 652185
>
> URL: http://svn.apache.org/viewvc?rev=652185&view=rev
> Log:
> HBASE-603 When an exception bubbles out of getRegionServerWithRetries, wrap the exception with a RetriesExhaustedException
> -Added RetriesExhaustedException to client package
> -HTable now throws REE when retries run out
>
> Added:
> hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/RetriesExhaustedException.java
> Modified:
> hadoop/hbase/trunk/CHANGES.txt
> hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/HTable.java
>
> Modified: hadoop/hbase/trunk/CHANGES.txt
> URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=652185&r1=652184&r2=652185&view=diff
> ==============================================================================
> --- hadoop/hbase/trunk/CHANGES.txt (original)
> +++ hadoop/hbase/trunk/CHANGES.txt Tue Apr 29 16:03:20 2008
> @@ -30,6 +30,8 @@
> HBASE-596 DemoClient.py (Ivan Begtin via Stack)
> HBASE-581 Allow adding filters to TableInputFormat (At same time, ensure TIF
> is subclassable) (David Alves via Stack)
> + HBASE-603 When an exception bubbles out of getRegionServerWithRetries, wrap
> + the exception with a RetriesExhaustedException
>
> Release 0.1.1 - 04/11/2008
>
>
> Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/HTable.java
> URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/HTable.java?rev=652185&r1=652184&r2=652185&view=diff
> ==============================================================================
> --- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/HTable.java (original)
> +++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/HTable.java Tue Apr 29 16:03:20 2008
> @@ -835,7 +835,7 @@
> */
> protected <T> T getRegionServerWithRetries(ServerCallable<T> callable)
> throws IOException, RuntimeException {
> - List<IOException> exceptions = new ArrayList<IOException>();
> + List<Exception> exceptions = new ArrayList<Exception>();
> for(int tries = 0; tries < numRetries; tries++) {
> try {
> callable.instantiateServer(tries != 0);
> @@ -845,20 +845,10 @@
> e = RemoteExceptionHandler.decodeRemoteException((RemoteException) e);
> }
> if (tries == numRetries - 1) {
> - if (LOG.isDebugEnabled()) {
> - String message = "Trying to contact region server for row '" +
> - callable.row + "', but failed after " + (tries + 1) +
> - " attempts.\n";
> - int i = 1;
> - for (IOException e2 : exceptions) {
> - message = message + "Exception " + i++ + ":\n" + e2;
> - }
> - LOG.debug(message);
> - }
> - throw e;
> + throw new RetriesExhaustedException(callable.row, tries, exceptions);
> }
> + exceptions.add(e);
> if (LOG.isDebugEnabled()) {
> - exceptions.add(e);
> LOG.debug("reloading table servers because: " + e.getMessage());
> }
> } catch (Exception e) {
>
> Added: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/RetriesExhaustedException.java
> URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/RetriesExhaustedException.java?rev=652185&view=auto
> ==============================================================================
> --- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/RetriesExhaustedException.java (added)
> +++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/client/RetriesExhaustedException.java Tue Apr 29 16:03:20 2008
> @@ -0,0 +1,48 @@
> +/**
> + * Copyright 2008 The Apache Software Foundation
> + *
> + * Licensed under the Apache License, Version 2.0 (the "License");
> + * you may not use this file except in compliance with the License.
> + * You may obtain a copy of the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +package org.apache.hadoop.hbase.client;
> +
> +import java.io.IOException;
> +import java.util.List;
> +import org.apache.hadoop.io.Text;
> +
> +/**
> + * Exception thrown by HTable methods when an attempt to do something (like
> + * commit changes) fails after a bunch of retries.
> + */
> +public class RetriesExhaustedException extends IOException {
> + /**
> + * Create a new RetriesExhaustedException from the list of prior failures.
> + * @param row The row we were pursuing when we ran out of retries
> + * @param numTries The number of tries we made
> + * @param exceptions List of exceptions that failed before giving up
> + */
> + public RetriesExhaustedException(Text row, int numTries,
> + List<Exception> exceptions) {
> + super(getMessage(row, numTries, exceptions));
> + }
> +
> + private static String getMessage(Text row, int numTries,
> + List<Exception> exceptions) {
> + String buffer = "Trying to contact region server for row '" +
> + row + "', but failed after " + (numTries + 1) + " attempts.\nExceptions:\n";
> +
> + for (Exception e : exceptions) {
> + buffer += e.toString() + "\n";
> + }
> + return buffer;
> + }
> +}
> \ No newline at end of file
>
>
>