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

  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 as `Assignment` 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.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### InMemoryAssignmentBackend

    public InMemoryAssignmentBackend()

- ## Method Details

  - ### isSynchronized

    public boolean isSynchronized()
    Description copied from interface: `ILocalAssignmentsBackend`
    Decide if the assignments is synchronized from remote state-store.
    Specified by:
      `isSynchronized` in interface `ILocalAssignmentsBackend`

  - ### setSynchronized

    public void setSynchronized()
    Description copied from interface: `ILocalAssignmentsBackend`
    Mark this backend as synchronized when sync work is done.
    Specified by:
      `setSynchronized` in interface `ILocalAssignmentsBackend`

  - ### prepare

    public void prepare(Map conf)
    Description copied from interface: `ILocalAssignmentsBackend`
    Initial function for creating backend.
    Specified by:
      `prepare` in interface `ILocalAssignmentsBackend`
    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 interface `ILocalAssignmentsBackend`
    Parameters:
      `stormId` - storm runtime id
      `assignment` - assignment as thrift

  - ### getAssignment

    public Assignment getAssignment(String stormId)
    Description copied from interface: `ILocalAssignmentsBackend`
    Get assignment as `Assignment` for a storm.
    Specified by:
      `getAssignment` in interface `ILocalAssignmentsBackend`
    Parameters:
      `stormId` - storm runtime id
    Returns:
      assignment

  - ### removeAssignment

    public void removeAssignment(String stormId)
    Specified by:
      `removeAssignment` in interface `ILocalAssignmentsBackend`

  - ### assignments

    public List<String> assignments()
    Description copied from interface: `ILocalAssignmentsBackend`
    List all the storm runtime ids of local assignments.
    Specified by:
      `assignments` in interface `ILocalAssignmentsBackend`
    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 interface `ILocalAssignmentsBackend`
    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 interface `ILocalAssignmentsBackend`
    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 interface `ILocalAssignmentsBackend`
    Parameters:
      `stormName` - storm name
      `stormId` - storm runtime id

  - ### getStormId

    public String getStormId(String stormName)
    Description copied from interface: `ILocalAssignmentsBackend`
    Get storm runtime id from local.
    Specified by:
      `getStormId` in interface `ILocalAssignmentsBackend`
    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 interface `ILocalAssignmentsBackend`
    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 interface `ILocalAssignmentsBackend`
    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 interface `ILocalAssignmentsBackend`
    Parameters:
      `stormId` - storm id

  - ### close

    public void close()
    Description copied from interface: `ILocalAssignmentsBackend`
    Function to release resource.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `ILocalAssignmentsBackend`