View Javadoc

1   /**
2     *
3     * Licensed to the Apache Software Foundation (ASF) under one
4     * or more contributor license agreements.  See the NOTICE file
5     * distributed with this work for additional information
6     * regarding copyright ownership.  The ASF licenses this file
7     * to you under the Apache License, Version 2.0 (the
8     * "License"); you may not use this file except in compliance
9     * with the License.  You may obtain a copy of the License at
10    *
11    *     http://www.apache.org/licenses/LICENSE-2.0
12    *
13    * Unless required by applicable law or agreed to in writing, software
14    * distributed under the License is distributed on an "AS IS" BASIS,
15    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16    * See the License for the specific language governing permissions and
17    * limitations under the License.
18  */
19  
20  package org.apache.hadoop.hbase.exceptions;
21  
22  import java.net.ConnectException;
23  
24  import org.apache.hadoop.hbase.classification.InterfaceAudience;
25  import org.apache.hadoop.hbase.classification.InterfaceStability;
26  import org.apache.hadoop.hbase.ServerName;
27  
28  /**
29   * Thrown when the client believes that we are trying to communicate to has
30   * been repeatedly unresponsive for a while.
31   *
32   * On receiving such an exception. The HConnectionManager will skip all
33   * retries and fast fail the operation.
34   */
35   @InterfaceAudience.Public
36   @InterfaceStability.Evolving
37   public class PreemptiveFastFailException extends ConnectException {
38     private static final long serialVersionUID = 7129103682617007177L;
39     private long failureCount, timeOfFirstFailureMilliSec, timeOfLatestAttemptMilliSec;
40  
41     /**
42      * @param count
43      * @param timeOfFirstFailureMilliSec
44      * @param timeOfLatestAttemptMilliSec
45      * @param serverName
46      */
47     public PreemptiveFastFailException(long count, long timeOfFirstFailureMilliSec,
48         long timeOfLatestAttemptMilliSec, ServerName serverName) {
49       super("Exception happened " + count + " times. to" + serverName);
50       this.failureCount = count;
51       this.timeOfFirstFailureMilliSec = timeOfFirstFailureMilliSec;
52       this.timeOfLatestAttemptMilliSec = timeOfLatestAttemptMilliSec;
53     }
54  
55     public long getFirstFailureAt() {
56       return timeOfFirstFailureMilliSec;
57     }
58  
59     public long getLastAttemptAt() {
60       return timeOfLatestAttemptMilliSec;
61     }
62  
63     public long getFailureCount() {
64       return failureCount;
65     }
66  
67     public boolean wasOperationAttemptedByServer() {
68       return false;
69     }
70   }