@Override public VersionedData<Assignment> assignmentInfoWithVersion(String stormId, Runnable callback) { if (callback != null) { assignmentInfoWithVersionCallback.put(stormId, callback); } Assignment assignment = null; Integer version = 0; VersionedData<byte[]> dataWithVersion = stateStorage.get_data_with_version(ClusterUtils.assignmentPath(stormId), callback != null); if (dataWithVersion != null) { assignment = ClusterUtils.maybeDeserialize(dataWithVersion.getData(), Assignment.class); version = dataWithVersion.getVersion(); } return new VersionedData<Assignment>(version, assignment); }
protected Map<String, VersionedData<Assignment>> getAssignmentsSnapshot(IStormClusterState stormClusterState, List<String> topoIds, Map<String, VersionedData<Assignment>> localAssignmentVersion, Runnable callback) throws Exception { Map<String, VersionedData<Assignment>> updateAssignmentVersion = new HashMap<>(); for (String topoId : topoIds) { Integer recordedVersion = -1; Integer version = stormClusterState.assignmentVersion(topoId, callback); VersionedData<Assignment> locAssignment = localAssignmentVersion.get(topoId); if (locAssignment != null) { recordedVersion = locAssignment.getVersion(); } if (version == null) { // ignore } else if (version.equals(recordedVersion)) { updateAssignmentVersion.put(topoId, locAssignment); } else { VersionedData<Assignment> assignmentVersion = stormClusterState.assignmentInfoWithVersion(topoId, callback); updateAssignmentVersion.put(topoId, assignmentVersion); } } return updateAssignmentVersion; }
@Override public VersionedData<Assignment> assignmentInfoWithVersion(String stormId, Runnable callback) { if (callback != null) { assignmentInfoWithVersionCallback.put(stormId, callback); } Assignment assignment = null; Integer version = 0; VersionedData<byte[]> dataWithVersion = stateStorage.get_data_with_version(ClusterUtils.assignmentPath(stormId), callback != null); if (dataWithVersion != null) { assignment = ClusterUtils.maybeDeserialize(dataWithVersion.getData(), Assignment.class); version = dataWithVersion.getVersion(); } return new VersionedData<Assignment>(version, assignment); }