http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html index bba0c5e..145330c 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html @@ -2337,128 +2337,127 @@ <span class="sourceLineNo">2329</span> @Override<a name="line.2329"></a> <span class="sourceLineNo">2330</span> public GetTableStateResponse setTableStateInMeta(RpcController controller,<a name="line.2330"></a> <span class="sourceLineNo">2331</span> SetTableStateInMetaRequest request) throws ServiceException {<a name="line.2331"></a> -<span class="sourceLineNo">2332</span> Connection conn = master.getConnection();<a name="line.2332"></a> -<span class="sourceLineNo">2333</span> TableName tn = ProtobufUtil.toTableName(request.getTableName());<a name="line.2333"></a> -<span class="sourceLineNo">2334</span><a name="line.2334"></a> -<span class="sourceLineNo">2335</span> try {<a name="line.2335"></a> -<span class="sourceLineNo">2336</span> HBaseProtos.TableState prevState = MetaTableAccessor.getTableState(conn, tn).convert();<a name="line.2336"></a> -<span class="sourceLineNo">2337</span> MetaTableAccessor.updateTableState(conn, tn,<a name="line.2337"></a> -<span class="sourceLineNo">2338</span> TableState.convert(tn, request.getTableState()).getState());<a name="line.2338"></a> -<span class="sourceLineNo">2339</span> return GetTableStateResponse.newBuilder().setTableState(prevState).build();<a name="line.2339"></a> -<span class="sourceLineNo">2340</span> } catch (Exception e) {<a name="line.2340"></a> -<span class="sourceLineNo">2341</span> throw new ServiceException(e);<a name="line.2341"></a> -<span class="sourceLineNo">2342</span> }<a name="line.2342"></a> -<span class="sourceLineNo">2343</span> }<a name="line.2343"></a> -<span class="sourceLineNo">2344</span><a name="line.2344"></a> -<span class="sourceLineNo">2345</span> /**<a name="line.2345"></a> -<span class="sourceLineNo">2346</span> * Get RegionInfo from Master using content of RegionSpecifier as key.<a name="line.2346"></a> -<span class="sourceLineNo">2347</span> * @return RegionInfo found by decoding <code>rs</code> or null if none found<a name="line.2347"></a> -<span class="sourceLineNo">2348</span> */<a name="line.2348"></a> -<span class="sourceLineNo">2349</span> private RegionInfo getRegionInfo(HBaseProtos.RegionSpecifier rs) throws UnknownRegionException {<a name="line.2349"></a> -<span class="sourceLineNo">2350</span> RegionInfo ri = null;<a name="line.2350"></a> -<span class="sourceLineNo">2351</span> switch(rs.getType()) {<a name="line.2351"></a> -<span class="sourceLineNo">2352</span> case REGION_NAME:<a name="line.2352"></a> -<span class="sourceLineNo">2353</span> final byte[] regionName = rs.getValue().toByteArray();<a name="line.2353"></a> -<span class="sourceLineNo">2354</span> ri = this.master.getAssignmentManager().getRegionInfo(regionName);<a name="line.2354"></a> -<span class="sourceLineNo">2355</span> break;<a name="line.2355"></a> -<span class="sourceLineNo">2356</span> case ENCODED_REGION_NAME:<a name="line.2356"></a> -<span class="sourceLineNo">2357</span> String encodedRegionName = Bytes.toString(rs.getValue().toByteArray());<a name="line.2357"></a> -<span class="sourceLineNo">2358</span> RegionState regionState = this.master.getAssignmentManager().getRegionStates().<a name="line.2358"></a> -<span class="sourceLineNo">2359</span> getRegionState(encodedRegionName);<a name="line.2359"></a> -<span class="sourceLineNo">2360</span> ri = regionState == null? null: regionState.getRegion();<a name="line.2360"></a> -<span class="sourceLineNo">2361</span> break;<a name="line.2361"></a> -<span class="sourceLineNo">2362</span> default:<a name="line.2362"></a> -<span class="sourceLineNo">2363</span> break;<a name="line.2363"></a> -<span class="sourceLineNo">2364</span> }<a name="line.2364"></a> -<span class="sourceLineNo">2365</span> return ri;<a name="line.2365"></a> -<span class="sourceLineNo">2366</span> }<a name="line.2366"></a> -<span class="sourceLineNo">2367</span><a name="line.2367"></a> -<span class="sourceLineNo">2368</span> /**<a name="line.2368"></a> -<span class="sourceLineNo">2369</span> * A 'raw' version of assign that does bulk and skirts Master state checks (assigns can be made<a name="line.2369"></a> -<span class="sourceLineNo">2370</span> * during Master startup). For use by Hbck2.<a name="line.2370"></a> -<span class="sourceLineNo">2371</span> */<a name="line.2371"></a> -<span class="sourceLineNo">2372</span> @Override<a name="line.2372"></a> -<span class="sourceLineNo">2373</span> public MasterProtos.AssignsResponse assigns(RpcController controller,<a name="line.2373"></a> -<span class="sourceLineNo">2374</span> MasterProtos.AssignsRequest request)<a name="line.2374"></a> -<span class="sourceLineNo">2375</span> throws ServiceException {<a name="line.2375"></a> -<span class="sourceLineNo">2376</span> LOG.info(master.getClientIdAuditPrefix() + " assigns");<a name="line.2376"></a> -<span class="sourceLineNo">2377</span> if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2377"></a> -<span class="sourceLineNo">2378</span> throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2378"></a> -<span class="sourceLineNo">2379</span> }<a name="line.2379"></a> -<span class="sourceLineNo">2380</span> MasterProtos.AssignsResponse.Builder responseBuilder =<a name="line.2380"></a> -<span class="sourceLineNo">2381</span> MasterProtos.AssignsResponse.newBuilder();<a name="line.2381"></a> -<span class="sourceLineNo">2382</span> try {<a name="line.2382"></a> -<span class="sourceLineNo">2383</span> for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2383"></a> -<span class="sourceLineNo">2384</span> // Assign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2384"></a> -<span class="sourceLineNo">2385</span> RegionInfo ri = getRegionInfo(rs);<a name="line.2385"></a> -<span class="sourceLineNo">2386</span> if (ri == null) {<a name="line.2386"></a> -<span class="sourceLineNo">2387</span> LOG.info("Unknown={}", rs);<a name="line.2387"></a> -<span class="sourceLineNo">2388</span> responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2388"></a> -<span class="sourceLineNo">2389</span> continue;<a name="line.2389"></a> -<span class="sourceLineNo">2390</span> }<a name="line.2390"></a> -<span class="sourceLineNo">2391</span> responseBuilder.addPid(this.master.getAssignmentManager().assign(ri));<a name="line.2391"></a> -<span class="sourceLineNo">2392</span> }<a name="line.2392"></a> -<span class="sourceLineNo">2393</span> return responseBuilder.build();<a name="line.2393"></a> -<span class="sourceLineNo">2394</span> } catch (IOException ioe) {<a name="line.2394"></a> -<span class="sourceLineNo">2395</span> throw new ServiceException(ioe);<a name="line.2395"></a> -<span class="sourceLineNo">2396</span> }<a name="line.2396"></a> -<span class="sourceLineNo">2397</span> }<a name="line.2397"></a> -<span class="sourceLineNo">2398</span><a name="line.2398"></a> -<span class="sourceLineNo">2399</span> /**<a name="line.2399"></a> -<span class="sourceLineNo">2400</span> * A 'raw' version of unassign that does bulk and skirts Master state checks (unassigns can be<a name="line.2400"></a> -<span class="sourceLineNo">2401</span> * made during Master startup). For use by Hbck2.<a name="line.2401"></a> -<span class="sourceLineNo">2402</span> */<a name="line.2402"></a> -<span class="sourceLineNo">2403</span> @Override<a name="line.2403"></a> -<span class="sourceLineNo">2404</span> public MasterProtos.UnassignsResponse unassigns(RpcController controller,<a name="line.2404"></a> -<span class="sourceLineNo">2405</span> MasterProtos.UnassignsRequest request)<a name="line.2405"></a> -<span class="sourceLineNo">2406</span> throws ServiceException {<a name="line.2406"></a> -<span class="sourceLineNo">2407</span> LOG.info(master.getClientIdAuditPrefix() + " unassigns");<a name="line.2407"></a> -<span class="sourceLineNo">2408</span> if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2408"></a> -<span class="sourceLineNo">2409</span> throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2409"></a> -<span class="sourceLineNo">2410</span> }<a name="line.2410"></a> -<span class="sourceLineNo">2411</span> MasterProtos.UnassignsResponse.Builder responseBuilder =<a name="line.2411"></a> -<span class="sourceLineNo">2412</span> MasterProtos.UnassignsResponse.newBuilder();<a name="line.2412"></a> -<span class="sourceLineNo">2413</span> try {<a name="line.2413"></a> -<span class="sourceLineNo">2414</span> for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2414"></a> -<span class="sourceLineNo">2415</span> // Unassign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2415"></a> -<span class="sourceLineNo">2416</span> RegionInfo ri = getRegionInfo(rs);<a name="line.2416"></a> -<span class="sourceLineNo">2417</span> if (ri == null) {<a name="line.2417"></a> -<span class="sourceLineNo">2418</span> LOG.info("Unknown={}", rs);<a name="line.2418"></a> -<span class="sourceLineNo">2419</span> responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2419"></a> -<span class="sourceLineNo">2420</span> continue;<a name="line.2420"></a> -<span class="sourceLineNo">2421</span> }<a name="line.2421"></a> -<span class="sourceLineNo">2422</span> responseBuilder.addPid(this.master.getAssignmentManager().unassign(ri));<a name="line.2422"></a> -<span class="sourceLineNo">2423</span> }<a name="line.2423"></a> -<span class="sourceLineNo">2424</span> return responseBuilder.build();<a name="line.2424"></a> -<span class="sourceLineNo">2425</span> } catch (IOException ioe) {<a name="line.2425"></a> -<span class="sourceLineNo">2426</span> throw new ServiceException(ioe);<a name="line.2426"></a> -<span class="sourceLineNo">2427</span> }<a name="line.2427"></a> -<span class="sourceLineNo">2428</span> }<a name="line.2428"></a> -<span class="sourceLineNo">2429</span><a name="line.2429"></a> -<span class="sourceLineNo">2430</span> /**<a name="line.2430"></a> -<span class="sourceLineNo">2431</span> * Bypass specified procedure to completion. Procedure is marked completed but no actual work<a name="line.2431"></a> -<span class="sourceLineNo">2432</span> * is done from the current state/ step onwards. Parents of the procedure are also marked for<a name="line.2432"></a> -<span class="sourceLineNo">2433</span> * bypass.<a name="line.2433"></a> -<span class="sourceLineNo">2434</span> *<a name="line.2434"></a> -<span class="sourceLineNo">2435</span> * NOTE: this is a dangerous operation and may be used to unstuck buggy procedures. This may<a name="line.2435"></a> -<span class="sourceLineNo">2436</span> * leave system in inconherent state. This may need to be followed by some cleanup steps/<a name="line.2436"></a> -<span class="sourceLineNo">2437</span> * actions by operator.<a name="line.2437"></a> -<span class="sourceLineNo">2438</span> *<a name="line.2438"></a> -<span class="sourceLineNo">2439</span> * @return BypassProcedureToCompletionResponse indicating success or failure<a name="line.2439"></a> -<span class="sourceLineNo">2440</span> */<a name="line.2440"></a> -<span class="sourceLineNo">2441</span> @Override<a name="line.2441"></a> -<span class="sourceLineNo">2442</span> public MasterProtos.BypassProcedureResponse bypassProcedure(RpcController controller,<a name="line.2442"></a> -<span class="sourceLineNo">2443</span> MasterProtos.BypassProcedureRequest request) throws ServiceException {<a name="line.2443"></a> -<span class="sourceLineNo">2444</span> try {<a name="line.2444"></a> -<span class="sourceLineNo">2445</span> List<Boolean> ret =<a name="line.2445"></a> -<span class="sourceLineNo">2446</span> master.getMasterProcedureExecutor().bypassProcedure(request.getProcIdList(),<a name="line.2446"></a> -<span class="sourceLineNo">2447</span> request.getWaitTime(), request.getForce());<a name="line.2447"></a> -<span class="sourceLineNo">2448</span> return MasterProtos.BypassProcedureResponse.newBuilder().addAllBypassed(ret).build();<a name="line.2448"></a> -<span class="sourceLineNo">2449</span> } catch (IOException e) {<a name="line.2449"></a> -<span class="sourceLineNo">2450</span> throw new ServiceException(e);<a name="line.2450"></a> -<span class="sourceLineNo">2451</span> }<a name="line.2451"></a> -<span class="sourceLineNo">2452</span> }<a name="line.2452"></a> -<span class="sourceLineNo">2453</span>}<a name="line.2453"></a> +<span class="sourceLineNo">2332</span> TableName tn = ProtobufUtil.toTableName(request.getTableName());<a name="line.2332"></a> +<span class="sourceLineNo">2333</span> try {<a name="line.2333"></a> +<span class="sourceLineNo">2334</span> HBaseProtos.TableState prevState =<a name="line.2334"></a> +<span class="sourceLineNo">2335</span> this.master.getTableStateManager().getTableState(tn).convert();<a name="line.2335"></a> +<span class="sourceLineNo">2336</span> this.master.getTableStateManager().setTableState(tn,<a name="line.2336"></a> +<span class="sourceLineNo">2337</span> TableState.convert(tn, request.getTableState()).getState());<a name="line.2337"></a> +<span class="sourceLineNo">2338</span> return GetTableStateResponse.newBuilder().setTableState(prevState).build();<a name="line.2338"></a> +<span class="sourceLineNo">2339</span> } catch (Exception e) {<a name="line.2339"></a> +<span class="sourceLineNo">2340</span> throw new ServiceException(e);<a name="line.2340"></a> +<span class="sourceLineNo">2341</span> }<a name="line.2341"></a> +<span class="sourceLineNo">2342</span> }<a name="line.2342"></a> +<span class="sourceLineNo">2343</span><a name="line.2343"></a> +<span class="sourceLineNo">2344</span> /**<a name="line.2344"></a> +<span class="sourceLineNo">2345</span> * Get RegionInfo from Master using content of RegionSpecifier as key.<a name="line.2345"></a> +<span class="sourceLineNo">2346</span> * @return RegionInfo found by decoding <code>rs</code> or null if none found<a name="line.2346"></a> +<span class="sourceLineNo">2347</span> */<a name="line.2347"></a> +<span class="sourceLineNo">2348</span> private RegionInfo getRegionInfo(HBaseProtos.RegionSpecifier rs) throws UnknownRegionException {<a name="line.2348"></a> +<span class="sourceLineNo">2349</span> RegionInfo ri = null;<a name="line.2349"></a> +<span class="sourceLineNo">2350</span> switch(rs.getType()) {<a name="line.2350"></a> +<span class="sourceLineNo">2351</span> case REGION_NAME:<a name="line.2351"></a> +<span class="sourceLineNo">2352</span> final byte[] regionName = rs.getValue().toByteArray();<a name="line.2352"></a> +<span class="sourceLineNo">2353</span> ri = this.master.getAssignmentManager().getRegionInfo(regionName);<a name="line.2353"></a> +<span class="sourceLineNo">2354</span> break;<a name="line.2354"></a> +<span class="sourceLineNo">2355</span> case ENCODED_REGION_NAME:<a name="line.2355"></a> +<span class="sourceLineNo">2356</span> String encodedRegionName = Bytes.toString(rs.getValue().toByteArray());<a name="line.2356"></a> +<span class="sourceLineNo">2357</span> RegionState regionState = this.master.getAssignmentManager().getRegionStates().<a name="line.2357"></a> +<span class="sourceLineNo">2358</span> getRegionState(encodedRegionName);<a name="line.2358"></a> +<span class="sourceLineNo">2359</span> ri = regionState == null? null: regionState.getRegion();<a name="line.2359"></a> +<span class="sourceLineNo">2360</span> break;<a name="line.2360"></a> +<span class="sourceLineNo">2361</span> default:<a name="line.2361"></a> +<span class="sourceLineNo">2362</span> break;<a name="line.2362"></a> +<span class="sourceLineNo">2363</span> }<a name="line.2363"></a> +<span class="sourceLineNo">2364</span> return ri;<a name="line.2364"></a> +<span class="sourceLineNo">2365</span> }<a name="line.2365"></a> +<span class="sourceLineNo">2366</span><a name="line.2366"></a> +<span class="sourceLineNo">2367</span> /**<a name="line.2367"></a> +<span class="sourceLineNo">2368</span> * A 'raw' version of assign that does bulk and skirts Master state checks (assigns can be made<a name="line.2368"></a> +<span class="sourceLineNo">2369</span> * during Master startup). For use by Hbck2.<a name="line.2369"></a> +<span class="sourceLineNo">2370</span> */<a name="line.2370"></a> +<span class="sourceLineNo">2371</span> @Override<a name="line.2371"></a> +<span class="sourceLineNo">2372</span> public MasterProtos.AssignsResponse assigns(RpcController controller,<a name="line.2372"></a> +<span class="sourceLineNo">2373</span> MasterProtos.AssignsRequest request)<a name="line.2373"></a> +<span class="sourceLineNo">2374</span> throws ServiceException {<a name="line.2374"></a> +<span class="sourceLineNo">2375</span> LOG.info(master.getClientIdAuditPrefix() + " assigns");<a name="line.2375"></a> +<span class="sourceLineNo">2376</span> if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2376"></a> +<span class="sourceLineNo">2377</span> throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2377"></a> +<span class="sourceLineNo">2378</span> }<a name="line.2378"></a> +<span class="sourceLineNo">2379</span> MasterProtos.AssignsResponse.Builder responseBuilder =<a name="line.2379"></a> +<span class="sourceLineNo">2380</span> MasterProtos.AssignsResponse.newBuilder();<a name="line.2380"></a> +<span class="sourceLineNo">2381</span> try {<a name="line.2381"></a> +<span class="sourceLineNo">2382</span> for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2382"></a> +<span class="sourceLineNo">2383</span> // Assign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2383"></a> +<span class="sourceLineNo">2384</span> RegionInfo ri = getRegionInfo(rs);<a name="line.2384"></a> +<span class="sourceLineNo">2385</span> if (ri == null) {<a name="line.2385"></a> +<span class="sourceLineNo">2386</span> LOG.info("Unknown={}", rs);<a name="line.2386"></a> +<span class="sourceLineNo">2387</span> responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2387"></a> +<span class="sourceLineNo">2388</span> continue;<a name="line.2388"></a> +<span class="sourceLineNo">2389</span> }<a name="line.2389"></a> +<span class="sourceLineNo">2390</span> responseBuilder.addPid(this.master.getAssignmentManager().assign(ri));<a name="line.2390"></a> +<span class="sourceLineNo">2391</span> }<a name="line.2391"></a> +<span class="sourceLineNo">2392</span> return responseBuilder.build();<a name="line.2392"></a> +<span class="sourceLineNo">2393</span> } catch (IOException ioe) {<a name="line.2393"></a> +<span class="sourceLineNo">2394</span> throw new ServiceException(ioe);<a name="line.2394"></a> +<span class="sourceLineNo">2395</span> }<a name="line.2395"></a> +<span class="sourceLineNo">2396</span> }<a name="line.2396"></a> +<span class="sourceLineNo">2397</span><a name="line.2397"></a> +<span class="sourceLineNo">2398</span> /**<a name="line.2398"></a> +<span class="sourceLineNo">2399</span> * A 'raw' version of unassign that does bulk and skirts Master state checks (unassigns can be<a name="line.2399"></a> +<span class="sourceLineNo">2400</span> * made during Master startup). For use by Hbck2.<a name="line.2400"></a> +<span class="sourceLineNo">2401</span> */<a name="line.2401"></a> +<span class="sourceLineNo">2402</span> @Override<a name="line.2402"></a> +<span class="sourceLineNo">2403</span> public MasterProtos.UnassignsResponse unassigns(RpcController controller,<a name="line.2403"></a> +<span class="sourceLineNo">2404</span> MasterProtos.UnassignsRequest request)<a name="line.2404"></a> +<span class="sourceLineNo">2405</span> throws ServiceException {<a name="line.2405"></a> +<span class="sourceLineNo">2406</span> LOG.info(master.getClientIdAuditPrefix() + " unassigns");<a name="line.2406"></a> +<span class="sourceLineNo">2407</span> if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2407"></a> +<span class="sourceLineNo">2408</span> throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2408"></a> +<span class="sourceLineNo">2409</span> }<a name="line.2409"></a> +<span class="sourceLineNo">2410</span> MasterProtos.UnassignsResponse.Builder responseBuilder =<a name="line.2410"></a> +<span class="sourceLineNo">2411</span> MasterProtos.UnassignsResponse.newBuilder();<a name="line.2411"></a> +<span class="sourceLineNo">2412</span> try {<a name="line.2412"></a> +<span class="sourceLineNo">2413</span> for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2413"></a> +<span class="sourceLineNo">2414</span> // Unassign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2414"></a> +<span class="sourceLineNo">2415</span> RegionInfo ri = getRegionInfo(rs);<a name="line.2415"></a> +<span class="sourceLineNo">2416</span> if (ri == null) {<a name="line.2416"></a> +<span class="sourceLineNo">2417</span> LOG.info("Unknown={}", rs);<a name="line.2417"></a> +<span class="sourceLineNo">2418</span> responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2418"></a> +<span class="sourceLineNo">2419</span> continue;<a name="line.2419"></a> +<span class="sourceLineNo">2420</span> }<a name="line.2420"></a> +<span class="sourceLineNo">2421</span> responseBuilder.addPid(this.master.getAssignmentManager().unassign(ri));<a name="line.2421"></a> +<span class="sourceLineNo">2422</span> }<a name="line.2422"></a> +<span class="sourceLineNo">2423</span> return responseBuilder.build();<a name="line.2423"></a> +<span class="sourceLineNo">2424</span> } catch (IOException ioe) {<a name="line.2424"></a> +<span class="sourceLineNo">2425</span> throw new ServiceException(ioe);<a name="line.2425"></a> +<span class="sourceLineNo">2426</span> }<a name="line.2426"></a> +<span class="sourceLineNo">2427</span> }<a name="line.2427"></a> +<span class="sourceLineNo">2428</span><a name="line.2428"></a> +<span class="sourceLineNo">2429</span> /**<a name="line.2429"></a> +<span class="sourceLineNo">2430</span> * Bypass specified procedure to completion. Procedure is marked completed but no actual work<a name="line.2430"></a> +<span class="sourceLineNo">2431</span> * is done from the current state/ step onwards. Parents of the procedure are also marked for<a name="line.2431"></a> +<span class="sourceLineNo">2432</span> * bypass.<a name="line.2432"></a> +<span class="sourceLineNo">2433</span> *<a name="line.2433"></a> +<span class="sourceLineNo">2434</span> * NOTE: this is a dangerous operation and may be used to unstuck buggy procedures. This may<a name="line.2434"></a> +<span class="sourceLineNo">2435</span> * leave system in inconherent state. This may need to be followed by some cleanup steps/<a name="line.2435"></a> +<span class="sourceLineNo">2436</span> * actions by operator.<a name="line.2436"></a> +<span class="sourceLineNo">2437</span> *<a name="line.2437"></a> +<span class="sourceLineNo">2438</span> * @return BypassProcedureToCompletionResponse indicating success or failure<a name="line.2438"></a> +<span class="sourceLineNo">2439</span> */<a name="line.2439"></a> +<span class="sourceLineNo">2440</span> @Override<a name="line.2440"></a> +<span class="sourceLineNo">2441</span> public MasterProtos.BypassProcedureResponse bypassProcedure(RpcController controller,<a name="line.2441"></a> +<span class="sourceLineNo">2442</span> MasterProtos.BypassProcedureRequest request) throws ServiceException {<a name="line.2442"></a> +<span class="sourceLineNo">2443</span> try {<a name="line.2443"></a> +<span class="sourceLineNo">2444</span> List<Boolean> ret =<a name="line.2444"></a> +<span class="sourceLineNo">2445</span> master.getMasterProcedureExecutor().bypassProcedure(request.getProcIdList(),<a name="line.2445"></a> +<span class="sourceLineNo">2446</span> request.getWaitTime(), request.getForce());<a name="line.2446"></a> +<span class="sourceLineNo">2447</span> return MasterProtos.BypassProcedureResponse.newBuilder().addAllBypassed(ret).build();<a name="line.2447"></a> +<span class="sourceLineNo">2448</span> } catch (IOException e) {<a name="line.2448"></a> +<span class="sourceLineNo">2449</span> throw new ServiceException(e);<a name="line.2449"></a> +<span class="sourceLineNo">2450</span> }<a name="line.2450"></a> +<span class="sourceLineNo">2451</span> }<a name="line.2451"></a> +<span class="sourceLineNo">2452</span>}<a name="line.2452"></a>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html index bba0c5e..145330c 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html @@ -2337,128 +2337,127 @@ <span class="sourceLineNo">2329</span> @Override<a name="line.2329"></a> <span class="sourceLineNo">2330</span> public GetTableStateResponse setTableStateInMeta(RpcController controller,<a name="line.2330"></a> <span class="sourceLineNo">2331</span> SetTableStateInMetaRequest request) throws ServiceException {<a name="line.2331"></a> -<span class="sourceLineNo">2332</span> Connection conn = master.getConnection();<a name="line.2332"></a> -<span class="sourceLineNo">2333</span> TableName tn = ProtobufUtil.toTableName(request.getTableName());<a name="line.2333"></a> -<span class="sourceLineNo">2334</span><a name="line.2334"></a> -<span class="sourceLineNo">2335</span> try {<a name="line.2335"></a> -<span class="sourceLineNo">2336</span> HBaseProtos.TableState prevState = MetaTableAccessor.getTableState(conn, tn).convert();<a name="line.2336"></a> -<span class="sourceLineNo">2337</span> MetaTableAccessor.updateTableState(conn, tn,<a name="line.2337"></a> -<span class="sourceLineNo">2338</span> TableState.convert(tn, request.getTableState()).getState());<a name="line.2338"></a> -<span class="sourceLineNo">2339</span> return GetTableStateResponse.newBuilder().setTableState(prevState).build();<a name="line.2339"></a> -<span class="sourceLineNo">2340</span> } catch (Exception e) {<a name="line.2340"></a> -<span class="sourceLineNo">2341</span> throw new ServiceException(e);<a name="line.2341"></a> -<span class="sourceLineNo">2342</span> }<a name="line.2342"></a> -<span class="sourceLineNo">2343</span> }<a name="line.2343"></a> -<span class="sourceLineNo">2344</span><a name="line.2344"></a> -<span class="sourceLineNo">2345</span> /**<a name="line.2345"></a> -<span class="sourceLineNo">2346</span> * Get RegionInfo from Master using content of RegionSpecifier as key.<a name="line.2346"></a> -<span class="sourceLineNo">2347</span> * @return RegionInfo found by decoding <code>rs</code> or null if none found<a name="line.2347"></a> -<span class="sourceLineNo">2348</span> */<a name="line.2348"></a> -<span class="sourceLineNo">2349</span> private RegionInfo getRegionInfo(HBaseProtos.RegionSpecifier rs) throws UnknownRegionException {<a name="line.2349"></a> -<span class="sourceLineNo">2350</span> RegionInfo ri = null;<a name="line.2350"></a> -<span class="sourceLineNo">2351</span> switch(rs.getType()) {<a name="line.2351"></a> -<span class="sourceLineNo">2352</span> case REGION_NAME:<a name="line.2352"></a> -<span class="sourceLineNo">2353</span> final byte[] regionName = rs.getValue().toByteArray();<a name="line.2353"></a> -<span class="sourceLineNo">2354</span> ri = this.master.getAssignmentManager().getRegionInfo(regionName);<a name="line.2354"></a> -<span class="sourceLineNo">2355</span> break;<a name="line.2355"></a> -<span class="sourceLineNo">2356</span> case ENCODED_REGION_NAME:<a name="line.2356"></a> -<span class="sourceLineNo">2357</span> String encodedRegionName = Bytes.toString(rs.getValue().toByteArray());<a name="line.2357"></a> -<span class="sourceLineNo">2358</span> RegionState regionState = this.master.getAssignmentManager().getRegionStates().<a name="line.2358"></a> -<span class="sourceLineNo">2359</span> getRegionState(encodedRegionName);<a name="line.2359"></a> -<span class="sourceLineNo">2360</span> ri = regionState == null? null: regionState.getRegion();<a name="line.2360"></a> -<span class="sourceLineNo">2361</span> break;<a name="line.2361"></a> -<span class="sourceLineNo">2362</span> default:<a name="line.2362"></a> -<span class="sourceLineNo">2363</span> break;<a name="line.2363"></a> -<span class="sourceLineNo">2364</span> }<a name="line.2364"></a> -<span class="sourceLineNo">2365</span> return ri;<a name="line.2365"></a> -<span class="sourceLineNo">2366</span> }<a name="line.2366"></a> -<span class="sourceLineNo">2367</span><a name="line.2367"></a> -<span class="sourceLineNo">2368</span> /**<a name="line.2368"></a> -<span class="sourceLineNo">2369</span> * A 'raw' version of assign that does bulk and skirts Master state checks (assigns can be made<a name="line.2369"></a> -<span class="sourceLineNo">2370</span> * during Master startup). For use by Hbck2.<a name="line.2370"></a> -<span class="sourceLineNo">2371</span> */<a name="line.2371"></a> -<span class="sourceLineNo">2372</span> @Override<a name="line.2372"></a> -<span class="sourceLineNo">2373</span> public MasterProtos.AssignsResponse assigns(RpcController controller,<a name="line.2373"></a> -<span class="sourceLineNo">2374</span> MasterProtos.AssignsRequest request)<a name="line.2374"></a> -<span class="sourceLineNo">2375</span> throws ServiceException {<a name="line.2375"></a> -<span class="sourceLineNo">2376</span> LOG.info(master.getClientIdAuditPrefix() + " assigns");<a name="line.2376"></a> -<span class="sourceLineNo">2377</span> if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2377"></a> -<span class="sourceLineNo">2378</span> throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2378"></a> -<span class="sourceLineNo">2379</span> }<a name="line.2379"></a> -<span class="sourceLineNo">2380</span> MasterProtos.AssignsResponse.Builder responseBuilder =<a name="line.2380"></a> -<span class="sourceLineNo">2381</span> MasterProtos.AssignsResponse.newBuilder();<a name="line.2381"></a> -<span class="sourceLineNo">2382</span> try {<a name="line.2382"></a> -<span class="sourceLineNo">2383</span> for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2383"></a> -<span class="sourceLineNo">2384</span> // Assign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2384"></a> -<span class="sourceLineNo">2385</span> RegionInfo ri = getRegionInfo(rs);<a name="line.2385"></a> -<span class="sourceLineNo">2386</span> if (ri == null) {<a name="line.2386"></a> -<span class="sourceLineNo">2387</span> LOG.info("Unknown={}", rs);<a name="line.2387"></a> -<span class="sourceLineNo">2388</span> responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2388"></a> -<span class="sourceLineNo">2389</span> continue;<a name="line.2389"></a> -<span class="sourceLineNo">2390</span> }<a name="line.2390"></a> -<span class="sourceLineNo">2391</span> responseBuilder.addPid(this.master.getAssignmentManager().assign(ri));<a name="line.2391"></a> -<span class="sourceLineNo">2392</span> }<a name="line.2392"></a> -<span class="sourceLineNo">2393</span> return responseBuilder.build();<a name="line.2393"></a> -<span class="sourceLineNo">2394</span> } catch (IOException ioe) {<a name="line.2394"></a> -<span class="sourceLineNo">2395</span> throw new ServiceException(ioe);<a name="line.2395"></a> -<span class="sourceLineNo">2396</span> }<a name="line.2396"></a> -<span class="sourceLineNo">2397</span> }<a name="line.2397"></a> -<span class="sourceLineNo">2398</span><a name="line.2398"></a> -<span class="sourceLineNo">2399</span> /**<a name="line.2399"></a> -<span class="sourceLineNo">2400</span> * A 'raw' version of unassign that does bulk and skirts Master state checks (unassigns can be<a name="line.2400"></a> -<span class="sourceLineNo">2401</span> * made during Master startup). For use by Hbck2.<a name="line.2401"></a> -<span class="sourceLineNo">2402</span> */<a name="line.2402"></a> -<span class="sourceLineNo">2403</span> @Override<a name="line.2403"></a> -<span class="sourceLineNo">2404</span> public MasterProtos.UnassignsResponse unassigns(RpcController controller,<a name="line.2404"></a> -<span class="sourceLineNo">2405</span> MasterProtos.UnassignsRequest request)<a name="line.2405"></a> -<span class="sourceLineNo">2406</span> throws ServiceException {<a name="line.2406"></a> -<span class="sourceLineNo">2407</span> LOG.info(master.getClientIdAuditPrefix() + " unassigns");<a name="line.2407"></a> -<span class="sourceLineNo">2408</span> if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2408"></a> -<span class="sourceLineNo">2409</span> throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2409"></a> -<span class="sourceLineNo">2410</span> }<a name="line.2410"></a> -<span class="sourceLineNo">2411</span> MasterProtos.UnassignsResponse.Builder responseBuilder =<a name="line.2411"></a> -<span class="sourceLineNo">2412</span> MasterProtos.UnassignsResponse.newBuilder();<a name="line.2412"></a> -<span class="sourceLineNo">2413</span> try {<a name="line.2413"></a> -<span class="sourceLineNo">2414</span> for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2414"></a> -<span class="sourceLineNo">2415</span> // Unassign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2415"></a> -<span class="sourceLineNo">2416</span> RegionInfo ri = getRegionInfo(rs);<a name="line.2416"></a> -<span class="sourceLineNo">2417</span> if (ri == null) {<a name="line.2417"></a> -<span class="sourceLineNo">2418</span> LOG.info("Unknown={}", rs);<a name="line.2418"></a> -<span class="sourceLineNo">2419</span> responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2419"></a> -<span class="sourceLineNo">2420</span> continue;<a name="line.2420"></a> -<span class="sourceLineNo">2421</span> }<a name="line.2421"></a> -<span class="sourceLineNo">2422</span> responseBuilder.addPid(this.master.getAssignmentManager().unassign(ri));<a name="line.2422"></a> -<span class="sourceLineNo">2423</span> }<a name="line.2423"></a> -<span class="sourceLineNo">2424</span> return responseBuilder.build();<a name="line.2424"></a> -<span class="sourceLineNo">2425</span> } catch (IOException ioe) {<a name="line.2425"></a> -<span class="sourceLineNo">2426</span> throw new ServiceException(ioe);<a name="line.2426"></a> -<span class="sourceLineNo">2427</span> }<a name="line.2427"></a> -<span class="sourceLineNo">2428</span> }<a name="line.2428"></a> -<span class="sourceLineNo">2429</span><a name="line.2429"></a> -<span class="sourceLineNo">2430</span> /**<a name="line.2430"></a> -<span class="sourceLineNo">2431</span> * Bypass specified procedure to completion. Procedure is marked completed but no actual work<a name="line.2431"></a> -<span class="sourceLineNo">2432</span> * is done from the current state/ step onwards. Parents of the procedure are also marked for<a name="line.2432"></a> -<span class="sourceLineNo">2433</span> * bypass.<a name="line.2433"></a> -<span class="sourceLineNo">2434</span> *<a name="line.2434"></a> -<span class="sourceLineNo">2435</span> * NOTE: this is a dangerous operation and may be used to unstuck buggy procedures. This may<a name="line.2435"></a> -<span class="sourceLineNo">2436</span> * leave system in inconherent state. This may need to be followed by some cleanup steps/<a name="line.2436"></a> -<span class="sourceLineNo">2437</span> * actions by operator.<a name="line.2437"></a> -<span class="sourceLineNo">2438</span> *<a name="line.2438"></a> -<span class="sourceLineNo">2439</span> * @return BypassProcedureToCompletionResponse indicating success or failure<a name="line.2439"></a> -<span class="sourceLineNo">2440</span> */<a name="line.2440"></a> -<span class="sourceLineNo">2441</span> @Override<a name="line.2441"></a> -<span class="sourceLineNo">2442</span> public MasterProtos.BypassProcedureResponse bypassProcedure(RpcController controller,<a name="line.2442"></a> -<span class="sourceLineNo">2443</span> MasterProtos.BypassProcedureRequest request) throws ServiceException {<a name="line.2443"></a> -<span class="sourceLineNo">2444</span> try {<a name="line.2444"></a> -<span class="sourceLineNo">2445</span> List<Boolean> ret =<a name="line.2445"></a> -<span class="sourceLineNo">2446</span> master.getMasterProcedureExecutor().bypassProcedure(request.getProcIdList(),<a name="line.2446"></a> -<span class="sourceLineNo">2447</span> request.getWaitTime(), request.getForce());<a name="line.2447"></a> -<span class="sourceLineNo">2448</span> return MasterProtos.BypassProcedureResponse.newBuilder().addAllBypassed(ret).build();<a name="line.2448"></a> -<span class="sourceLineNo">2449</span> } catch (IOException e) {<a name="line.2449"></a> -<span class="sourceLineNo">2450</span> throw new ServiceException(e);<a name="line.2450"></a> -<span class="sourceLineNo">2451</span> }<a name="line.2451"></a> -<span class="sourceLineNo">2452</span> }<a name="line.2452"></a> -<span class="sourceLineNo">2453</span>}<a name="line.2453"></a> +<span class="sourceLineNo">2332</span> TableName tn = ProtobufUtil.toTableName(request.getTableName());<a name="line.2332"></a> +<span class="sourceLineNo">2333</span> try {<a name="line.2333"></a> +<span class="sourceLineNo">2334</span> HBaseProtos.TableState prevState =<a name="line.2334"></a> +<span class="sourceLineNo">2335</span> this.master.getTableStateManager().getTableState(tn).convert();<a name="line.2335"></a> +<span class="sourceLineNo">2336</span> this.master.getTableStateManager().setTableState(tn,<a name="line.2336"></a> +<span class="sourceLineNo">2337</span> TableState.convert(tn, request.getTableState()).getState());<a name="line.2337"></a> +<span class="sourceLineNo">2338</span> return GetTableStateResponse.newBuilder().setTableState(prevState).build();<a name="line.2338"></a> +<span class="sourceLineNo">2339</span> } catch (Exception e) {<a name="line.2339"></a> +<span class="sourceLineNo">2340</span> throw new ServiceException(e);<a name="line.2340"></a> +<span class="sourceLineNo">2341</span> }<a name="line.2341"></a> +<span class="sourceLineNo">2342</span> }<a name="line.2342"></a> +<span class="sourceLineNo">2343</span><a name="line.2343"></a> +<span class="sourceLineNo">2344</span> /**<a name="line.2344"></a> +<span class="sourceLineNo">2345</span> * Get RegionInfo from Master using content of RegionSpecifier as key.<a name="line.2345"></a> +<span class="sourceLineNo">2346</span> * @return RegionInfo found by decoding <code>rs</code> or null if none found<a name="line.2346"></a> +<span class="sourceLineNo">2347</span> */<a name="line.2347"></a> +<span class="sourceLineNo">2348</span> private RegionInfo getRegionInfo(HBaseProtos.RegionSpecifier rs) throws UnknownRegionException {<a name="line.2348"></a> +<span class="sourceLineNo">2349</span> RegionInfo ri = null;<a name="line.2349"></a> +<span class="sourceLineNo">2350</span> switch(rs.getType()) {<a name="line.2350"></a> +<span class="sourceLineNo">2351</span> case REGION_NAME:<a name="line.2351"></a> +<span class="sourceLineNo">2352</span> final byte[] regionName = rs.getValue().toByteArray();<a name="line.2352"></a> +<span class="sourceLineNo">2353</span> ri = this.master.getAssignmentManager().getRegionInfo(regionName);<a name="line.2353"></a> +<span class="sourceLineNo">2354</span> break;<a name="line.2354"></a> +<span class="sourceLineNo">2355</span> case ENCODED_REGION_NAME:<a name="line.2355"></a> +<span class="sourceLineNo">2356</span> String encodedRegionName = Bytes.toString(rs.getValue().toByteArray());<a name="line.2356"></a> +<span class="sourceLineNo">2357</span> RegionState regionState = this.master.getAssignmentManager().getRegionStates().<a name="line.2357"></a> +<span class="sourceLineNo">2358</span> getRegionState(encodedRegionName);<a name="line.2358"></a> +<span class="sourceLineNo">2359</span> ri = regionState == null? null: regionState.getRegion();<a name="line.2359"></a> +<span class="sourceLineNo">2360</span> break;<a name="line.2360"></a> +<span class="sourceLineNo">2361</span> default:<a name="line.2361"></a> +<span class="sourceLineNo">2362</span> break;<a name="line.2362"></a> +<span class="sourceLineNo">2363</span> }<a name="line.2363"></a> +<span class="sourceLineNo">2364</span> return ri;<a name="line.2364"></a> +<span class="sourceLineNo">2365</span> }<a name="line.2365"></a> +<span class="sourceLineNo">2366</span><a name="line.2366"></a> +<span class="sourceLineNo">2367</span> /**<a name="line.2367"></a> +<span class="sourceLineNo">2368</span> * A 'raw' version of assign that does bulk and skirts Master state checks (assigns can be made<a name="line.2368"></a> +<span class="sourceLineNo">2369</span> * during Master startup). For use by Hbck2.<a name="line.2369"></a> +<span class="sourceLineNo">2370</span> */<a name="line.2370"></a> +<span class="sourceLineNo">2371</span> @Override<a name="line.2371"></a> +<span class="sourceLineNo">2372</span> public MasterProtos.AssignsResponse assigns(RpcController controller,<a name="line.2372"></a> +<span class="sourceLineNo">2373</span> MasterProtos.AssignsRequest request)<a name="line.2373"></a> +<span class="sourceLineNo">2374</span> throws ServiceException {<a name="line.2374"></a> +<span class="sourceLineNo">2375</span> LOG.info(master.getClientIdAuditPrefix() + " assigns");<a name="line.2375"></a> +<span class="sourceLineNo">2376</span> if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2376"></a> +<span class="sourceLineNo">2377</span> throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2377"></a> +<span class="sourceLineNo">2378</span> }<a name="line.2378"></a> +<span class="sourceLineNo">2379</span> MasterProtos.AssignsResponse.Builder responseBuilder =<a name="line.2379"></a> +<span class="sourceLineNo">2380</span> MasterProtos.AssignsResponse.newBuilder();<a name="line.2380"></a> +<span class="sourceLineNo">2381</span> try {<a name="line.2381"></a> +<span class="sourceLineNo">2382</span> for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2382"></a> +<span class="sourceLineNo">2383</span> // Assign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2383"></a> +<span class="sourceLineNo">2384</span> RegionInfo ri = getRegionInfo(rs);<a name="line.2384"></a> +<span class="sourceLineNo">2385</span> if (ri == null) {<a name="line.2385"></a> +<span class="sourceLineNo">2386</span> LOG.info("Unknown={}", rs);<a name="line.2386"></a> +<span class="sourceLineNo">2387</span> responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2387"></a> +<span class="sourceLineNo">2388</span> continue;<a name="line.2388"></a> +<span class="sourceLineNo">2389</span> }<a name="line.2389"></a> +<span class="sourceLineNo">2390</span> responseBuilder.addPid(this.master.getAssignmentManager().assign(ri));<a name="line.2390"></a> +<span class="sourceLineNo">2391</span> }<a name="line.2391"></a> +<span class="sourceLineNo">2392</span> return responseBuilder.build();<a name="line.2392"></a> +<span class="sourceLineNo">2393</span> } catch (IOException ioe) {<a name="line.2393"></a> +<span class="sourceLineNo">2394</span> throw new ServiceException(ioe);<a name="line.2394"></a> +<span class="sourceLineNo">2395</span> }<a name="line.2395"></a> +<span class="sourceLineNo">2396</span> }<a name="line.2396"></a> +<span class="sourceLineNo">2397</span><a name="line.2397"></a> +<span class="sourceLineNo">2398</span> /**<a name="line.2398"></a> +<span class="sourceLineNo">2399</span> * A 'raw' version of unassign that does bulk and skirts Master state checks (unassigns can be<a name="line.2399"></a> +<span class="sourceLineNo">2400</span> * made during Master startup). For use by Hbck2.<a name="line.2400"></a> +<span class="sourceLineNo">2401</span> */<a name="line.2401"></a> +<span class="sourceLineNo">2402</span> @Override<a name="line.2402"></a> +<span class="sourceLineNo">2403</span> public MasterProtos.UnassignsResponse unassigns(RpcController controller,<a name="line.2403"></a> +<span class="sourceLineNo">2404</span> MasterProtos.UnassignsRequest request)<a name="line.2404"></a> +<span class="sourceLineNo">2405</span> throws ServiceException {<a name="line.2405"></a> +<span class="sourceLineNo">2406</span> LOG.info(master.getClientIdAuditPrefix() + " unassigns");<a name="line.2406"></a> +<span class="sourceLineNo">2407</span> if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2407"></a> +<span class="sourceLineNo">2408</span> throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2408"></a> +<span class="sourceLineNo">2409</span> }<a name="line.2409"></a> +<span class="sourceLineNo">2410</span> MasterProtos.UnassignsResponse.Builder responseBuilder =<a name="line.2410"></a> +<span class="sourceLineNo">2411</span> MasterProtos.UnassignsResponse.newBuilder();<a name="line.2411"></a> +<span class="sourceLineNo">2412</span> try {<a name="line.2412"></a> +<span class="sourceLineNo">2413</span> for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2413"></a> +<span class="sourceLineNo">2414</span> // Unassign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2414"></a> +<span class="sourceLineNo">2415</span> RegionInfo ri = getRegionInfo(rs);<a name="line.2415"></a> +<span class="sourceLineNo">2416</span> if (ri == null) {<a name="line.2416"></a> +<span class="sourceLineNo">2417</span> LOG.info("Unknown={}", rs);<a name="line.2417"></a> +<span class="sourceLineNo">2418</span> responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2418"></a> +<span class="sourceLineNo">2419</span> continue;<a name="line.2419"></a> +<span class="sourceLineNo">2420</span> }<a name="line.2420"></a> +<span class="sourceLineNo">2421</span> responseBuilder.addPid(this.master.getAssignmentManager().unassign(ri));<a name="line.2421"></a> +<span class="sourceLineNo">2422</span> }<a name="line.2422"></a> +<span class="sourceLineNo">2423</span> return responseBuilder.build();<a name="line.2423"></a> +<span class="sourceLineNo">2424</span> } catch (IOException ioe) {<a name="line.2424"></a> +<span class="sourceLineNo">2425</span> throw new ServiceException(ioe);<a name="line.2425"></a> +<span class="sourceLineNo">2426</span> }<a name="line.2426"></a> +<span class="sourceLineNo">2427</span> }<a name="line.2427"></a> +<span class="sourceLineNo">2428</span><a name="line.2428"></a> +<span class="sourceLineNo">2429</span> /**<a name="line.2429"></a> +<span class="sourceLineNo">2430</span> * Bypass specified procedure to completion. Procedure is marked completed but no actual work<a name="line.2430"></a> +<span class="sourceLineNo">2431</span> * is done from the current state/ step onwards. Parents of the procedure are also marked for<a name="line.2431"></a> +<span class="sourceLineNo">2432</span> * bypass.<a name="line.2432"></a> +<span class="sourceLineNo">2433</span> *<a name="line.2433"></a> +<span class="sourceLineNo">2434</span> * NOTE: this is a dangerous operation and may be used to unstuck buggy procedures. This may<a name="line.2434"></a> +<span class="sourceLineNo">2435</span> * leave system in inconherent state. This may need to be followed by some cleanup steps/<a name="line.2435"></a> +<span class="sourceLineNo">2436</span> * actions by operator.<a name="line.2436"></a> +<span class="sourceLineNo">2437</span> *<a name="line.2437"></a> +<span class="sourceLineNo">2438</span> * @return BypassProcedureToCompletionResponse indicating success or failure<a name="line.2438"></a> +<span class="sourceLineNo">2439</span> */<a name="line.2439"></a> +<span class="sourceLineNo">2440</span> @Override<a name="line.2440"></a> +<span class="sourceLineNo">2441</span> public MasterProtos.BypassProcedureResponse bypassProcedure(RpcController controller,<a name="line.2441"></a> +<span class="sourceLineNo">2442</span> MasterProtos.BypassProcedureRequest request) throws ServiceException {<a name="line.2442"></a> +<span class="sourceLineNo">2443</span> try {<a name="line.2443"></a> +<span class="sourceLineNo">2444</span> List<Boolean> ret =<a name="line.2444"></a> +<span class="sourceLineNo">2445</span> master.getMasterProcedureExecutor().bypassProcedure(request.getProcIdList(),<a name="line.2445"></a> +<span class="sourceLineNo">2446</span> request.getWaitTime(), request.getForce());<a name="line.2446"></a> +<span class="sourceLineNo">2447</span> return MasterProtos.BypassProcedureResponse.newBuilder().addAllBypassed(ret).build();<a name="line.2447"></a> +<span class="sourceLineNo">2448</span> } catch (IOException e) {<a name="line.2448"></a> +<span class="sourceLineNo">2449</span> throw new ServiceException(e);<a name="line.2449"></a> +<span class="sourceLineNo">2450</span> }<a name="line.2450"></a> +<span class="sourceLineNo">2451</span> }<a name="line.2451"></a> +<span class="sourceLineNo">2452</span>}<a name="line.2452"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html index 2218d26..27fd9a2 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html @@ -42,8 +42,16 @@ <span class="sourceLineNo">034</span> /**<a name="line.34"></a> <span class="sourceLineNo">035</span> * Bloom enabled with Table row &amp; column (family+qualifier) as Key<a name="line.35"></a> <span class="sourceLineNo">036</span> */<a name="line.36"></a> -<span class="sourceLineNo">037</span> ROWCOL<a name="line.37"></a> -<span class="sourceLineNo">038</span>}<a name="line.38"></a> +<span class="sourceLineNo">037</span> ROWCOL,<a name="line.37"></a> +<span class="sourceLineNo">038</span> /**<a name="line.38"></a> +<span class="sourceLineNo">039</span> * Bloom enabled with Table row prefix as Key, specify the length of the prefix<a name="line.39"></a> +<span class="sourceLineNo">040</span> */<a name="line.40"></a> +<span class="sourceLineNo">041</span> ROWPREFIX_FIXED_LENGTH,<a name="line.41"></a> +<span class="sourceLineNo">042</span> /**<a name="line.42"></a> +<span class="sourceLineNo">043</span> * Bloom enabled with Table row prefix as Key, specify the delimiter of the prefix<a name="line.43"></a> +<span class="sourceLineNo">044</span> */<a name="line.44"></a> +<span class="sourceLineNo">045</span> ROWPREFIX_DELIMITED<a name="line.45"></a> +<span class="sourceLineNo">046</span>}<a name="line.46"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html index 3f9d8d2..7becf50 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html @@ -2642,7 +2642,7 @@ <span class="sourceLineNo">2634</span> if (storeClosing && !file.isCompactedAway()) {<a name="line.2634"></a> <span class="sourceLineNo">2635</span> String msg =<a name="line.2635"></a> <span class="sourceLineNo">2636</span> "Region closing but StoreFile is in compacted list but not compacted away: " +<a name="line.2636"></a> -<span class="sourceLineNo">2637</span> file.getPath().getName();<a name="line.2637"></a> +<span class="sourceLineNo">2637</span> file.getPath();<a name="line.2637"></a> <span class="sourceLineNo">2638</span> throw new IllegalStateException(msg);<a name="line.2638"></a> <span class="sourceLineNo">2639</span> }<a name="line.2639"></a> <span class="sourceLineNo">2640</span><a name="line.2640"></a> @@ -2650,8 +2650,8 @@ <span class="sourceLineNo">2642</span> //and remove compacted storefiles from the region directory<a name="line.2642"></a> <span class="sourceLineNo">2643</span> if (file.isCompactedAway() && (!file.isReferencedInReads() || storeClosing)) {<a name="line.2643"></a> <span class="sourceLineNo">2644</span> if (storeClosing && file.isReferencedInReads()) {<a name="line.2644"></a> -<span class="sourceLineNo">2645</span> LOG.debug("Region closing but StoreFile still has references: {}",<a name="line.2645"></a> -<span class="sourceLineNo">2646</span> file.getPath().getName());<a name="line.2646"></a> +<span class="sourceLineNo">2645</span> LOG.warn("Region closing but StoreFile still has references: file={}, refCount={}",<a name="line.2645"></a> +<span class="sourceLineNo">2646</span> file.getPath(), r.getRefCount());<a name="line.2646"></a> <span class="sourceLineNo">2647</span> }<a name="line.2647"></a> <span class="sourceLineNo">2648</span> // Even if deleting fails we need not bother as any new scanners won't be<a name="line.2648"></a> <span class="sourceLineNo">2649</span> // able to use the compacted file as the status is already compactedAway<a name="line.2649"></a> @@ -2666,13 +2666,13 @@ <span class="sourceLineNo">2658</span> storeFileSizes.add(length);<a name="line.2658"></a> <span class="sourceLineNo">2659</span> } else {<a name="line.2659"></a> <span class="sourceLineNo">2660</span> LOG.info("Can't archive compacted file " + file.getPath()<a name="line.2660"></a> -<span class="sourceLineNo">2661</span> + " because of either isCompactedAway = " + file.isCompactedAway()<a name="line.2661"></a> -<span class="sourceLineNo">2662</span> + " or file has reference, isReferencedInReads = " + file.isReferencedInReads()<a name="line.2662"></a> -<span class="sourceLineNo">2663</span> + ", skipping for now.");<a name="line.2663"></a> +<span class="sourceLineNo">2661</span> + " because of either isCompactedAway=" + file.isCompactedAway()<a name="line.2661"></a> +<span class="sourceLineNo">2662</span> + " or file has reference, isReferencedInReads=" + file.isReferencedInReads()<a name="line.2662"></a> +<span class="sourceLineNo">2663</span> + ", refCount=" + r.getRefCount() + ", skipping for now.");<a name="line.2663"></a> <span class="sourceLineNo">2664</span> }<a name="line.2664"></a> <span class="sourceLineNo">2665</span> } catch (Exception e) {<a name="line.2665"></a> <span class="sourceLineNo">2666</span> String msg = "Exception while trying to close the compacted store file " +<a name="line.2666"></a> -<span class="sourceLineNo">2667</span> file.getPath().getName();<a name="line.2667"></a> +<span class="sourceLineNo">2667</span> file.getPath();<a name="line.2667"></a> <span class="sourceLineNo">2668</span> if (storeClosing) {<a name="line.2668"></a> <span class="sourceLineNo">2669</span> msg = "Store is closing. " + msg;<a name="line.2669"></a> <span class="sourceLineNo">2670</span> }<a name="line.2670"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html index 3f9d8d2..7becf50 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html @@ -2642,7 +2642,7 @@ <span class="sourceLineNo">2634</span> if (storeClosing && !file.isCompactedAway()) {<a name="line.2634"></a> <span class="sourceLineNo">2635</span> String msg =<a name="line.2635"></a> <span class="sourceLineNo">2636</span> "Region closing but StoreFile is in compacted list but not compacted away: " +<a name="line.2636"></a> -<span class="sourceLineNo">2637</span> file.getPath().getName();<a name="line.2637"></a> +<span class="sourceLineNo">2637</span> file.getPath();<a name="line.2637"></a> <span class="sourceLineNo">2638</span> throw new IllegalStateException(msg);<a name="line.2638"></a> <span class="sourceLineNo">2639</span> }<a name="line.2639"></a> <span class="sourceLineNo">2640</span><a name="line.2640"></a> @@ -2650,8 +2650,8 @@ <span class="sourceLineNo">2642</span> //and remove compacted storefiles from the region directory<a name="line.2642"></a> <span class="sourceLineNo">2643</span> if (file.isCompactedAway() && (!file.isReferencedInReads() || storeClosing)) {<a name="line.2643"></a> <span class="sourceLineNo">2644</span> if (storeClosing && file.isReferencedInReads()) {<a name="line.2644"></a> -<span class="sourceLineNo">2645</span> LOG.debug("Region closing but StoreFile still has references: {}",<a name="line.2645"></a> -<span class="sourceLineNo">2646</span> file.getPath().getName());<a name="line.2646"></a> +<span class="sourceLineNo">2645</span> LOG.warn("Region closing but StoreFile still has references: file={}, refCount={}",<a name="line.2645"></a> +<span class="sourceLineNo">2646</span> file.getPath(), r.getRefCount());<a name="line.2646"></a> <span class="sourceLineNo">2647</span> }<a name="line.2647"></a> <span class="sourceLineNo">2648</span> // Even if deleting fails we need not bother as any new scanners won't be<a name="line.2648"></a> <span class="sourceLineNo">2649</span> // able to use the compacted file as the status is already compactedAway<a name="line.2649"></a> @@ -2666,13 +2666,13 @@ <span class="sourceLineNo">2658</span> storeFileSizes.add(length);<a name="line.2658"></a> <span class="sourceLineNo">2659</span> } else {<a name="line.2659"></a> <span class="sourceLineNo">2660</span> LOG.info("Can't archive compacted file " + file.getPath()<a name="line.2660"></a> -<span class="sourceLineNo">2661</span> + " because of either isCompactedAway = " + file.isCompactedAway()<a name="line.2661"></a> -<span class="sourceLineNo">2662</span> + " or file has reference, isReferencedInReads = " + file.isReferencedInReads()<a name="line.2662"></a> -<span class="sourceLineNo">2663</span> + ", skipping for now.");<a name="line.2663"></a> +<span class="sourceLineNo">2661</span> + " because of either isCompactedAway=" + file.isCompactedAway()<a name="line.2661"></a> +<span class="sourceLineNo">2662</span> + " or file has reference, isReferencedInReads=" + file.isReferencedInReads()<a name="line.2662"></a> +<span class="sourceLineNo">2663</span> + ", refCount=" + r.getRefCount() + ", skipping for now.");<a name="line.2663"></a> <span class="sourceLineNo">2664</span> }<a name="line.2664"></a> <span class="sourceLineNo">2665</span> } catch (Exception e) {<a name="line.2665"></a> <span class="sourceLineNo">2666</span> String msg = "Exception while trying to close the compacted store file " +<a name="line.2666"></a> -<span class="sourceLineNo">2667</span> file.getPath().getName();<a name="line.2667"></a> +<span class="sourceLineNo">2667</span> file.getPath();<a name="line.2667"></a> <span class="sourceLineNo">2668</span> if (storeClosing) {<a name="line.2668"></a> <span class="sourceLineNo">2669</span> msg = "Store is closing. " + msg;<a name="line.2669"></a> <span class="sourceLineNo">2670</span> }<a name="line.2670"></a>
