public void update(KeyExtent ke, TabletState state, boolean chopped, boolean hasWALs) { if (info.getState().equals(MergeState.NONE)) return; if (!upperSplit && info.getExtent().getEndRow().equals(ke.getPrevEndRow())) { log.info("Upper split found"); upperSplit = true; } if (!lowerSplit && info.getExtent().getPrevEndRow().equals(ke.getEndRow())) { log.info("Lower split found"); lowerSplit = true; } if (!info.overlaps(ke)) return; if (info.needsToBeChopped(ke)) { this.needsToBeChopped++; if (chopped) { if (state.equals(TabletState.HOSTED)) { this.chopped++; } else if (!hasWALs) { this.chopped++; } } } this.total++; if (state.equals(TabletState.HOSTED)) this.hosted++; if (state.equals(TabletState.UNASSIGNED) || state.equals(TabletState.SUSPENDED)) this.unassigned++; }
public int unassigned() { return counts[TabletState.UNASSIGNED.ordinal()]; }
@Override public void run() { Thread.currentThread().setName("Watching " + store.name()); int[] oldCounts = new int[TabletState.values().length]; EventCoordinator.Listener eventListener = this.master.nextEvent.getListener(); int[] counts = new int[TabletState.values().length]; stats.begin(); counts[state.ordinal()]++; for (TabletState state : TabletState.values()) { int i = state.ordinal(); if (counts[i] > 0 && counts[i] != oldCounts[i]) { this.master.nextEvent.event("[%s]: %d tablets are %s", store.name(), counts[i], state.name());
int[] oldCounts = new int[TabletState.values().length]; EventCoordinator.Listener eventListener = nextEvent.getListener(); Map<KeyExtent,TServerInstance> unassigned = new HashMap<KeyExtent,TServerInstance>(); int[] counts = new int[TabletState.values().length]; stats.begin(); counts[state.ordinal()]++; for (TabletState state : TabletState.values()) { int i = state.ordinal(); if (counts[i] > 0 && counts[i] != oldCounts[i]) { nextEvent.event("[%s]: %d tablets are %s", store.name(), counts[i], state.name());
@Override public void run() { Thread.currentThread().setName("Watching " + store.name()); int[] oldCounts = new int[TabletState.values().length]; EventCoordinator.Listener eventListener = this.master.nextEvent.getListener(); int[] counts = new int[TabletState.values().length]; stats.begin(); counts[state.ordinal()]++; for (TabletState state : TabletState.values()) { int i = state.ordinal(); if (counts[i] > 0 && counts[i] != oldCounts[i]) { this.master.nextEvent.event("[%s]: %d tablets are %s", store.name(), counts[i], state.name());
public int hosted() { return counts[TabletState.HOSTED.ordinal()]; }
private void sendChopRequest(MergeInfo info, TabletState state, TabletLocationState tls) { // Don't bother if we're in the wrong state if (!info.getState().equals(MergeState.WAITING_FOR_CHOPPED)) return; // Tablet must be online if (!state.equals(TabletState.HOSTED)) return; // Tablet isn't already chopped if (tls.chopped) return; // Tablet ranges intersect if (info.needsToBeChopped(tls.extent)) { TServerConnection conn; try { conn = this.master.tserverSet.getConnection(tls.current); if (conn != null) { Master.log.info("Asking {} to chop {}", tls.current, tls.extent); conn.chop(this.master.masterLock, tls.extent); } else { Master.log.warn("Could not connect to server {}", tls.current); } } catch (TException e) { Master.log.warn("Communications error asking tablet server to chop a tablet"); } } }
public int suspended() { return counts[TabletState.SUSPENDED.ordinal()]; } }
return; if (!state.equals(TabletState.HOSTED)) return;
public int assignedToDeadServers() { return counts[TabletState.ASSIGNED_TO_DEAD_SERVER.ordinal()]; }
return TabletGoalState.HOSTED; case WAITING_FOR_CHOPPED: if (tls.getState(tserverSet.getCurrentServers()).equals(TabletState.HOSTED)) { if (tls.chopped) return TabletGoalState.UNASSIGNED;
public int assigned() { return counts[TabletState.ASSIGNED.ordinal()]; }
@Override public long isReady(long tid, Master master) throws Exception { if (!master.hasCycled(creationTime)) { return 50; } boolean done = true; Range tableRange = new KeyExtent(tableId, null, null).toMetadataRange(); Scanner scanner = master.getContext().createScanner(MetadataTable.NAME, Authorizations.EMPTY); MetaDataTableScanner.configureScanner(scanner, master); scanner.setRange(tableRange); for (Entry<Key,Value> entry : scanner) { TabletLocationState locationState = MetaDataTableScanner .createTabletLocationState(entry.getKey(), entry.getValue()); TabletState state = locationState.getState(master.onlineTabletServers()); if (!state.equals(TabletState.UNASSIGNED)) { // This code will even wait on tablets that are assigned to dead tablets servers. This is // intentional because the master may make metadata writes for these tablets. See #587 log.debug("Still waiting for table to be deleted: " + tableId + " locationState: " + locationState); done = false; break; } } if (!done) return 50; return 0; }
public synchronized void update(Table.ID tableId, TabletState state) { TableCounts counts = next.get(tableId); if (counts == null) { counts = new TableCounts(); next.put(tableId, counts); } counts.counts[state.ordinal()]++; }
public void update(KeyExtent ke, TabletState state, boolean chopped, boolean hasWALs) { if (info.getState().equals(MergeState.NONE)) return; if (!upperSplit && info.getExtent().getEndRow().equals(ke.getPrevEndRow())) { log.info("Upper split found"); upperSplit = true; } if (!lowerSplit && info.getExtent().getPrevEndRow().equals(ke.getEndRow())) { log.info("Lower split found"); lowerSplit = true; } if (!info.overlaps(ke)) return; if (info.needsToBeChopped(ke)) { this.needsToBeChopped++; if (chopped) { if (state.equals(TabletState.HOSTED)) { this.chopped++; } else if (!hasWALs) { this.chopped++; } } } this.total++; if (state.equals(TabletState.HOSTED)) this.hosted++; if (state.equals(TabletState.UNASSIGNED) || state.equals(TabletState.SUSPENDED)) this.unassigned++; }
public int hosted() { return counts[TabletState.HOSTED.ordinal()]; } }
private void sendChopRequest(MergeInfo info, TabletState state, TabletLocationState tls) { // Don't bother if we're in the wrong state if (!info.getState().equals(MergeState.WAITING_FOR_CHOPPED)) return; // Tablet must be online if (!state.equals(TabletState.HOSTED)) return; // Tablet isn't already chopped if (tls.chopped) return; // Tablet ranges intersect if (info.needsToBeChopped(tls.extent)) { TServerConnection conn; try { conn = tserverSet.getConnection(tls.current); if (conn != null) { log.info("Asking " + tls.current + " to chop " + tls.extent); conn.chop(masterLock, tls.extent); } else { log.warn("Could not connect to server " + tls.current); } } catch (TException e) { log.warn("Communications error asking tablet server to chop a tablet"); } } }
public int hosted() { return counts[TabletState.HOSTED.ordinal()]; }
private void sendChopRequest(MergeInfo info, TabletState state, TabletLocationState tls) { // Don't bother if we're in the wrong state if (!info.getState().equals(MergeState.WAITING_FOR_CHOPPED)) return; // Tablet must be online if (!state.equals(TabletState.HOSTED)) return; // Tablet isn't already chopped if (tls.chopped) return; // Tablet ranges intersect if (info.needsToBeChopped(tls.extent)) { TServerConnection conn; try { conn = this.master.tserverSet.getConnection(tls.current); if (conn != null) { Master.log.info("Asking " + tls.current + " to chop " + tls.extent); conn.chop(this.master.masterLock, tls.extent); } else { Master.log.warn("Could not connect to server " + tls.current); } } catch (TException e) { Master.log.warn("Communications error asking tablet server to chop a tablet"); } } }
public int suspended() { return counts[TabletState.SUSPENDED.ordinal()]; } }