Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id EFE6F200BBE for ; Fri, 11 Nov 2016 18:19:32 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id ECC11160AF6; Fri, 11 Nov 2016 17:19:32 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id F1731160AEE for ; Fri, 11 Nov 2016 18:19:30 +0100 (CET) Received: (qmail 43671 invoked by uid 500); 11 Nov 2016 17:19:30 -0000 Mailing-List: contact user-help@flink.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@flink.apache.org Delivered-To: mailing list user@flink.apache.org Received: (qmail 43662 invoked by uid 99); 11 Nov 2016 17:19:30 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 11 Nov 2016 17:19:30 +0000 Received: from mail-it0-f49.google.com (mail-it0-f49.google.com [209.85.214.49]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id 6D9C81A026E for ; Fri, 11 Nov 2016 17:19:29 +0000 (UTC) Received: by mail-it0-f49.google.com with SMTP id e187so338182275itc.0 for ; Fri, 11 Nov 2016 09:19:29 -0800 (PST) X-Gm-Message-State: ABUngvdHRhstIL0hGxny1uliEnXig8EHvT39rFketSAEvuWbuN5u4fkqObKRCI9HDKTX4pWntCf1sFa6Fw/dGw== X-Received: by 10.36.101.79 with SMTP id u76mr24493785itb.72.1478884766476; Fri, 11 Nov 2016 09:19:26 -0800 (PST) MIME-Version: 1.0 References: <3da4525d-22b9-921d-4ecd-6eaccb3bf399@tngtech.com> <62goq16nb7b5l8njop95faqt.1478693773257@email.android.com> <3d68668f-379d-56cf-7665-90553745e221@tngtech.com> <2f3311af-b391-850f-5a5f-4eaf45b5f474@tngtech.com> In-Reply-To: <2f3311af-b391-850f-5a5f-4eaf45b5f474@tngtech.com> From: Aljoscha Krettek Date: Fri, 11 Nov 2016 17:19:15 +0000 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: Window PURGE Behaviour 1.0.2 vs 1.1.3 To: user@flink.apache.org Content-Type: multipart/alternative; boundary=001a113f821a2b75ce054109b19f archived-at: Fri, 11 Nov 2016 17:19:33 -0000 --001a113f821a2b75ce054109b19f Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi, I think the jar files in the lib folder are checked first so shipping the WindowOperator with the job should not work. Cheers, Aljoscha On Thu, 10 Nov 2016 at 17:48 Konstantin Knauf wrote: > Hi Aljoscha, > > alright, for the time being I have modified the WindowOperator and built > flink-streaming-java for our team. When you only change the > WindowOperator class, is it safe to just bundle it with the job? I.e. > does this class have precedence over the class in the binary bundle of > flink? > > Cheers, > > Konstantin > > On 10.11.2016 14:48, Aljoscha Krettek wrote: > > Hi, > > there were some discussions on the ML and it seems that the consensus i= s > > to aim for a release this year. > > > > Let me think a bit more and get back to you on the other issues. > > > > Cheers, > > Aljoscha > > > > On Thu, 10 Nov 2016 at 11:47 Konstantin Knauf > > > > wrote: > > > > Hi Aljoscha, > > > > unfortunately, I think, FLINK-4994 would not solve our issue. What > does > > "on the very end" mean in case of a GlobalWindow? > > > > FLINK-4369 would fix my workaround though. Is there already a > timeline > > for Flink 1.2? > > > > Cheers, > > > > > > Konst > > > > On 10.11.2016 10:19, Aljoscha Krettek wrote: > > > Hi Konstantin, > > > evicting elements not being evicted is a bug that should be fixed > for > > > Flink 1.2: https://issues.apache.org/jira/browse/FLINK-4369. > > > > > > The check about non-existing window state when triggering was > > introduced > > > because otherwise a Trigger could return FIRE and then there woul= d > be > > > nothing to fire. I guess if we did indeed fire the trigger even > with > > > non-existing state then some people might wonder why no emission = is > > > triggered when their trigger returns FIRE. I see your point > > though, that > > > the omitted firing is problematic for some cases. > > > > > > I think having clear() as proposed > > > in https://issues.apache.org/jira/browse/FLINK-4994 would solve > your > > > case. You were using your own cleanup timer as a workaround becau= se > > > clear() is currently also called on PURGE. With clear() only bein= g > > > called at the very end this should work, correct? > > > > > > Cheers, > > > Aljoscha > > > > > > On Wed, 9 Nov 2016 at 19:53 Konstantin Knauf > > > > > > > >> wrote: > > > > > > Hi Aljoscha, > > > > > > as it turns out the "workaround" I was thinking was > functionally > > > working, but had a so to say memory leak. I was under the > > impression > > > that evicted elements will be removed from the window state..= . > > > > > > Anyway, I think that this (triggers not being evaluated when > > the window > > > state is null) turns out to be blocker for us. > > > > > > Why is this check done? Since a user can do basically whateve= r > > she likes > > > in onProcessingTimeTimer() the comment > > > > > > // if we have no state, there is nothing to do > > > > > > is, well, just not true in some cases (e.g. state updates in > > our case). > > > > > > Cheers, > > > > > > Konstantin > > > > > > On 09.11.2016 14:17, Aljoscha Krettek wrote: > > > > Could you go into some detail of why you need to keep the > > trigger > > > state? > > > > > > > > Just the basics because you probably cannot (should not) ta= lk > > > about your > > > > internal stuff. > > > > > > > > On Wed, 9 Nov 2016 at 13:16 Konstantin Knauf > > > > > > > > > > > > > > > > > > >>> wrote: > > > > > > > > Sounds good Aljoscha. > > > > > > > > sent from my phone. Plz excuse brevity and tpyos. > > > > --- > > > > Konstantin Knauf *konstantin.knauf@tngtech.com > > > > > > > > > > > > > > > > >> * +49-174-3413182 > <0174%203413182> > > > > > > > > > > > > > > > > > TNG Technology Consulting GmbH, Betastr. 13a, 85774 > > Unterf=C3=B6hring > > > > Gesch=C3=A4ftsf=C3=BChrer: Henrik Klagges, Christoph St= ock, Dr. > Robert > > > Dahlke > > > > > > > > ---- Aljoscha Krettek schrieb ---- > > > > > > > > > > > > Hi, > > > > exactly for this case I want to make a change to when > > > > Trigger.clear() is > > > > called: https://issues.apache.org/jira/browse/FLINK-499= 4 > > > > > > > > Right now, clear is called when the window is being > garbage > > > > collected because we passed the allowed lateness (after > > this, > > > > nothing will ever be added to a window again) and also > > when the > > > > Trigger returns PURGE or FIRE_AND_PURGE. > > > > > > > > I want to change it to only be called in the former > > case. We could > > > > possibly add an onPurge() callback to allow cleaning > > state on > > > purge > > > > or require people to put the code that they want to run > on > > > PURGE in > > > > the Trigger method that returns the PURGE. > > > > > > > > What do you think? > > > > > > > > Cheers, > > > > Aljoscha > > > > > > > > On Tue, 8 Nov 2016 at 18:46 Konstantin Knauf > > > > > > > > > > > > > > > > > > >>> > > > > wrote: > > > > > > > > Hi Aljoscha, > > > > > > > > interesting, this explains it. Well, in our case th= e > > PURGE > > > in the > > > > onProcessingTimeTimer is only used to clear > > > KeyValueStates*, and > > > > at this > > > > point there are usually no records in the window > state. > > > > > > > > Any Ideas? > > > > > > > > I do have a workaround with an evictor, but it > > seemed to be > > > > unnecessarily complicated. > > > > > > > > *We can not use clear()-callback for that, since th= is > > > state should > > > > survive the FIRE_AND_PURGEs in the onElement()-call= s. > > > > > > > > Cheers, > > > > > > > > Konstantin > > > > > > > > > > > > On 08.11.2016 18:31, Aljoscha Krettek wrote: > > > > > Hi, > > > > > the timers are not actually deleted but the > > WindowOperator > > > > will check > > > > > whether there is any window state associated with > > the window > > > > for which > > > > > the timer fires. If there is no window state the > > timer will > > > > silently be > > > > > ignored. > > > > > > > > > > Is this a problem for you or did you just want to > > > clarify? If > > > > yes, then > > > > > we should work on finding a solution. > > > > > > > > > > Cheers, > > > > > Aljoscha > > > > > > > > > > On Tue, 8 Nov 2016 at 18:18 Konstantin Knauf > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > >>>> wrote: > > > > > > > > > > Hi everyone, > > > > > > > > > > I just migrated a streaming Job from 1.0.2 to > > 1.1.3 and > > > > stumbled across > > > > > a problem concerning one of our custom > triggers. > > > > > > > > > > The trigger basically FIRE_AND_PURGEs multipl= e > > times in > > > > onElement() and > > > > > the window is PURGEd onProcessingTimeTimer(), > > but it > > > seems > > > > that the all > > > > > registered processing time timers are deleted > > everytime > > > > the window is > > > > > PURGEd. > > > > > > > > > > clear() is the default implementation, i.e. > no-op. > > > > > > > > > > Just wanted to, if this is the expected > behavior > > > > (processing time timers > > > > > being deleted on PURGE or FIRE_AND_PURGE) fro= m > > Flink > > > 1.1 on? > > > > > > > > > > Cheers, > > > > > > > > > > Konstantin > > > > > > > > > > -- > > > > > Konstantin Knauf * > > konstantin.knauf@tngtech.com > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > >>> * +49-174-3413182 > <0174%203413182> > > > > > > > > > > > > > > > > > > > TNG Technology Consulting GmbH, Betastr. 13a, > > 85774 > > > > Unterf=C3=B6hring > > > > > Gesch=C3=A4ftsf=C3=BChrer: Henrik Klagges, Ch= ristoph > > Stock, Dr. > > > > Robert Dahlke > > > > > Sitz: Unterf=C3=B6hring * Amtsgericht M=C3=BC= nchen * HRB > > 135082 > > > > > > > > > > > > > > > > > > -- > > > > Konstantin Knauf * konstantin.knauf@tngtech.com > > > > > > > > > > > > > > > > >> * +49-174-3413182 > <0174%203413182> > > > > > > > > > > > > > TNG Technology Consulting GmbH, Betastr. 13a, 85774 > > > Unterf=C3=B6hring > > > > Gesch=C3=A4ftsf=C3=BChrer: Henrik Klagges, Christop= h Stock, Dr. > > > Robert Dahlke > > > > Sitz: Unterf=C3=B6hring * Amtsgericht M=C3=BCnchen = * HRB 135082 > > > > > > > > > > -- > > > Konstantin Knauf * konstantin.knauf@tngtech.com > > > > > > > * +49-174-3413182 > <0174%203413182> > > > > > > > > TNG Technology Consulting GmbH, Betastr. 13a, 85774 > Unterf=C3=B6hring > > > Gesch=C3=A4ftsf=C3=BChrer: Henrik Klagges, Christoph Stock, D= r. Robert > > Dahlke > > > Sitz: Unterf=C3=B6hring * Amtsgericht M=C3=BCnchen * HRB 1350= 82 > > > > > > > -- > > Konstantin Knauf * konstantin.knauf@tngtech.com > > * +49-174-3413182 > <0174%203413182> > > > > TNG Technology Consulting GmbH, Betastr. 13a, 85774 Unterf=C3=B6hri= ng > > Gesch=C3=A4ftsf=C3=BChrer: Henrik Klagges, Christoph Stock, Dr. Rob= ert Dahlke > > Sitz: Unterf=C3=B6hring * Amtsgericht M=C3=BCnchen * HRB 135082 > > > > -- > Konstantin Knauf * konstantin.knauf@tngtech.com * +49-174-3413182 > <0174%203413182> > TNG Technology Consulting GmbH, Betastr. 13a, 85774 Unterf=C3=B6hring > Gesch=C3=A4ftsf=C3=BChrer: Henrik Klagges, Christoph Stock, Dr. Robert Da= hlke > Sitz: Unterf=C3=B6hring * Amtsgericht M=C3=BCnchen * HRB 135082 > > --001a113f821a2b75ce054109b19f Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,
I think the jar files in the lib folder are checke= d first so shipping the WindowOperator with the job should not work.
<= div>
Cheers,
Aljoscha=C2=A0

On Thu, 10 Nov 2016 at 17:48 Konstantin= Knauf <konstantin.knauf= @tngtech.com> wrote:
Hi Aljo= scha,

alright, for the time being I have modified the WindowOperator and built flink-streaming-java for our team. When you only change the
WindowOperator class, is it safe to just bundle it with the job? I.e.
does this class have precedence over the class in the binary bundle of
flink?

Cheers,

Konstantin

On 10.11.2016 14:48, Aljoscha Krettek wrote:
> Hi,
> there were some discussions on the ML and it seems that the consensus = is
> to aim for a release this year.
>
> Let me think a bit more and get back to you on the other issues.
>
> Cheers,
> Aljoscha
>
> On Thu, 10 Nov 2016 at 11:47 Konstantin Knauf
> <konstantin.knauf@tngtech.com <mailto:= konstantin.knauf@tngtech.com>> wrote:
>
>=C2=A0 =C2=A0 =C2=A0Hi Aljoscha,
>
>=C2=A0 =C2=A0 =C2=A0unfortunately, I think, FLINK-4994 would not solve = our issue. What does
>=C2=A0 =C2=A0 =C2=A0"on the very end" mean in case of a Globa= lWindow?
>
>=C2=A0 =C2=A0 =C2=A0FLINK-4369 would fix my workaround though. Is there= already a timeline
>=C2=A0 =C2=A0 =C2=A0for Flink 1.2?
>
>=C2=A0 =C2=A0 =C2=A0Cheers,
>
>
>=C2=A0 =C2=A0 =C2=A0Konst
>
>=C2=A0 =C2=A0 =C2=A0On 10.11.2016 10:19, Aljoscha Krettek wrote:
>=C2=A0 =C2=A0 =C2=A0> Hi Konstantin,
>=C2=A0 =C2=A0 =C2=A0> evicting elements not being evicted is a bug t= hat should be fixed for
>=C2=A0 =C2=A0 =C2=A0> Flink 1.2: https://issues.apache.org/jira/browse/FLINK-4369.
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0> The check about non-existing window state when= triggering was
>=C2=A0 =C2=A0 =C2=A0introduced
>=C2=A0 =C2=A0 =C2=A0> because otherwise a Trigger could return FIRE = and then there would be
>=C2=A0 =C2=A0 =C2=A0> nothing to fire. I guess if we did indeed fire= the trigger even with
>=C2=A0 =C2=A0 =C2=A0> non-existing state then some people might wond= er why no emission is
>=C2=A0 =C2=A0 =C2=A0> triggered when their trigger returns FIRE. I s= ee your point
>=C2=A0 =C2=A0 =C2=A0though, that
>=C2=A0 =C2=A0 =C2=A0> the omitted firing is problematic for some cas= es.
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0> I think having clear() as proposed
>=C2=A0 =C2=A0 =C2=A0> in = https://issues.apache.org/jira/browse/FLINK-4994 would solve your
>=C2=A0 =C2=A0 =C2=A0> case. You were using your own cleanup timer as= a workaround because
>=C2=A0 =C2=A0 =C2=A0> clear() is currently also called on PURGE. Wit= h clear() only being
>=C2=A0 =C2=A0 =C2=A0> called at the very end this should work, corre= ct?
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0> Cheers,
>=C2=A0 =C2=A0 =C2=A0> Aljoscha
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0> On Wed, 9 Nov 2016 at 19:53 Konstantin Knauf >=C2=A0 =C2=A0 =C2=A0> <konstantin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:
konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0<mailto:
konstantin.knauf@tngtech.com<= /a>
>=C2=A0 =C2=A0 =C2=A0<mailto:
konstantin.knauf@tngtech.com<= /a>>>> wrote:
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Hi Aljoscha,
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0as it turns out the "w= orkaround" I was thinking was functionally
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0working, but had a so to sa= y memory leak. I was under the
>=C2=A0 =C2=A0 =C2=A0impression
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0that evicted elements will = be removed from the window state...
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Anyway, I think that this (= triggers not being evaluated when
>=C2=A0 =C2=A0 =C2=A0the window
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0state is null) turns out to= be blocker for us.
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Why is this check done? Sin= ce a user can do basically whatever
>=C2=A0 =C2=A0 =C2=A0she likes
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0in onProcessingTimeTimer() = the comment
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0// if we have no state, the= re is nothing to do
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0is, well, just not true in = some cases (e.g. state updates in
>=C2=A0 =C2=A0 =C2=A0our case).
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Cheers,
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Konstantin
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0On 09.11.2016 14:17, Aljosc= ha Krettek wrote:
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0> Could you go into some= detail of why you need to keep the
>=C2=A0 =C2=A0 =C2=A0trigger
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0state?
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0> Just the basics becaus= e you probably cannot (should not) talk
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0about your
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0> internal stuff.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0> On Wed, 9 Nov 2016 at = 13:16 Konstantin Knauf
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0> <
konstan= tin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>>> wrote:
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Sou= nds good Aljoscha.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0sen= t from my phone. Plz excuse brevity and tpyos.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0---=
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Kon= stantin Knauf *
konstantin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<= ;mailto:
konstantin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>> * +49-174-3413182
>=C2=A0 =C2=A0 =C2=A0<tel:0174%203413182>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<tel:0174%203413182><= br class=3D"gmail_msg"> >=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<= ;tel:0174%203413182>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0TNG= Technology Consulting GmbH, Betastr. 13a, 85774
>=C2=A0 =C2=A0 =C2=A0Unterf=C3=B6hring
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Ges= ch=C3=A4ftsf=C3=BChrer: Henrik Klagges, Christoph Stock, Dr. Robert
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Dahlke
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0---= - Aljoscha Krettek schrieb ----
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Hi,=
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0exa= ctly for this case I want to make a change to when
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Tri= gger.clear() is
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0cal= led: https://issues.apache.org/j= ira/browse/FLINK-4994
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Rig= ht now, clear is called when the window is being garbage
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0col= lected because we passed the allowed lateness (after
>=C2=A0 =C2=A0 =C2=A0this,
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0not= hing will ever be added to a window again) and also
>=C2=A0 =C2=A0 =C2=A0when the
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Tri= gger returns PURGE or FIRE_AND_PURGE.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0I w= ant to change it to only be called in the former
>=C2=A0 =C2=A0 =C2=A0case. We could
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0pos= sibly add an onPurge() callback to allow cleaning
>=C2=A0 =C2=A0 =C2=A0state on
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0purge
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0or = require people to put the code that they want to run on
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0PURGE in
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0the= Trigger method that returns the PURGE.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Wha= t do you think?
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Che= ers,
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Alj= oscha
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0On = Tue, 8 Nov 2016 at 18:46 Konstantin Knauf
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<= ;konstantin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0wro= te:
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0Hi Aljoscha,
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0interesting, this explains it. Well, in our case the
>=C2=A0 =C2=A0 =C2=A0PURGE
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0in the
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0onProcessingTimeTimer is only used to clear
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0KeyValueStates*, and
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0at this
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0point there are usually no records in the window state.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0Any Ideas?
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0I do have a workaround with an evictor, but it
>=C2=A0 =C2=A0 =C2=A0seemed to be
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0unnecessarily complicated.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0*We can not use clear()-callback for that, since this
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0state should
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0survive the FIRE_AND_PURGEs in the onElement()-calls.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0Cheers,
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0Konstantin
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0On 08.11.2016 18:31, Aljoscha Krettek wrote:
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0> Hi,
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0> the timers are not actually deleted but the
>=C2=A0 =C2=A0 =C2=A0WindowOperator
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0will check
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0> whether there is any window state associated with
>=C2=A0 =C2=A0 =C2=A0the window
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0for which
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0> the timer fires. If there is no window state the
>=C2=A0 =C2=A0 =C2=A0timer will
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0silently be
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0> ignored.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0> Is this a problem for you or did you just want to
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0clarify? If
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0yes, then
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0> we should work on finding a solution.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0> Cheers,
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0> Aljoscha
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0> On Tue, 8 Nov 2016 at 18:18 Konstantin Knauf
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0> <
konstantin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0<mailto:
konstantin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0<mailto:
konstantin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0<mailto:
konstantin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>>>> wrote:
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Hi everyone,
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0I just migrated a streaming Job from 1= .0.2 to
>=C2=A0 =C2=A0 =C2=A01.1.3 and
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0stumbled across
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0a problem concerning one of our custom= triggers.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0The trigger basically FIRE_AND_PURGEs = multiple
>=C2=A0 =C2=A0 =C2=A0times in
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0onElement() and
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0the window is PURGEd onProcessingTimeT= imer(),
>=C2=A0 =C2=A0 =C2=A0but it
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0seems
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0that the all
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0registered processing time timers are = deleted
>=C2=A0 =C2=A0 =C2=A0everytime
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0the window is
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0PURGEd.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0clear() is the default implementation,= i.e. no-op.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Just wanted to, if this is the expecte= d behavior
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0(processing time timers
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0being deleted on PURGE or FIRE_AND_PUR= GE) from
>=C2=A0 =C2=A0 =C2=A0Flink
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A01.1 on?
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Cheers,
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Konstantin
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0--
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Konstantin Knauf *
>=C2=A0 =C2=A0 =C2=A0
konstantin.knauf@tngtech.com <mai= lto:konstantin.knauf@tngtech.com>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0<mailto:
konstantin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konstantin.knauf= @tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0<mailto:
konstantin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>>> * +49-174-3413182
>=C2=A0 =C2=A0 =C2=A0<tel:0174%203413182>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<tel:0174%203413182><= br class=3D"gmail_msg"> >=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0<tel:0174%203413182>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<tel:0174%203413182>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0TNG Technology Consulting GmbH, Betast= r. 13a,
>=C2=A0 =C2=A0 =C2=A085774
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0Unterf=C3=B6hring
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Gesch=C3=A4ftsf=C3=BChrer: Henrik Klag= ges, Christoph
>=C2=A0 =C2=A0 =C2=A0Stock, Dr.
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0Robert Dahlke
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Sitz: Unterf=C3=B6hring * Amtsgericht = M=C3=BCnchen * HRB
>=C2=A0 =C2=A0 =C2=A0135082
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0--
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0Konstantin Knauf * konstantin.knauf@tngtech.com=
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0<mailto:
konstantin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>>> * +49-174-3413182
>=C2=A0 =C2=A0 =C2=A0<tel:0174%203413182>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<tel:0174%203413182><= br class=3D"gmail_msg"> >=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0<tel:0174%203413182>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0TNG Technology Consulting GmbH, Betastr. 13a, 85774
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Unterf=C3=B6hring
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0Gesch=C3=A4ftsf=C3=BChrer: Henrik Klagges, Christoph Stock, Dr= .
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Robert Dahlke
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0Sitz: Unterf=C3=B6hring * Amtsgericht M=C3=BCnchen * HRB 13508= 2
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0--
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Konstantin Knauf * konstantin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<mailto:
konst= antin.knauf@tngtech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>>> * +49-174-3413182
>=C2=A0 =C2=A0 =C2=A0<tel:0174%203413182>
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0<tel:0174%203413182><= br class=3D"gmail_msg"> >=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0TNG Technology Consulting G= mbH, Betastr. 13a, 85774 Unterf=C3=B6hring
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Gesch=C3=A4ftsf=C3=BChrer: = Henrik Klagges, Christoph Stock, Dr. Robert
>=C2=A0 =C2=A0 =C2=A0Dahlke
>=C2=A0 =C2=A0 =C2=A0>=C2=A0 =C2=A0 =C2=A0Sitz: Unterf=C3=B6hring * A= mtsgericht M=C3=BCnchen * HRB 135082
>=C2=A0 =C2=A0 =C2=A0>
>
>=C2=A0 =C2=A0 =C2=A0--
>=C2=A0 =C2=A0 =C2=A0Konstantin Knauf * konstantin.knauf@tngt= ech.com
>=C2=A0 =C2=A0 =C2=A0<mailto:konstantin.knauf@tngtech.com<= /a>> * +49-174-3413182
>=C2=A0 =C2=A0 =C2=A0<tel:0174%203413182>
>=C2=A0 =C2=A0 =C2=A0TNG Technology Consulting GmbH, Betastr. 13a, 85774= Unterf=C3=B6hring
>=C2=A0 =C2=A0 =C2=A0Gesch=C3=A4ftsf=C3=BChrer: Henrik Klagges, Christop= h Stock, Dr. Robert Dahlke
>=C2=A0 =C2=A0 =C2=A0Sitz: Unterf=C3=B6hring * Amtsgericht M=C3=BCnchen = * HRB 135082
>

--
Konstantin Knauf * konstantin.knauf@tngtech.com * +49-174-3413182
TNG Technology Consulting GmbH, Betastr. 13a, 85774 Unterf=C3=B6hring
Gesch=C3=A4ftsf=C3=BChrer: Henrik Klagges, Christoph Stock, Dr. Robert Dahl= ke
Sitz: Unterf=C3=B6hring * Amtsgericht M=C3=BCnchen * HRB 135082

--001a113f821a2b75ce054109b19f--