[
https://issues.apache.org/jira/browse/SAMZA-899?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jagadish updated SAMZA-899:
---------------------------
Description:
The current design of the JobModel class takes in a LocalityManager instance.
The JobModel class also populates and mutates the container host mappings by
reading from the LocalityManager. This state in the class is also mutated by
the methods that make a call to populateContainerToHost mappings.
The JobModel class should *not* know who its LocalityManager is. The JobModel
class must merely take in a *final* container-host mapping as a part of its
constructor. (as opposed to taking in a LocalityManager and mutating state)
The JobModel class is currently shared from multiple threads, hence it's
dangerous to expose public methods that mutate state without proper
synchronization.
This re-design will ensure that the JobModel will be immutable and merely
expose getters. This is important as the JobModel evolves into a standard
interface that all systems that integrate with Samza will have to provide.
was:
The current design of the JobModel class takes in a LocalityManager instance.
The JobModel class also populates and mutates the container host mappings by
reading from the LocalityManager. This state in the class is also mutated by
the methods that make a call to populateContainerToHost mappings.
Mutation of this state must be done external to the JobModel class. The
JobModel class should *not* know who its LocalityManager is. The JobModel class
must merely take in a *final* container-host mapping as a part of its
constructor.
This re-design will ensure that the JobModel will be immutable and merely
expose getters.
The JobModel class is shared from multiple threads, hence it's dangerous to
expose methods that mutate state without proper synchronization.
> Re-design the JobModel class
> ----------------------------
>
> Key: SAMZA-899
> URL: https://issues.apache.org/jira/browse/SAMZA-899
> Project: Samza
> Issue Type: Bug
> Reporter: Jagadish
>
> The current design of the JobModel class takes in a LocalityManager instance.
> The JobModel class also populates and mutates the container host mappings by
> reading from the LocalityManager. This state in the class is also mutated by
> the methods that make a call to populateContainerToHost mappings.
> The JobModel class should *not* know who its LocalityManager is. The JobModel
> class must merely take in a *final* container-host mapping as a part of its
> constructor. (as opposed to taking in a LocalityManager and mutating state)
> The JobModel class is currently shared from multiple threads, hence it's
> dangerous to expose public methods that mutate state without proper
> synchronization.
> This re-design will ensure that the JobModel will be immutable and merely
> expose getters. This is important as the JobModel evolves into a standard
> interface that all systems that integrate with Samza will have to provide.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)