001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.apache.hadoop.hbase; 019 020import org.apache.yetus.audience.InterfaceAudience; 021 022/** 023 * Base class for exceptions thrown by an HBase server. May contain extra info about the state of 024 * the server when the exception was thrown. 025 */ 026@InterfaceAudience.Public 027public class HBaseServerException extends HBaseIOException { 028 private boolean serverOverloaded; 029 030 public HBaseServerException() { 031 this(false); 032 } 033 034 public HBaseServerException(String message) { 035 this(false, message); 036 } 037 038 public HBaseServerException(boolean serverOverloaded) { 039 this.serverOverloaded = serverOverloaded; 040 } 041 042 public HBaseServerException(boolean serverOverloaded, String message) { 043 super(message); 044 this.serverOverloaded = serverOverloaded; 045 } 046 047 /** Returns True if the server was considered overloaded when the exception was thrown */ 048 public static boolean isServerOverloaded(Throwable t) { 049 if (t instanceof HBaseServerException) { 050 return ((HBaseServerException) t).isServerOverloaded(); 051 } 052 return false; 053 } 054 055 /** 056 * Necessary for parsing RemoteException on client side 057 * @param serverOverloaded True if server was overloaded when exception was thrown 058 */ 059 public void setServerOverloaded(boolean serverOverloaded) { 060 this.serverOverloaded = serverOverloaded; 061 } 062 063 /** Returns True if server was considered overloaded when exception was thrown */ 064 public boolean isServerOverloaded() { 065 return serverOverloaded; 066 } 067}