private void runRepair(Subject subject, StorageNode storageNode) { scheduleOperation(subject, storageNode, new Configuration(), "repair", Hours.SIX.toStandardSeconds() .getSeconds()); }
@Override public void runRepair(Subject subject) { List<StorageNode> clusterNodes = storageNodeManager.getClusterNodes(); if (clusterNodes.size() == 1) { log.info("Skipping scheduled repair since this is a single-node cluster"); return; } log.info("Starting anti-entropy repair on storage cluster: " + clusterNodes); for (StorageNode node : clusterNodes) { node.setErrorMessage(null); node.setFailedOperation(null); node.setMaintenancePending(true); } StorageNode storageNode = storageNodeOperationsHandler.setMode(clusterNodes.get(0), StorageNode.OperationMode.MAINTENANCE); scheduleOperation(subject, storageNode, new Configuration(), "repair", Hours.SIX.toStandardSeconds() .getSeconds()); }
private void performRemoveNodeMaintenance(Subject subject, StorageNode storageNode, boolean runRepair, PropertyList seedsList, String removedNodeAddress) { if (log.isInfoEnabled()) { log.info("Running remove node maintenance for storage node " + storageNode); } Configuration params = new Configuration(); params.put(seedsList); params.put(new PropertySimple(RUN_REPAIR_PROPERTY, runRepair)); params.put(new PropertySimple(UPDATE_SEEDS_LIST, true)); params.put(new PropertySimple("removedNodeAddress", removedNodeAddress)); scheduleOperation(subject, storageNode, params, "removeNodeMaintenance", Hours.EIGHT.toStandardSeconds() .getSeconds()); }
private void performAddNodeMaintenance(Subject subject, StorageNode storageNode, boolean runRepair, PropertyList seedsList, String newNodeAddress) { if (log.isInfoEnabled()) { log.info("Running addNodeMaintenance for storage node " + storageNode); } Configuration params = new Configuration(); params.put(seedsList); params.put(new PropertySimple(RUN_REPAIR_PROPERTY, runRepair)); params.put(new PropertySimple(UPDATE_SEEDS_LIST, Boolean.TRUE)); params.put(new PropertySimple("newNodeAddress", newNodeAddress)); scheduleOperation(subject, storageNode, params, "addNodeMaintenance", Hours.EIGHT.toStandardSeconds() .getSeconds()); StorageClusterSettings settings = storageClusterSettingsManager.getClusterSettings(subject); storageNodeManager.scheduleSnapshotManagementOperationsForStorageNode(subject, storageNode, settings); }
private static boolean isToBeRefreshed(ServletServerHttpResponse res, long notModifiedSince, long lastModified, boolean isVersioned) { if (isVersioned) { res.getHeaders().setCacheControl(CACHE_CONTROL_WEEK); res.getHeaders().setExpires(lastModified + Weeks.ONE.toStandardSeconds().getSeconds() * 1000L); } else { res.getHeaders().setCacheControl(CACHE_CONTROL_HOUR); res.getHeaders().setExpires(lastModified + Hours.ONE.toStandardSeconds().getSeconds() * 1000L); } res.getHeaders().setLastModified(lastModified); if (lastModified > notModifiedSince + 1000L) { res.setStatusCode(HttpStatus.OK); return true; } else { res.setStatusCode(HttpStatus.NOT_MODIFIED); return false; } }