1 /** 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 package org.apache.hadoop.hbase.errorhandling; 19 20 import org.apache.hadoop.hbase.classification.InterfaceAudience; 21 import org.apache.hadoop.hbase.classification.InterfaceStability; 22 23 /** 24 * Exception for timeout of a task. 25 * @see TimeoutExceptionInjector 26 */ 27 @InterfaceAudience.Public 28 @InterfaceStability.Evolving 29 @SuppressWarnings("serial") 30 public class TimeoutException extends Exception { 31 32 private final String sourceName; 33 private final long start; 34 private final long end; 35 private final long expected; 36 37 /** 38 * Exception indicating that an operation attempt has timed out 39 * @param start time the operation started (ms since epoch) 40 * @param end time the timeout was triggered (ms since epoch) 41 * @param expected expected amount of time for the operation to complete (ms) 42 * (ideally, expected <= end-start) 43 */ 44 public TimeoutException(String sourceName, long start, long end, long expected) { 45 super("Timeout elapsed! Source:" + sourceName + " Start:" + start + ", End:" + end 46 + ", diff:" + (end - start) + ", max:" + expected + " ms"); 47 this.sourceName = sourceName; 48 this.start = start; 49 this.end = end; 50 this.expected = expected; 51 } 52 53 public long getStart() { 54 return start; 55 } 56 57 public long getEnd() { 58 return end; 59 } 60 61 public long getMaxAllowedOperationTime() { 62 return expected; 63 } 64 65 public String getSourceName() { 66 return sourceName; 67 } 68 }