Hi Max,
I can do that, but the correct solution seems not to be that easy. I
think that changing either variant is a breaking change - the new
version will not correctly load from previous version of state
checkpoint. That is a serious problem, because pipelines would not be
easily upgradable. It looks a little "better" to change
StateNamespaces.global(), as it is used less often, but it is not a good
solution either. A correct solution would be somewhat complex I'm afraid
- i.e. in namespace '/' try to fetch '/' first, and if it is not
present, fetch '//'. Use '/' for storing.
Any other ideas?
Jan
On 8/16/19 12:14 PM, Maximilian Michels wrote:
Hi Jan,
I don't think this is intentional. It looks like an inconsistency which
could result in unexpected behavior in UDFs, e.g. when storing state and
timers.
Want to open a PR?
-Max
On 12.08.19 14:22, Jan Lukavský wrote:
Hi,
I noticed, that StateNamespaces.global() generates a different stringKey
than StateNamespaces.window(GlobalWindowCoder, GlobalWindow). In the
first case, the stringKey will be simply '/', in the other it will be
'//'. That has some other implications, like that
StateNamespaces.fromString(StateNamespaces.window(GlobalWindowCoder,
GlobalWindow).stringKey()) != StateNamespaces.global().
It looks like a bug, but maybe I'm wrong - is this intentional?
Jan