/** * Throws an exception if the argument is non-zero. */ static void ensureNoCell(final int cell_size) { if (cell_size != 0) { throw new InvalidResponseException( "Should not have gotten any cell blocks, yet there are " + cell_size + " bytes that follow the protobuf response." + " This should never happen." + " Are you using an incompatible version of HBase?", null); } }
public Object call(final Object response) { if (response == null) { return null; } else if (response instanceof KeyValue) { return (KeyValue)response; } else if (response instanceof MultiAction.MultiActionSuccess) { return null; } else { throw new InvalidResponseException(KeyValue.class, response); } }
public Object call(final Object response) { if (response instanceof Scanner.Response) { // HBase 0.95 and up return (Scanner.Response) response; } else if (response instanceof Long) { // HBase 0.94 and before: we expect just a long (the scanner ID). return (Long) response; } else { throw new InvalidResponseException(Long.class, response); } } public String toString() {
public Long call(final Object response) { if (response instanceof Long) { return (Long) response; } else { throw new InvalidResponseException(Long.class, response); } } public String toString() {
public Boolean call(final Object response) { if (response instanceof Boolean) { return (Boolean)response; } else { throw new InvalidResponseException(Boolean.class, response); } }
public ArrayList<KeyValue> call(final Object response) { if (response instanceof ArrayList) { @SuppressWarnings("unchecked") final ArrayList<KeyValue> row = (ArrayList<KeyValue>) response; return row; } else { throw new InvalidResponseException(ArrayList.class, response); } } public String toString() {
public Map<byte[], Long> call(final Object response) { if (response instanceof Map) { return (Map<byte[], Long>) response; } else { throw new InvalidResponseException(Long.class, response); } } public String toString() {
public ArrayList<KeyValue> call(final Object response) { if (response == null) { // No result. return new ArrayList<KeyValue>(0); } else if (response instanceof ArrayList) { @SuppressWarnings("unchecked") final ArrayList<KeyValue> row = (ArrayList<KeyValue>) response; return row; } else { throw new InvalidResponseException(ArrayList.class, response); } } public String toString() {
/** Throws an exception with the given error message. */ private static void badResponse(final String errmsg) { LOG.error(errmsg); throw new InvalidResponseException(errmsg, null); }
throw (Exception) response; // just re-throw it as-is. throw new InvalidResponseException(Long.class, response); throw new InvalidResponseException("getProtocolVersion returned a " + (v <= 0 ? "negative" : "too large") + " value", version);
public GetResultOrException call(final Object response) { if (response instanceof ArrayList) { @SuppressWarnings("unchecked") final ArrayList<KeyValue> row = (ArrayList<KeyValue>) response; return new GetResultOrException(row); } else if (response instanceof Exception) { Exception e = (Exception) (response); return new GetResultOrException(e); } else { return new GetResultOrException(new InvalidResponseException(ArrayList.class, response)); } }
public Object call(final Object response) { ArrayList<ArrayList<KeyValue>> rows = null; Response resp = null; if (response instanceof Response) { // HBase 0.95 and up resp = (Response) response; rows = resp.rows; scannerClosedOnServer = resp.scannerClosedOnServer; moreRows = resp.more; } else if (response instanceof ArrayList) { // HBase 0.94 and before. @SuppressWarnings("unchecked") // I 3>> generics. final ArrayList<ArrayList<KeyValue>> r = (ArrayList<ArrayList<KeyValue>>) response; rows = r; } else if (response != null) { throw new InvalidResponseException(ArrayList.class, response); } if (rows == null) { // We're done scanning this region. return scanFinished(resp != null && !resp.more); } final ArrayList<KeyValue> lastrow = rows.get(rows.size() - 1); start_key = lastrow.get(0).key(); return rows; } public String toString() {
@Override Object deserialize(final ChannelBuffer buf, int cell_size) { final MutateResponse resp = readProtobuf(buf, MutateResponse.PARSER); // An increment must always produce a result, so we shouldn't need to // check whether the `result' field is set here. final ArrayList<KeyValue> kvs = GetRequest.convertResult(resp.getResult(), buf, cell_size); if (kvs.size() != 1) { throw new InvalidResponseException("Atomic increment returned " + kvs.size() + " KeyValue(s), but we expected exactly one. kvs=" + kvs, resp); } return Bytes.getLong(kvs.get(0).value()); }
public RowLock call(final Object response) { if (response instanceof Long) { return new RowLock(request.getRegion().name(), (Long) response); } else { throw new InvalidResponseException(Long.class, response); } } public String toString() {
@Override Object deserialize(ChannelBuffer buf, int cell_size) { if (!this.return_result) { HBaseRpc.ensureNoCell(cell_size); } final ClientPB.MutateResponse resp = readProtobuf(buf, ClientPB.MutateResponse.PARSER); final ClientPB.Result result = resp.getResult(); if (this.return_result) { final ArrayList<KeyValue> kvs = GetRequest.convertResult(result, buf, cell_size); if (kvs.size() != 1) { throw new InvalidResponseException("Atomic increment returned " + kvs.size() + " KeyValue(s), but we expected exactly one. kvs=" + kvs, resp); } return kvs.get(0); } else { return null; } } }
@Override Boolean deserialize(final ChannelBuffer buf, final int cell_size) { HBaseRpc.ensureNoCell(cell_size); final MutateResponse resp = readProtobuf(buf, MutateResponse.PARSER); if (!resp.hasProcessed()) { throw new InvalidResponseException( "After a CAS on " + put + ", the protobuf in the response didn't " + "contain the field indicating whether the CAS was successful or not", resp); } return resp.getProcessed(); }
return deserializeObject(buf, rpc); } catch (IllegalArgumentException e) { // The RPC didn't look good to us. return new InvalidResponseException(e.getMessage(), e);
@Override Response deserialize(final ChannelBuffer buf, final int cell_size) { final ScanResponse resp = readProtobuf(buf, ScanResponse.PARSER); if (!resp.hasScannerId()) { throw new InvalidResponseException("Scan RPC response doesn't contain a" + " scanner ID", resp); } final boolean scannerClosedOnServer = resp.hasMoreResultsInRegion() && !resp.getMoreResultsInRegion(); return new Response(resp.getScannerId(), getRows(resp, buf, cell_size), resp.getMoreResults(), scannerClosedOnServer); }
@Override Response deserialize(final ChannelBuffer buf, final int cell_size) { final ScanResponse resp = readProtobuf(buf, ScanResponse.PARSER); final long id = resp.getScannerId(); if (scanner_id != id) { throw new InvalidResponseException("Scan RPC response was for scanner" + " ID " + id + " but we expected" + scanner_id, resp); } final ArrayList<ArrayList<KeyValue>> rows = getRows(resp, buf, cell_size); if (rows == null) { return null; } final boolean scannerClosedOnServer = resp.hasMoreResultsInRegion() && !resp.getMoreResultsInRegion(); return new Response(resp.getScannerId(), rows, resp.getMoreResults(), scannerClosedOnServer); }
+ ", payload=" + Bytes.pretty(payload); LOG.error("Invalid RPC from buffer: " + buf); throw new InvalidResponseException(msg, e);