@Override public RegionStoreSequenceIds getLastSequenceId(byte[] encodedRegionName) { try { GetLastFlushedSequenceIdRequest req = RequestConverter.buildGetLastFlushedSequenceIdRequest(encodedRegionName); RegionServerStatusService.BlockingInterface rss = rssStub; if (rss == null) { // Try to connect one more time createRegionServerStatusStub(); rss = rssStub; if (rss == null) { // Still no luck, we tried LOG.warn("Unable to connect to the master to check " + "the last flushed sequence id"); return RegionStoreSequenceIds.newBuilder().setLastFlushedSequenceId(HConstants.NO_SEQNUM) .build(); } } GetLastFlushedSequenceIdResponse resp = rss.getLastFlushedSequenceId(null, req); return RegionStoreSequenceIds.newBuilder() .setLastFlushedSequenceId(resp.getLastFlushedSequenceId()) .addAllStoreSequenceId(resp.getStoreLastFlushedSequenceIdList()).build(); } catch (ServiceException e) { LOG.warn("Unable to connect to the master to check the last flushed sequence id", e); return RegionStoreSequenceIds.newBuilder().setLastFlushedSequenceId(HConstants.NO_SEQNUM) .build(); } }
@Test public void testFlushedSequenceIdsSentToHMaster() throws IOException, InterruptedException, ServiceException { SortedMap<byte[], Long> allFlushedSequenceIds = new TreeMap<byte[], Long>(Bytes.BYTES_COMPARATOR); for (int i = 0; i < NUM_RS; ++i) { flushAllRegions(i); } Thread.sleep(10000); HMaster master = TEST_UTIL.getMiniHBaseCluster().getMaster(); for (int i = 0; i < NUM_RS; ++i) { for (byte[] regionName : getRegionsByServer(i)) { if (allFlushedSequenceIds.containsKey(regionName)) { GetLastFlushedSequenceIdRequest req = RequestConverter.buildGetLastFlushedSequenceIdRequest(regionName); assertEquals((long)allFlushedSequenceIds.get(regionName), master.getMasterRpcServices().getLastFlushedSequenceId( null, req).getLastFlushedSequenceId()); } } } }
@Override public long getLastSequenceId(byte[] encodedRegionName) { long lastFlushedSequenceId = -1L; try { GetLastFlushedSequenceIdRequest req = RequestConverter .buildGetLastFlushedSequenceIdRequest(encodedRegionName); RegionServerStatusService.BlockingInterface rss = rssStub; if (rss == null) { // Try to connect one more time createRegionServerStatusStub(); rss = rssStub; if (rss == null) { // Still no luck, we tried LOG.warn("Unable to connect to the master to check " + "the last flushed sequence id"); return -1L; } } lastFlushedSequenceId = rss.getLastFlushedSequenceId(null, req) .getLastFlushedSequenceId(); } catch (ServiceException e) { lastFlushedSequenceId = -1l; LOG.warn("Unable to connect to the master to check " + "the last flushed sequence id", e); } return lastFlushedSequenceId; }
@Test public void testFlushedSequenceIdsSentToHMaster() throws IOException, InterruptedException, ServiceException { SortedMap<byte[], Long> allFlushedSequenceIds = new TreeMap<byte[], Long>(Bytes.BYTES_COMPARATOR); for (int i = 0; i < NUM_RS; ++i) { flushAllRegions(i); } Thread.sleep(10000); HMaster master = TEST_UTIL.getMiniHBaseCluster().getMaster(); for (int i = 0; i < NUM_RS; ++i) { for (byte[] regionName : getRegionsByServer(i)) { if (allFlushedSequenceIds.containsKey(regionName)) { GetLastFlushedSequenceIdRequest req = RequestConverter.buildGetLastFlushedSequenceIdRequest(regionName); assertEquals((long)allFlushedSequenceIds.get(regionName), master.getLastFlushedSequenceId(null, req).getLastFlushedSequenceId()); } } } }
@Override @QosPriority(priority = HConstants.ADMIN_QOS) public GetLastFlushedSequenceIdResponse getLastFlushedSequenceId(RpcController controller, GetLastFlushedSequenceIdRequest request) throws ServiceException { try { master.checkServiceStarted(); } catch (IOException ioe) { throw new ServiceException(ioe); } byte[] encodedRegionName = request.getRegionName().toByteArray(); RegionStoreSequenceIds ids = master.serverManager.getLastFlushedSequenceId(encodedRegionName); return ResponseConverter.buildGetLastFlushedSequenceIdResponse(ids); }
@Override public GetLastFlushedSequenceIdResponse getLastFlushedSequenceId(RpcController controller, GetLastFlushedSequenceIdRequest request) throws ServiceException { try { master.checkServiceStarted(); } catch (IOException ioe) { throw new ServiceException(ioe); } byte[] encodedRegionName = request.getRegionName().toByteArray(); long seqId = master.serverManager.getLastFlushedSequenceId(encodedRegionName); return ResponseConverter.buildGetLastFlushedSequenceIdResponse(seqId); }
@Override public GetLastFlushedSequenceIdResponse getLastFlushedSequenceId(RpcController controller, GetLastFlushedSequenceIdRequest request) throws ServiceException { byte[] regionName = request.getRegionName().toByteArray(); long seqId = serverManager.getLastFlushedSequenceId(regionName); return ResponseConverter.buildGetLastFlushedSequenceIdResponse(seqId); }
@Override public long getLastSequenceId(byte[] region) { Long lastFlushedSequenceId = -1l; try { GetLastFlushedSequenceIdRequest req = RequestConverter .buildGetLastFlushedSequenceIdRequest(region); lastFlushedSequenceId = rssStub.getLastFlushedSequenceId(null, req) .getLastFlushedSequenceId(); } catch (ServiceException e) { lastFlushedSequenceId = -1l; LOG.warn("Unable to connect to the master to check " + "the last flushed sequence id", e); } return lastFlushedSequenceId; }
@Override public GetLastFlushedSequenceIdResponse getLastFlushedSequenceId(RpcController controller, GetLastFlushedSequenceIdRequest request) throws ServiceException { try { master.checkServiceStarted(); } catch (IOException ioe) { throw new ServiceException(ioe); } byte[] regionName = request.getRegionName().toByteArray(); long seqId = master.serverManager.getLastFlushedSequenceId(regionName); return ResponseConverter.buildGetLastFlushedSequenceIdResponse(seqId); }
@Override public long getLastSequenceId(byte[] region) { Long lastFlushedSequenceId = -1l; try { GetLastFlushedSequenceIdRequest req = RequestConverter.buildGetLastFlushedSequenceIdRequest(region); lastFlushedSequenceId = hbaseMaster.getLastFlushedSequenceId(null, req) .getLastFlushedSequenceId(); } catch (ServiceException e) { lastFlushedSequenceId = -1l; LOG.warn("Unable to connect to the master to check " + "the last flushed sequence id", e); } return lastFlushedSequenceId; }
/** * Creates a request for querying the master the last flushed sequence Id for a region * @param regionName * @return A {@link GetLastFlushedSequenceIdRequest} */ public static GetLastFlushedSequenceIdRequest buildGetLastFlushedSequenceIdRequest( byte[] regionName) { return GetLastFlushedSequenceIdRequest.newBuilder().setRegionName( ByteStringer.wrap(regionName)).build(); }
/** * Creates a request for querying the master the last flushed sequence Id for a region * @param regionName * @return A {@link GetLastFlushedSequenceIdRequest} */ public static GetLastFlushedSequenceIdRequest buildGetLastFlushedSequenceIdRequest( byte[] regionName) { return GetLastFlushedSequenceIdRequest.newBuilder().setRegionName( HBaseZeroCopyByteString.wrap(regionName)).build(); }
/** * Creates a request for querying the master the last flushed sequence Id for a region * @param regionName * @return A {@link GetLastFlushedSequenceIdRequest} */ public static GetLastFlushedSequenceIdRequest buildGetLastFlushedSequenceIdRequest( byte[] regionName) { return GetLastFlushedSequenceIdRequest.newBuilder().setRegionName( ZeroCopyLiteralByteString.wrap(regionName)).build(); }
/** * Creates a request for querying the master the last flushed sequence Id for a region * @param regionName * @return A {@link GetLastFlushedSequenceIdRequest} */ public static GetLastFlushedSequenceIdRequest buildGetLastFlushedSequenceIdRequest( byte[] regionName) { return GetLastFlushedSequenceIdRequest.newBuilder().setRegionName( ByteString.copyFrom(regionName)).build(); }