[ 
https://issues.apache.org/jira/browse/FLINK-6849?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16045475#comment-16045475
 ] 

mingleizhang commented on FLINK-6849:
-------------------------------------

[~tzulitai] [~srichter] I just do a little refactor for the 
{{OperatorStateBackend}} interface by adding two method. And below is it's the 
first version sample code. Please helps to reiview and provide some suggestions 
for this change. Thanks.

{code}/**
         * Creates or retrieves a operator state backed by this state backend.
         *
         * @param namespaceSerializer The serializer used for the namespace 
type of the state.
         * @param stateDescriptor The identifier for the state. This contains 
name and can create a default state value.
         *
         * @param <N> The type of the namespace.
         * @param <S> The type of the state.
         *
         * @return A new operator state backed by this backend.
         *
         * @throws Exception Exceptions may occur during initialization of the 
state and should be forwarded.
         */
        <N, S extends State, T> S getOrCreateOperatorState(
                        TypeSerializer<N> namespaceSerializer,
                        StateDescriptor<S, T> stateDescriptor) throws Exception;

        /**
         * Creates or retrieves a operator state backed by this backend.
         *
         * TODO: NOTE: This method does a lot of work caching / retrieving 
states just to update the namespace.
         *               This method should be removed for the sake of 
namespaces being lazily fetched from the operator
         *               state backend, or being set on the state directly.
         *
         * @param stateDescriptor The identifier for the state. This contains 
name and can create a default state value.
         *
         * @param <N> The type of the namespace.
         * @param <S> The type of the state.
         *
         * @return a new operator state backed by this backend.
         *
         * @throws Exception Exceptions may occur during initialization of the 
state and should be forwarded.
         */
        <N, S extends State> S getOperatorState(
                        N namespace,
                        TypeSerializer<N> namespaceSerializer,
                        StateDescriptor<S, ?> stateDescriptor) throws 
Exception;{code}

> Refactor operator state backend and internal operator state hierarchy
> ---------------------------------------------------------------------
>
>                 Key: FLINK-6849
>                 URL: https://issues.apache.org/jira/browse/FLINK-6849
>             Project: Flink
>          Issue Type: Improvement
>          Components: State Backends, Checkpointing
>            Reporter: Tzu-Li (Gordon) Tai
>
> Currently, compared to the keyed state backends, the operator state backends, 
> as well as operator state interfaces, lacks proper hierarchy.
> One issue with this lack of hierarchy is that the general concerns of 
> implementing state registration is different between the keyed and operator 
> backends (aside from what is naturally different, such as namespace and key 
> which is not relevant for the operator backend). For example, in the keyed 
> backend hierarchy, {{AbstractKeyedStateBackend}} has caches that shortcuts 
> re-accessing already registered state. This behaviour is missing in the 
> operator backend hierarchy, and for example needs to be explicitly handled by 
> the concrete {{DefaultOperatorStateBackend}} subclass implementation.
> As of now, the need of a proper hierarchy also on the operator backend side 
> might not be that prominent, but will mostly likely become more prominent  as 
> we wish to introduce more state structures for operator state (e.g. a 
> {{MapState}} for operator state has already been discussed a few times 
> already) as well as more options besides memory-backed operator state.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to