Package org.apache.storm.assignments
Class InMemoryAssignmentBackend
- java.lang.Object
-
- org.apache.storm.assignments.InMemoryAssignmentBackend
-
- All Implemented Interfaces:
AutoCloseable
,ILocalAssignmentsBackend
public class InMemoryAssignmentBackend extends Object implements ILocalAssignmentsBackend
An assignment backend which will keep all assignments and id-info in memory. Only used if no backend is specified internal.About thread safe: idToAssignment,idToName,nameToId are all memory cache in nimbus local, for
- idToAssignment: nimbus will modify it and supervisors will sync it at fixed interval, so the assignments would come to eventual consistency.
- idToName: storm submitting/killing is guarded by the same lock, a
ConcurrentHashMap
is ok. - nameToId: same as idToName.
-
-
Constructor Summary
Constructors Constructor Description InMemoryAssignmentBackend()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<String>
assignments()
List all the storm runtime ids of local assignments.Map<String,Assignment>
assignmentsInfo()
Get all the local assignments of local state.void
clearStateForStorm(String stormId)
Clear all the state for a storm.void
close()
Function to release resource.void
deleteStormId(String stormName)
Delete a local cache of stormId which is mapped to a specific storm name.Assignment
getAssignment(String stormId)
Get assignment asAssignment
for a storm.String
getStormId(String stormName)
Get storm runtime id from local.boolean
isSynchronized()
Decide if the assignments is synchronized from remote state-store.void
keepOrUpdateAssignment(String stormId, Assignment assignment)
Keep a storm assignment to local state or update old assignment.void
keepStormId(String stormName, String stormId)
Keep a mapping storm-name -> storm-id to local state.void
prepare(Map conf)
Initial function for creating backend.void
removeAssignment(String stormId)
void
setSynchronized()
Mark this backend as synchronized when sync work is done.void
syncRemoteAssignments(Map<String,byte[]> remote)
Sync remote assignments to local, if remote is null, we will sync it from zk.void
syncRemoteIds(Map<String,String> remote)
Sync remote storm ids to local, will just used for nimbus.
-
-
-
Method Detail
-
isSynchronized
public boolean isSynchronized()
Description copied from interface:ILocalAssignmentsBackend
Decide if the assignments is synchronized from remote state-store.- Specified by:
isSynchronized
in interfaceILocalAssignmentsBackend
-
setSynchronized
public void setSynchronized()
Description copied from interface:ILocalAssignmentsBackend
Mark this backend as synchronized when sync work is done.- Specified by:
setSynchronized
in interfaceILocalAssignmentsBackend
-
prepare
public void prepare(Map conf)
Description copied from interface:ILocalAssignmentsBackend
Initial function for creating backend.- Specified by:
prepare
in interfaceILocalAssignmentsBackend
- Parameters:
conf
- config
-
keepOrUpdateAssignment
public void keepOrUpdateAssignment(String stormId, Assignment assignment)
Description copied from interface:ILocalAssignmentsBackend
Keep a storm assignment to local state or update old assignment.- Specified by:
keepOrUpdateAssignment
in interfaceILocalAssignmentsBackend
- Parameters:
stormId
- storm runtime idassignment
- assignment as thrift
-
getAssignment
public Assignment getAssignment(String stormId)
Description copied from interface:ILocalAssignmentsBackend
Get assignment asAssignment
for a storm.- Specified by:
getAssignment
in interfaceILocalAssignmentsBackend
- Parameters:
stormId
- storm runtime id- Returns:
- assignment
-
removeAssignment
public void removeAssignment(String stormId)
- Specified by:
removeAssignment
in interfaceILocalAssignmentsBackend
-
assignments
public List<String> assignments()
Description copied from interface:ILocalAssignmentsBackend
List all the storm runtime ids of local assignments.- Specified by:
assignments
in interfaceILocalAssignmentsBackend
- Returns:
- a list of storm ids
-
assignmentsInfo
public Map<String,Assignment> assignmentsInfo()
Description copied from interface:ILocalAssignmentsBackend
Get all the local assignments of local state.- Specified by:
assignmentsInfo
in interfaceILocalAssignmentsBackend
- Returns:
- mapping of storm-id -> assignment
-
syncRemoteAssignments
public void syncRemoteAssignments(Map<String,byte[]> remote)
Description copied from interface:ILocalAssignmentsBackend
Sync remote assignments to local, if remote is null, we will sync it from zk.- Specified by:
syncRemoteAssignments
in interfaceILocalAssignmentsBackend
- Parameters:
remote
- specific remote assignments, if it is null, it will sync from zookeeper[only used for nimbus]
-
keepStormId
public void keepStormId(String stormName, String stormId)
Description copied from interface:ILocalAssignmentsBackend
Keep a mapping storm-name -> storm-id to local state.- Specified by:
keepStormId
in interfaceILocalAssignmentsBackend
- Parameters:
stormName
- storm namestormId
- storm runtime id
-
getStormId
public String getStormId(String stormName)
Description copied from interface:ILocalAssignmentsBackend
Get storm runtime id from local.- Specified by:
getStormId
in interfaceILocalAssignmentsBackend
- Parameters:
stormName
- name of a storm- Returns:
- runtime storm id
-
syncRemoteIds
public void syncRemoteIds(Map<String,String> remote)
Description copied from interface:ILocalAssignmentsBackend
Sync remote storm ids to local, will just used for nimbus.- Specified by:
syncRemoteIds
in interfaceILocalAssignmentsBackend
- Parameters:
remote
- remote ids from state store
-
deleteStormId
public void deleteStormId(String stormName)
Description copied from interface:ILocalAssignmentsBackend
Delete a local cache of stormId which is mapped to a specific storm name.- Specified by:
deleteStormId
in interfaceILocalAssignmentsBackend
- Parameters:
stormName
- storm name
-
clearStateForStorm
public void clearStateForStorm(String stormId)
Description copied from interface:ILocalAssignmentsBackend
Clear all the state for a storm.- Specified by:
clearStateForStorm
in interfaceILocalAssignmentsBackend
- Parameters:
stormId
- storm id
-
close
public void close()
Description copied from interface:ILocalAssignmentsBackend
Function to release resource.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceILocalAssignmentsBackend
-
-