You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "Kostas Kloudas (JIRA)" <ji...@apache.org> on 2017/11/15 16:14:01 UTC

[jira] [Created] (FLINK-8090) An operator should not be able to register two states with the same name.

Kostas Kloudas created FLINK-8090:
-------------------------------------

             Summary: An operator should not be able to register two states with the same name.
                 Key: FLINK-8090
                 URL: https://issues.apache.org/jira/browse/FLINK-8090
             Project: Flink
          Issue Type: Bug
          Components: DataStream API
    Affects Versions: 1.4.0
            Reporter: Kostas Kloudas


Currently a {{ProcessFunction}} like this is a valid job:

{code}
new ProcessFunction<Tuple2<Integer, Long>, Object>() {
				private static final long serialVersionUID = -805125545438296619L;

				private transient MapState<Integer, Tuple2<Integer, Long>> firstMapState;
				private transient MapState<Integer, Tuple2<Integer, Long>> secondMapState;

				@Override
				public void open(Configuration parameters) throws Exception {
					super.open(parameters);
					firstMapState = getRuntimeContext().getMapState(firstMapStateDescriptor);
					secondMapState = getRuntimeContext().getMapState(secondMapStateDescriptor);
				}

				@Override
				public void processElement(Tuple2<Integer, Long> value, Context ctx, Collector<Object> out) throws Exception {
					Tuple2<Integer, Long> v = firstMapState.get(value.f0);
					if (v == null) {
						v = new Tuple2<>(value.f0, 0L);
					}
					System.out.println(value);
					firstMapState.put(value.f0, new Tuple2<>(v.f0, v.f1 + value.f1));
				}
			}
{code}

This should not be the case, and the job should fail with an adequate message.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)