DatanodeStorageInfo createProvidedStorage(DatanodeStorage ds) { assert null == storageMap.get(ds.getStorageID()); DatanodeStorageInfo storage = new ProvidedDatanodeStorageInfo(this, ds); storage.setHeartbeatedSinceFailover(true); storageMap.put(storage.getStorageID(), storage); return storage; }
@Override void setState(DatanodeStorage.State state) { if (state == State.FAILED) { // The state should change to FAILED only when there are no active // datanodes with PROVIDED storage. ProvidedDescriptor dn = (ProvidedDescriptor) getDatanodeDescriptor(); if (dn.activeProvidedDatanodes() == 0) { LOG.info("Provided storage {} transitioning to state {}", this, State.FAILED); super.setState(state); } } else { super.setState(state); } }
@Override boolean removeBlock(BlockInfo b) { ProvidedDescriptor dn = (ProvidedDescriptor) getDatanodeDescriptor(); if (dn.activeProvidedDatanodes() == 0) { return super.removeBlock(b); } else { return false; } }