From 28a1c4d403cc978d60af765f1e67bfb4bedd93c4 Mon Sep 17 00:00:00 2001 From: "Tzu-Li (Gordon) Tai" Date: Thu, 25 Jan 2018 16:08:53 +0100 Subject: [PATCH 01/11] [FLINK-8472] [DataStream, test] Extend WindowOperatorMigrationTest for Flink 1.4 --- .../windowing/WindowOperatorMigrationTest.java | 2 +- .../util/migration/MigrationVersion.java | 3 ++- ...ation-test-apply-event-time-flink1.4-snapshot | Bin 0 -> 4630 bytes ...-test-apply-processing-time-flink1.4-snapshot | Bin 0 -> 4522 bytes ...tion-test-reduce-event-time-flink1.4-snapshot | Bin 0 -> 3497 bytes ...test-reduce-processing-time-flink1.4-snapshot | Bin 0 -> 3438 bytes ...ssion-with-stateful-trigger-flink1.4-snapshot | Bin 0 -> 8680 bytes ...-with-stateful-trigger-mint-flink1.4-snapshot | Bin 0 -> 7651 bytes 8 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-apply-event-time-flink1.4-snapshot create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-apply-processing-time-flink1.4-snapshot create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-reduce-event-time-flink1.4-snapshot create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-reduce-processing-time-flink1.4-snapshot create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-flink1.4-snapshot create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-mint-flink1.4-snapshot diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorMigrationTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorMigrationTest.java index d7df479094044..5b75d46d9dd10 100644 --- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorMigrationTest.java +++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorMigrationTest.java @@ -83,7 +83,7 @@ public class WindowOperatorMigrationTest { @Parameterized.Parameters(name = "Migration Savepoint: {0}") public static Collection parameters () { - return Arrays.asList(MigrationVersion.v1_2, MigrationVersion.v1_3); + return Arrays.asList(MigrationVersion.v1_2, MigrationVersion.v1_3, MigrationVersion.v1_4); } /** diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/util/migration/MigrationVersion.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/util/migration/MigrationVersion.java index 3e7998d3ac17e..2a1eb98c09898 100644 --- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/util/migration/MigrationVersion.java +++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/util/migration/MigrationVersion.java @@ -28,7 +28,8 @@ public enum MigrationVersion { // as they are used to locate snapshot file paths v1_1("1.1"), v1_2("1.2"), - v1_3("1.3"); + v1_3("1.3"), + v1_4("1.4"); private String versionStr; diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-apply-event-time-flink1.4-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-apply-event-time-flink1.4-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..5caddc2f1afa6d4d59ad717a2ecd26e67dc1fec1 GIT binary patch literal 4630 zcmeHKKX21O6n}Oa5VW+Efi8?Ko1G?g(nJ{$Ed@mi0x6XkDuzpZN!>bjurF;>BqS!p z#>h9QKn!e@4}ci>3J3{_1&Kc+0}}AgXV*^aqR^zMqTFELAK%aK-h03I-T`3y={M|3 z2|j^M5-;AFoXHX`t554ntxAZZX?j{AvpJ%q^94Pds~2X{wKRad;B7mzZdkg#t}vrX z9rxL1NV*ObZKt7<7O5>$wQd^LDh>>_W;dI*rLsa>{Q=S<0*5#iL^Ub1to3bzCAK~+{$TNJkqN!BaEt-9fx$vhRZ^P zv4?lxzI!wATn4EO0w12qFAXi4vlt>OKFFD}ANQvZ-+DQ(nZucx=F6cjW@0*%d z$Qp?xrr?x|?UoryDcpUr`KjsB9_4V(^@cQunNNUmw4o9tiDR%%2~L>QYOv)cI9oTU zsfUVl8O$ynOm$^A&G|I|YU-({r2 z{R>+!&wqc+Q!S73^1cc`0=0m5XcRCXYsYv2OHp4A4G5kFN7fv;7z-wxg4;m#Tq;PH zXnVN~a($Y?xrkM6R99$?75PeA7ZwDLqVD(QSam#xfL`7D5XAy{^D&33Ean#S!0 zW&YDokn|Z8JXY69lUPesuQ|56f*o78yhg)wb>42$7PlQ=uMnT=WzKB3UZ%_@j=e!y zsEDEhtTUMV1Ed86j&RC|>QL^v?Z@|@ywcY$OTb)zfZbS~IyJ*HUg-hyIisY3+XknV zb`d?<^7REY(apeGlaZR8&Cnhl_g!E40;LbQ3+r&7l zSVr2+)T&xFOVe78=CYb$qi9gR*Zhc=0@0me;6VzIP2A( zc#GxK4Z=u+a>^X)``uAI@3}R*9)Jx*P~is^PKCs`JeO0K`@taopnO9IJp@SJ0vP>( zeX-!n;iHWLL-pAp2}kcrIOvbW%g`U0p0HvqS0r=Y=Y&)J5@V!YvV9&QoO*EQ&D+-# z&s0!KFisuXK>tV69P%XuP09S93i3a8?3B#^sqOrq>JHBWru)IO^RCrrnXHnI+Ou`a zg;vw)s2U=CQNrqTvBx-qbNwOBVR4gS0&S!SNy2R2F2WIqx^=#^2&Zc{b*ho!d=9gV zdox`Lj&pI4d58E2GhPxprX1qdQ^8PS{Wjc1(jsxO`2T3JaHl?s^bRMP_s(s;IQ#vP zsHP(QtGgQf0F?XS(5Rph>&JKni=D9?IS>L1j;=B|9}6afLij)rLMkkk!uM(k)Y>$M zGaX*JURkCVFNm46&~hAuf2uFwPL+fM6u1_HV%6n}AA1g-cS=)zdoY{zMvr0Rgws-Q@bKuRTsPG|d^x;W=>zO+pTBqmly z{sRPJMU=k)@fR>7G4e4oAOY`um)dDV721L-m0NrtzMtRS`@Q#j2Eg`HH|!RQaspdH zJ!EIPS|dK4sSvX~Lw$3$R-Q9!wQAL*#C2=)zEi0LWdLJ2-FAL6WPZG9im*+2^71o` zCma@H-m*xCcx%)OqLAIkL1=k#yB#x2^g6UF!YHv^l2EHDc*t5!%0m)`+mvfV3I@Oy zhs8fYT0!6pr-`T$6*22QfBfRDwYjVSXGa4Z#LC;$(PzB14=53wk~V%eJ*~PIIa0mE zTEQ#2m)_QNW@aAxL>?CnERNr&Jx5!rACo((Gx=IBA|LW?=wg3zs-s?=iuIPgB%DZ) zgx;)Max1QD&iExH;hf`|#0jWbDtm4)S1$SUl>lJkJz|VWoIZg+VRu`PKb{6Urf0pq zkBmbD?k?e^O$FrH?H$0` zS2!a#d_8?JRe)pl*-^5QHIR+aA4TWDz*#37B$vf`m&xRBt#mt4F8?ZTgU;hOhZ1x& zq(zj83~j6qGCU9JrsK`r+fI{)a}vo}}2Kb5j3 zGpcctb@u^0gfTR*Hk1a#3xhfnnMX7K!w9|OW}S!+%I_4 VyD+&ku-gCe8d!DYE3(io{sOvoQCk22 literal 0 HcmV?d00001 diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-reduce-processing-time-flink1.4-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-reduce-processing-time-flink1.4-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..94909fcd8b76068e449abd74d85b74b086caaa78 GIT binary patch literal 3438 zcmeHJOK;Oa5FR@%f+C&=xNt0pi|xFe#L5Aw6`)9wKuRSJJ#C$J>ejKt?xt;eK;p!e zBmV$_xFXSCfcP0m9C;i$AOW-9ZJo4f721L-mA!Z$+Rrol&CE9dIDYAYQzIuga2V<% zC$km5SP4kJWaV8_vC6L7wmg#eEVopt<*S9NTkIv)Eq(}T^Y6npmui_%K{iNGXVp|M)v@gPl+e?H~yCql{cUqK%Bnmev(}ox(zy^c4 zKR{YQ;0&jQs1X%OJb3l&^?Q5$t^zDi1~`f}Y*SDBcyA977mSiF{xQgW zQO-xBcs_}Pu#D+6REMZ*fOn_;&iz#(-nx z>?j4t9w|7;N3L*S;;fK0GE}HpKbG~~Ug-Ctp%Sau23@M}j1ADqkmgVcGPJ1%OcNH0 zK?BZ2H13GyMYtS+>BxLUIKo_M zN*kSs#2qKys-x~4T_(^S6NUC?pJ_uU5X4=EdQWe>+`9JTg;XwCYR!`@t&iaeOre3b zv0*S?`x~*y7|r;H4GDH`jlr$4U@E30g(@PoEXhDLn_vcc0au4eeXz7beSx%_K|umv zM1F5h1Uzh#B*1{i0rz(Lntjqm)!$Z3dVDz%DO^@FwWygsZhh5f|HW-r!}t%xO{vvK xT^)}lm``e3cg*^9=(mz@{kL-6ICQS7+}ABl*72ro@OCe(JJQk9(sna!{08CDNu2-y literal 0 HcmV?d00001 diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-flink1.4-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-flink1.4-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..933771894de05950c28a8a7a337d2fbe2c3d288d GIT binary patch literal 8680 zcmeHM&2Q646n}9V5N)B9!=j?q?j8VfvGe6k8}+b)3RacEhtvuVh=Y?%QWwV#_LMdt zt<)2{w>@%$+ltj5II>qH#DRYSfj~$IiH{2s2N3XPJWkxitxTMtKr>S78QXcDdGGz+ z{N5V?Y@bBKZY<7jV2imI);XB|wL(<2SeA?Ba!yt&B!#_cRh~&@ax>{nu`-=i0i+}R zXS-K*vuv%(RId@+`R^4Z92;gWyQ*k)t+YgxilLhqaiA+Dt5&m2g*NJBh3bZ*6g7t^ z3)I%l>H@KK&Cst9TTCP-0j$|@>PolX{5zWN8RhhO>w=! z9%jTtahWQ+ovD(z(e7tIt)ri1(|PP$XWPN!_*#GO@V7urozZNqMkuij;y4?dOS;Hj1s1!(rX4P{2OMDZPl1?ktkYzDPv(&IF+Yh5v2_Y3Q>uCXq`J}ehju{tJ;?8qVhTEcVm6x_2Dh|}?P0ocdF zZE_t^!lS4z5kG6`dq;ja1%!v+2gPewLB7Y>(+L~;1elaZl42E-nNnXn*Y zu`%GX);t6EAB6&p1E;L0oD;3jFSiMSWOw*}Sz?3L?W@$z_Pb>}V z+B&hEjszrx)+{vl4@e6D?Be7BRVU0e>W?>{yi``t+kkO@fZMSe`&4ztc%cc1GK=5} zd{&IswhOvWJGc1FwO4TzRxJcZM#bXrc~WI~P?a7<1` zVg(r|3h~()98r_AX@n-1;QgQg;X7!b0B;?RJo4Tjgt!r7z1S2rp3Jz4EnFdtSURC} zdo0eIMoB9Ru#RX3bU+dsbLgv@1|tTe;wJ2%eFxt>Kxp_TLZOdv%^mgi;01pGb=7B` z$cC~_HozZ4FC2fwn!?Je8C;ST$}l6!Im^QJoJN_8Fn0gW>o>1XJd;o$hsKFcD&T+j zF++(QfQD@q4+|BC3oUG`c=)f1hqs4k21L7ajcu7jmhlR1$RJyzT&Pv`2JPqJ3(d(P zXPb<}Ip+^)4pNj2#?gXVG>k2c)wAf3PK+{JT13Z68qtfc;V47N#r8~>LnDk2WM0P< zV8(O2k6|4f<*>MwS-Xwy0%?J`kivh}Eayu;Qtb{Wr8iDJdVc)JL!J|>9IvIp`ygqH zK|=>qo__T1V74)qT?Zmz!O)6@&Uk{^LBV~Xh>(i8uSz*2l_CsHGKb&P=X%n*QY0eAS2Ftvy|FrT~iF6Y1P0PFk Vf9&!n;-31WKMNLMtZ1CN=nq^i-5vk{ literal 0 HcmV?d00001 From 803c641b6c4e03431a960826f5a531423db3d5ef Mon Sep 17 00:00:00 2001 From: "Tzu-Li (Gordon) Tai" Date: Thu, 25 Jan 2018 16:13:14 +0100 Subject: [PATCH 02/11] [FLINK-8472] [cep, test] Extend CEPMigrationTest for Flink 1.4 --- .../flink/cep/operator/CEPMigrationTest.java | 2 +- ...-migration-after-branching-flink1.4-snapshot | Bin 0 -> 19058 bytes ...-single-pattern-afterwards-flink1.4-snapshot | Bin 0 -> 16848 bytes ...ation-starting-new-pattern-flink1.4-snapshot | Bin 0 -> 18866 bytes 4 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 flink-libraries/flink-cep/src/test/resources/cep-migration-after-branching-flink1.4-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/cep-migration-single-pattern-afterwards-flink1.4-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/cep-migration-starting-new-pattern-flink1.4-snapshot diff --git a/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/operator/CEPMigrationTest.java b/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/operator/CEPMigrationTest.java index ed28f254a43f6..f3d61e5b189ff 100644 --- a/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/operator/CEPMigrationTest.java +++ b/flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/operator/CEPMigrationTest.java @@ -71,7 +71,7 @@ public class CEPMigrationTest { @Parameterized.Parameters(name = "Migration Savepoint: {0}") public static Collection parameters () { - return Arrays.asList(MigrationVersion.v1_3); + return Arrays.asList(MigrationVersion.v1_3, MigrationVersion.v1_4); } public CEPMigrationTest(MigrationVersion migrateVersion) { diff --git a/flink-libraries/flink-cep/src/test/resources/cep-migration-after-branching-flink1.4-snapshot b/flink-libraries/flink-cep/src/test/resources/cep-migration-after-branching-flink1.4-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..08a264fd3abf27605fe96de1a66eb1edc9836008 GIT binary patch literal 19058 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 literal 0 HcmV?d00001 diff --git a/flink-libraries/flink-cep/src/test/resources/cep-migration-single-pattern-afterwards-flink1.4-snapshot b/flink-libraries/flink-cep/src/test/resources/cep-migration-single-pattern-afterwards-flink1.4-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..595e1df5b4f81409e75cb8b42d8033fa5b2cb78a GIT binary patch literal 16848 zcmeHOO>7%Q6n=J^CQU=rgtSd7C_?xG!t11U()=KWG(V8yrloEvpdOg4$H|iQt~B8BQYco<%f=u{vSMG6iL<# z1znTO)gmpKifTyn#GulwW@afP zc5}xoi5Tc3J{1XE17`_CJ;8;fQp2cJyh&ZlD+_|y))y2iKJ12Gx=c0m@e(ajBg-|E zD<`(_R(|}7Q&R+JzYfs%3SRSh`f=y$dJGymOIx=JDDSpYw!Hg&ic@J@9wo-&X;O5J z-RqZ2uU`0$y%C3a2JTp*t8SACLm4EOvTSim*kZg;QkE@Ft=r;MrRt4kplg|^C6Dd8 z3~LZWqr80^iVkALH^#ulAsj?T*B0Cnac#w;IUa(KF}_*$6vN}dx?Xzj`yW0#^lltt z8R(`eE#SIyxwnMqbTb|(g=fh!@i<9m@|W1EEPd7twT7?J-){b&Rz#{&wD&a7jS%xn2N4B4P8w9Ng2&?t*P2U zmYUc>V#D1R6?4%Yg3Y7d<83n@Wntn3K(kdPrCuT(MK^tHK5 z`_*fIQdxI%V!;cO=^JNRfXP`sXNp6P7rp{(zkGaUG zv8b!La&i1&YZ_MC@w}h^E`#87-+#7ru0Inu;fPNeWLlJ_x!p#Me8|_z7fcmZ;acLI zxKme0U(}vo)8nuU*R?BSAvG?u&I}wiY!F7~RnMxQ)ez8VGKzburXiUwQyJy0YnIbW zI5S*HjhhvxAIiMl_ql&h(Y&H5oEFzE6D|gKEL56ng20j~dzqv*j(wdI$|?zum5a-) zmej3j72oAzvAD+I!geO1DkDxmJp%LY6LZRyTAJ2M1#e@~guNH$vS+6!XJ=-or%brt z!w*?zy0kzwoJCoB#5zwAlO!e>BdbCodvUy*8Ui-}k~5Q(8HuSI9zd5O`T_XK_S_-$YK`#OVx$cPOWP6_;-%fATao%^ zob{H$Q=?E)i19&dHGF^#9uLzgqODxA8>RV;e)2* zgRY&44-WY7L9g&;r#FEQCUsS%GRLGII3m(B8(;!YoZ!*=CJ*TG2VS?nW;?17n{ytl zav0`~8U$vkY8`$QwY@y+P;B z^aedXZ_q8w^rb*=P%C1s3{Df3mjN+kjRX&J5U-hvsQoN#A`{TO3_z^8QGX12wLCdf zq?nAMjBfgcw~-F@`x z2NyrTr$>}8xb*& zP+1cf4gka2p!zn3!OK|asEG3|hrz#jX?V=%*s52qvnIoRNG?;hGB&Yx&ADtxE=PS_ zIPJ+e{ z6P%XNz=SAub34F}&CRd`qRa+MQ8greTmS+(Bew1ft<;9k^Qx%&XS zkLpd$uQ&DV%z9IwuikVh%<*}{-rnNIu2n?Qr>f>6>hSo15xev1+8-GHU%`zQ_u`u? z9|LsYhKr6HR^$#p+jt|iZnhCHLX5ScyE3;au4ubUwYM9hoJo{3(JX7W{w6?OFGob% zUC_!kAAUqRlPG5*iR6%5?x^{~OY?Iku{9gRgtD3w%JgtE?%nm^*_r9g zti3Lhr3xWH{Q>bokq{t+go=t(Dj`t`iS#9q`T<3vK~P!|m8T$7D17lz&bf2%&a7u< z>&LD#I6IO(k2`bjdEIl)J?Gvf1djK_0hdY_K7d2yx{kV zkm58Nnom$?`2w|k%lDnftKYivd;7a7lFE_~tgv;z$t4eD0bIs2%o%Q&;YQ1NhB;F= z%$Y{jJDnwit5mNB4B6vkgD7C3cW+R^TYNl3W8~oA-Xd!nWuGF{Ryf+@E|A95cG1(E zfHxcb^5@=s>$M}#rHGOxhnUVPFz$TpJtoR-&O~zIvvidPJf;->ioI^C55qqnn#T&# zl_GsvauobGt?Gf!W_0Q}%yG%RS%jHE51h$@Yi32ELm=j%&}R;!HvrgUkC#~)=(DM- znTBi_wE073vm$CuYzH~!LI>$hZ(r5iWuF9rqv-N@(|2Y6-Ke!LIpk5LQ=^>WU{2R0 zV~=niBE4z@y<^uFAG=Gx_Fs_Br^$X=D1gnqXcw6cdVR?MMsTO6?{_c0e9vcI?;@#r zGN7BZI8O_%X)lm{?y}9CWm7NKtTPXJVp!{k^IdpdBOKF%@7r>q{!Pjy$3n_bV3sm>5+-EeQ(l{L@okGQO~3rbsu8YoEuQYsj+$S#sPF5gEOY=kCC$(f7HXGEu10svRT?#c2bLKz zOfs8kuVcdOM!=_Q)~el%>z-Ko|C(i48#cMJ8zICZBKsNQ0q{XCQ&eho&Zt&`jh0LH zUs=punwwdeUznS9$wveD&{f-1%gg{N7Swazd6v2~J#E``oh#%p(7P=X&;Y1XlFW9} zv(-vveHwc5vA$KGp4Sy0>-3)aD=C4HiZcy;nnkf zoX~sWLC?2^qe`$j$H^*&VZm7gj~St%P39aRZ^4|yTk+<+6@d-Rtr9U??2YvXvL!Lz zpzHQ}1L(fv4M^L)!GXQ$4TeJA;1D;{k41WeW;52t$!WUrHewFhB*6n1q?)E8ntw~S zkqKyD20&@=tY0C+Mu}du7$hT2yGapa-=7Fc|H|{dogzjclf1Q3)2@mb{S^`G+#ecF zn9T$Ms*Cf}Y54QwsQZpT{j;mT{Lm0DUkvg>mEXAIIe3=b<1AB1P@S!oO3d~lVuGk; zb&Ldube$PGwRV}om-BE^&(q7?zHCWMOxBs9`wLI%brbLb^4J?0{5xlc9$E5|E+iK) z?CIc*Z{>ge#&vt?CHuE20@H=YnmBg=Fs+TMZ^JZr6$%{<^L)=?;D0O)pAI>;_{w$8 zwP8_`kCafxHrB2Y%YMLeDukuv-7H&U>xmphaG0n`5{V4=l_Vdu&#gbcufi-GIj%$>X=;*G?**;a%RoYt1E z%G@QpVEIcYXVS@;y#MA1nHlNiOzIn9V>U;0mb-wJYk&CB$(eL=CMr)3`R2RnhL`r| zOq2}~!z8krlgQ2Nt*kELjvs}zG`iZ7Al1mS92!A!;2LAT&KURXcXuy?=k@9bg^oftiR5{4MIjn+E(egi++X{2Vo>RV3Pcv*uo*{&z;i)&Bb`13c$ZzPd=pW2kT z6tYL+Q^SJz@Lu*9*-snAy4?Tp{N4S}zx%@%_{@3}Xn)Rr9!)woc?5PhS4(`JZO~!&d?HIbLhzp6k|(bDkT8 z4A6a%HUqHZ8==v Date: Thu, 25 Jan 2018 16:20:31 +0100 Subject: [PATCH 03/11] [FLINK-8472] [scala, test] Extend StatefulJobSavepointMigrationITCase for Flink 1.4 --- .../_metadata | Bin 0 -> 204543 bytes .../_metadata | Bin 0 -> 204543 bytes .../StatefulJobSavepointMigrationITCase.scala | 6 ++++-- 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 flink-tests/src/test/resources/stateful-scala2.11-udf-migration-itcase-flink1.4-jobmanager-savepoint/_metadata create mode 100644 flink-tests/src/test/resources/stateful-scala2.11-udf-migration-itcase-flink1.4-rocksdb-savepoint/_metadata diff --git a/flink-tests/src/test/resources/stateful-scala2.11-udf-migration-itcase-flink1.4-jobmanager-savepoint/_metadata b/flink-tests/src/test/resources/stateful-scala2.11-udf-migration-itcase-flink1.4-jobmanager-savepoint/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..69aa8d4688b01de3175a35033bd1af5eeebfb41f GIT binary patch literal 204543 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 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/stateful-scala2.11-udf-migration-itcase-flink1.4-rocksdb-savepoint/_metadata b/flink-tests/src/test/resources/stateful-scala2.11-udf-migration-itcase-flink1.4-rocksdb-savepoint/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..7dcef9cea71bb4b391d9ffc068fdfe697f4babcb GIT binary patch literal 204543 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 RJ|V|metF8%k6QmH|39o*15W?| literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/scala/org/apache/flink/api/scala/migration/StatefulJobSavepointMigrationITCase.scala b/flink-tests/src/test/scala/org/apache/flink/api/scala/migration/StatefulJobSavepointMigrationITCase.scala index 1e670421767b4..55cf04df7b471 100644 --- a/flink-tests/src/test/scala/org/apache/flink/api/scala/migration/StatefulJobSavepointMigrationITCase.scala +++ b/flink-tests/src/test/scala/org/apache/flink/api/scala/migration/StatefulJobSavepointMigrationITCase.scala @@ -54,13 +54,15 @@ object StatefulJobSavepointMigrationITCase { (MigrationVersion.v1_2, AbstractStateBackend.MEMORY_STATE_BACKEND_NAME), (MigrationVersion.v1_2, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME), (MigrationVersion.v1_3, AbstractStateBackend.MEMORY_STATE_BACKEND_NAME), - (MigrationVersion.v1_3, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME)) + (MigrationVersion.v1_3, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME), + (MigrationVersion.v1_4, AbstractStateBackend.MEMORY_STATE_BACKEND_NAME), + (MigrationVersion.v1_4, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME)) } // TODO to generate savepoints for a specific Flink version / backend type, // TODO change these values accordingly, e.g. to generate for 1.3 with RocksDB, // TODO set as (MigrationVersion.v1_3, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME) - val GENERATE_SAVEPOINT_VER: MigrationVersion = MigrationVersion.v1_3 + val GENERATE_SAVEPOINT_VER: MigrationVersion = MigrationVersion.v1_4 val GENERATE_SAVEPOINT_BACKEND_TYPE: String = AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME val SCALA_VERSION: String = { From 07fe9dd623bbd1ef90a165ffb3c53688e5200b95 Mon Sep 17 00:00:00 2001 From: "Tzu-Li (Gordon) Tai" Date: Thu, 25 Jan 2018 18:25:45 +0100 Subject: [PATCH 04/11] [FLINK-8472] [DataStream, test] Refactor StatefulJobSavepointFrom*MigrationITCase to single ITCase This commit refactors the StatefulJobSavepointFrom12MigrationITCase and StatefulJobSavepointFrom13MigrationITCase to a single class, StatefulJobSavepointMigrationITCase. The new ITCase is parameterized to ensure that all previous versions and state backend variants are covered. --- ...efulJobSavepointFrom13MigrationITCase.java | 58 --- ... StatefulJobSavepointMigrationITCase.java} | 339 ++++++++---------- 2 files changed, 153 insertions(+), 244 deletions(-) delete mode 100644 flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointFrom13MigrationITCase.java rename flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/{StatefulJobSavepointFrom12MigrationITCase.java => StatefulJobSavepointMigrationITCase.java} (61%) diff --git a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointFrom13MigrationITCase.java b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointFrom13MigrationITCase.java deleted file mode 100644 index a2d32014a5ca7..0000000000000 --- a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointFrom13MigrationITCase.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.flink.test.checkpointing.utils; - -import org.junit.Ignore; -import org.junit.Test; - -/** - * This verifies that we can restore a complete job from a Flink 1.3 savepoint. - * - *

The test pipeline contains both "Checkpointed" state and keyed user state. - */ -public class StatefulJobSavepointFrom13MigrationITCase extends StatefulJobSavepointFrom12MigrationITCase { - - /** - * This has to be manually executed to create the savepoint on Flink 1.3. - */ - @Test - @Ignore - public void testCreateSavepointOnFlink13() throws Exception { - testCreateSavepointOnFlink12(); - } - - /** - * This has to be manually executed to create the savepoint on Flink 1.3. - */ - @Test - @Ignore - public void testCreateSavepointOnFlink13WithRocksDB() throws Exception { - testCreateSavepointOnFlink12WithRocksDB(); - } - - @Override - protected String getSavepointPath() { - return "stateful-udf-migration-itcase-flink1.3-savepoint"; - } - - @Override - protected String getRocksDBSavepointPath() { - return "stateful-udf-migration-itcase-flink1.3-rocksdb-savepoint"; - } -} diff --git a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointFrom12MigrationITCase.java b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointMigrationITCase.java similarity index 61% rename from flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointFrom12MigrationITCase.java rename to flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointMigrationITCase.java index 6859c2d243b6b..28f7e4b7e26ec 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointFrom12MigrationITCase.java +++ b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointMigrationITCase.java @@ -29,6 +29,7 @@ import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.configuration.Configuration; import org.apache.flink.contrib.streaming.state.RocksDBStateBackend; +import org.apache.flink.runtime.state.AbstractStateBackend; import org.apache.flink.runtime.state.memory.MemoryStateBackend; import org.apache.flink.streaming.api.TimeCharacteristic; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; @@ -44,207 +45,172 @@ import org.apache.flink.streaming.api.operators.Triggerable; import org.apache.flink.streaming.api.watermark.Watermark; import org.apache.flink.streaming.runtime.streamrecord.StreamRecord; +import org.apache.flink.streaming.util.migration.MigrationVersion; import org.apache.flink.util.Collector; import org.junit.Ignore; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.util.Arrays; +import java.util.Collection; import static org.junit.Assert.assertEquals; /** - * This verifies that we can restore a complete job from a Flink 1.2 savepoint. - * - *

The test for checkpointed (legacy state) was removed from this test for Flink 1.4 because compatibility with - * Flink 1.1 is removed. The legacy state in the binary savepoints is ignored by the tests now. - * - *

The tests will time out if they don't see the required number of successful checks within - * a time limit. - * - * + * Migration ITCases for a stateful job. The tests are parameterized to cover + * migrating for multiple previous Flink versions, as well as for different state backends. */ -public class StatefulJobSavepointFrom12MigrationITCase extends SavepointMigrationTestBase { +@RunWith(Parameterized.class) +public class StatefulJobSavepointMigrationITCase extends SavepointMigrationTestBase { + private static final int NUM_SOURCE_ELEMENTS = 4; + @Parameterized.Parameters(name = "Migrate Savepoint / Backend: {0}") + public static Collection> parameters () { + return Arrays.asList( + Tuple2.of(MigrationVersion.v1_2, AbstractStateBackend.MEMORY_STATE_BACKEND_NAME), + Tuple2.of(MigrationVersion.v1_2, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME), + Tuple2.of(MigrationVersion.v1_3, AbstractStateBackend.MEMORY_STATE_BACKEND_NAME), + Tuple2.of(MigrationVersion.v1_3, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME)); + } + /** - * This has to be manually executed to create the savepoint on Flink 1.2. + * TODO to generate savepoints for a specific Flink version / backend type, + * TODO change these values accordingly, e.g. to generate for 1.3 with RocksDB, + * TODO set as (MigrationVersion.v1_3, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME) */ - @Test - @Ignore - public void testCreateSavepointOnFlink12() throws Exception { + private final MigrationVersion flinkGenerateSavepointVersion = MigrationVersion.v1_3; + private final String flinkGenerateSavepointBackendType = AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME; - final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); - env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); - env.setStateBackend(new MemoryStateBackend()); - env.enableCheckpointing(500); - env.setParallelism(4); - env.setMaxParallelism(4); + private final MigrationVersion testMigrateVersion; + private final String testStateBackend; - env - .addSource(new LegacyCheckpointedSource(NUM_SOURCE_ELEMENTS)).setMaxParallelism(1).uid("LegacyCheckpointedSource") - .flatMap(new LegacyCheckpointedFlatMap()).startNewChain().uid("LegacyCheckpointedFlatMap") - .keyBy(0) - .flatMap(new LegacyCheckpointedFlatMapWithKeyedState()).startNewChain().uid("LegacyCheckpointedFlatMapWithKeyedState") - .keyBy(0) - .flatMap(new KeyedStateSettingFlatMap()).startNewChain().uid("KeyedStateSettingFlatMap") - .keyBy(0) - .transform( - "custom_operator", - new TypeHint>() {}.getTypeInfo(), - new CheckpointedUdfOperator(new LegacyCheckpointedFlatMapWithKeyedState())).uid("LegacyCheckpointedOperator") - .keyBy(0) - .transform( - "timely_stateful_operator", - new TypeHint>() {}.getTypeInfo(), - new TimelyStatefulOperator()).uid("TimelyStatefulOperator") - .addSink(new AccumulatorCountingSink>()); - - executeAndSavepoint( - env, - "src/test/resources/" + getSavepointPath(), - new Tuple2<>(AccumulatorCountingSink.NUM_ELEMENTS_ACCUMULATOR, NUM_SOURCE_ELEMENTS)); + public StatefulJobSavepointMigrationITCase(Tuple2 testMigrateVersionAndBackend) { + this.testMigrateVersion = testMigrateVersionAndBackend.f0; + this.testStateBackend = testMigrateVersionAndBackend.f1; } /** - * This has to be manually executed to create the savepoint on Flink 1.2. + * Manually run this to write binary snapshot data. */ @Test @Ignore - public void testCreateSavepointOnFlink12WithRocksDB() throws Exception { + public void writeSavepoint() throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); - RocksDBStateBackend rocksBackend = - new RocksDBStateBackend(new MemoryStateBackend()); - env.setStateBackend(rocksBackend); + + switch (flinkGenerateSavepointBackendType) { + case AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME: + env.setStateBackend(new RocksDBStateBackend(new MemoryStateBackend())); + break; + case AbstractStateBackend.MEMORY_STATE_BACKEND_NAME: + env.setStateBackend(new MemoryStateBackend()); + break; + default: + throw new UnsupportedOperationException(); + } + env.enableCheckpointing(500); env.setParallelism(4); env.setMaxParallelism(4); env - .addSource(new LegacyCheckpointedSource(NUM_SOURCE_ELEMENTS)).setMaxParallelism(1).uid("LegacyCheckpointedSource") - .flatMap(new LegacyCheckpointedFlatMap()).startNewChain().uid("LegacyCheckpointedFlatMap") - .keyBy(0) - .flatMap(new LegacyCheckpointedFlatMapWithKeyedState()).startNewChain().uid("LegacyCheckpointedFlatMapWithKeyedState") - .keyBy(0) - .flatMap(new KeyedStateSettingFlatMap()).startNewChain().uid("KeyedStateSettingFlatMap") - .keyBy(0) - .transform( - "custom_operator", - new TypeHint>() {}.getTypeInfo(), - new CheckpointedUdfOperator(new LegacyCheckpointedFlatMapWithKeyedState())).uid("LegacyCheckpointedOperator") - .keyBy(0) - .transform( - "timely_stateful_operator", - new TypeHint>() {}.getTypeInfo(), - new TimelyStatefulOperator()).uid("TimelyStatefulOperator") - .addSink(new AccumulatorCountingSink>()); + .addSource(new LegacyCheckpointedSource(NUM_SOURCE_ELEMENTS)).setMaxParallelism(1).uid("LegacyCheckpointedSource") + .flatMap(new LegacyCheckpointedFlatMap()).startNewChain().uid("LegacyCheckpointedFlatMap") + .keyBy(0) + .flatMap(new LegacyCheckpointedFlatMapWithKeyedState()).startNewChain().uid("LegacyCheckpointedFlatMapWithKeyedState") + .keyBy(0) + .flatMap(new KeyedStateSettingFlatMap()).startNewChain().uid("KeyedStateSettingFlatMap") + .keyBy(0) + .transform( + "custom_operator", + new TypeHint>() {}.getTypeInfo(), + new CheckpointedUdfOperator(new LegacyCheckpointedFlatMapWithKeyedState())).uid("LegacyCheckpointedOperator") + .keyBy(0) + .transform( + "timely_stateful_operator", + new TypeHint>() {}.getTypeInfo(), + new TimelyStatefulOperator()).uid("TimelyStatefulOperator") + .addSink(new AccumulatorCountingSink>()); executeAndSavepoint( - env, - "src/test/resources/" + getRocksDBSavepointPath(), - new Tuple2<>(AccumulatorCountingSink.NUM_ELEMENTS_ACCUMULATOR, NUM_SOURCE_ELEMENTS)); + env, + "src/test/resources/" + getSavepointPath(flinkGenerateSavepointVersion, flinkGenerateSavepointBackendType), + new Tuple2<>(AccumulatorCountingSink.NUM_ELEMENTS_ACCUMULATOR, NUM_SOURCE_ELEMENTS)); } @Test - public void testSavepointRestoreFromFlink12() throws Exception { + public void testSavepointRestore() throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setRestartStrategy(RestartStrategies.noRestart()); env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); - env.setStateBackend(new MemoryStateBackend()); - env.enableCheckpointing(500); - env.setParallelism(4); - env.setMaxParallelism(4); - - env - .addSource(new CheckingRestoringSource(NUM_SOURCE_ELEMENTS)).setMaxParallelism(1).uid("LegacyCheckpointedSource") - .flatMap(new CheckingRestoringFlatMap()).startNewChain().uid("LegacyCheckpointedFlatMap") - .keyBy(0) - .flatMap(new CheckingRestoringFlatMapWithKeyedState()).startNewChain().uid("LegacyCheckpointedFlatMapWithKeyedState") - .keyBy(0) - .flatMap(new CheckingKeyedStateFlatMap()).startNewChain().uid("KeyedStateSettingFlatMap") - .keyBy(0) - .transform( - "custom_operator", - new TypeHint>() {}.getTypeInfo(), - new CheckingRestoringUdfOperator(new CheckingRestoringFlatMapWithKeyedStateInOperator())).uid("LegacyCheckpointedOperator") - .keyBy(0) - .transform( - "timely_stateful_operator", - new TypeHint>() {}.getTypeInfo(), - new CheckingTimelyStatefulOperator()).uid("TimelyStatefulOperator") - .addSink(new AccumulatorCountingSink>()); - restoreAndExecute( - env, - getResourceFilename(getSavepointPath()), - new Tuple2<>(CheckingRestoringSource.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, 1), - new Tuple2<>(CheckingRestoringFlatMap.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingRestoringFlatMapWithKeyedState.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingKeyedStateFlatMap.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingRestoringUdfOperator.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingRestoringFlatMapWithKeyedStateInOperator.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingTimelyStatefulOperator.SUCCESSFUL_PROCESS_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingTimelyStatefulOperator.SUCCESSFUL_EVENT_TIME_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingTimelyStatefulOperator.SUCCESSFUL_PROCESSING_TIME_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(AccumulatorCountingSink.NUM_ELEMENTS_ACCUMULATOR, NUM_SOURCE_ELEMENTS)); - } - - @Test - public void testSavepointRestoreFromFlink12FromRocksDB() throws Exception { + switch (testStateBackend) { + case AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME: + env.setStateBackend(new RocksDBStateBackend(new MemoryStateBackend())); + break; + case AbstractStateBackend.MEMORY_STATE_BACKEND_NAME: + env.setStateBackend(new MemoryStateBackend()); + break; + default: + throw new UnsupportedOperationException(); + } - final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); - env.setRestartStrategy(RestartStrategies.noRestart()); - env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); - env.setStateBackend(new RocksDBStateBackend(new MemoryStateBackend())); env.enableCheckpointing(500); env.setParallelism(4); env.setMaxParallelism(4); env - .addSource(new CheckingRestoringSource(NUM_SOURCE_ELEMENTS)).setMaxParallelism(1).uid("LegacyCheckpointedSource") - .flatMap(new CheckingRestoringFlatMap()).startNewChain().uid("LegacyCheckpointedFlatMap") - .keyBy(0) - .flatMap(new CheckingRestoringFlatMapWithKeyedState()).startNewChain().uid("LegacyCheckpointedFlatMapWithKeyedState") - .keyBy(0) - .flatMap(new CheckingKeyedStateFlatMap()).startNewChain().uid("KeyedStateSettingFlatMap") - .keyBy(0) - .transform( - "custom_operator", - new TypeHint>() {}.getTypeInfo(), - new CheckingRestoringUdfOperator(new CheckingRestoringFlatMapWithKeyedStateInOperator())).uid("LegacyCheckpointedOperator") - .keyBy(0) - .transform( - "timely_stateful_operator", - new TypeHint>() {}.getTypeInfo(), - new CheckingTimelyStatefulOperator()).uid("TimelyStatefulOperator") - .addSink(new AccumulatorCountingSink>()); + .addSource(new CheckingRestoringSource(NUM_SOURCE_ELEMENTS)).setMaxParallelism(1).uid("LegacyCheckpointedSource") + .flatMap(new CheckingRestoringFlatMap()).startNewChain().uid("LegacyCheckpointedFlatMap") + .keyBy(0) + .flatMap(new CheckingRestoringFlatMapWithKeyedState()).startNewChain().uid("LegacyCheckpointedFlatMapWithKeyedState") + .keyBy(0) + .flatMap(new CheckingKeyedStateFlatMap()).startNewChain().uid("KeyedStateSettingFlatMap") + .keyBy(0) + .transform( + "custom_operator", + new TypeHint>() {}.getTypeInfo(), + new CheckingRestoringUdfOperator(new CheckingRestoringFlatMapWithKeyedStateInOperator())).uid("LegacyCheckpointedOperator") + .keyBy(0) + .transform( + "timely_stateful_operator", + new TypeHint>() {}.getTypeInfo(), + new CheckingTimelyStatefulOperator()).uid("TimelyStatefulOperator") + .addSink(new AccumulatorCountingSink>()); restoreAndExecute( - env, - getResourceFilename(getRocksDBSavepointPath()), - new Tuple2<>(CheckingRestoringSource.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, 1), - new Tuple2<>(CheckingRestoringFlatMap.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingRestoringFlatMapWithKeyedState.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingKeyedStateFlatMap.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingRestoringUdfOperator.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingRestoringFlatMapWithKeyedStateInOperator.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingTimelyStatefulOperator.SUCCESSFUL_PROCESS_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingTimelyStatefulOperator.SUCCESSFUL_EVENT_TIME_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(CheckingTimelyStatefulOperator.SUCCESSFUL_PROCESSING_TIME_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), - new Tuple2<>(AccumulatorCountingSink.NUM_ELEMENTS_ACCUMULATOR, NUM_SOURCE_ELEMENTS)); + env, + getResourceFilename(getSavepointPath(testMigrateVersion, testStateBackend)), + new Tuple2<>(CheckingRestoringSource.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, 1), + new Tuple2<>(CheckingRestoringFlatMap.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), + new Tuple2<>(CheckingRestoringFlatMapWithKeyedState.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), + new Tuple2<>(CheckingKeyedStateFlatMap.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), + new Tuple2<>(CheckingRestoringUdfOperator.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), + new Tuple2<>(CheckingRestoringFlatMapWithKeyedStateInOperator.SUCCESSFUL_RESTORE_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), + new Tuple2<>(CheckingTimelyStatefulOperator.SUCCESSFUL_PROCESS_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), + new Tuple2<>(CheckingTimelyStatefulOperator.SUCCESSFUL_EVENT_TIME_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), + new Tuple2<>(CheckingTimelyStatefulOperator.SUCCESSFUL_PROCESSING_TIME_CHECK_ACCUMULATOR, NUM_SOURCE_ELEMENTS), + new Tuple2<>(AccumulatorCountingSink.NUM_ELEMENTS_ACCUMULATOR, NUM_SOURCE_ELEMENTS)); } - protected String getSavepointPath() { - return "stateful-udf-migration-itcase-flink1.2-savepoint"; - } - - protected String getRocksDBSavepointPath() { - return "stateful-udf-migration-itcase-flink1.2-rocksdb-savepoint"; + private String getSavepointPath(MigrationVersion savepointVersion, String backendType) { + switch (backendType) { + case AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME: + return "stateful-udf-migration-itcase-flink" + savepointVersion + "-rocksdb-savepoint"; + case AbstractStateBackend.MEMORY_STATE_BACKEND_NAME: + return "stateful-udf-migration-itcase-flink" + savepointVersion + "-savepoint"; + default: + throw new UnsupportedOperationException(); + } } private static class LegacyCheckpointedSource - implements SourceFunction> { + implements SourceFunction> { public static String checkpointedString = "Here be dragons!"; @@ -283,7 +249,7 @@ public void cancel() { } private static class CheckingRestoringSource - extends RichSourceFunction> { + extends RichSourceFunction> { private static final long serialVersionUID = 1L; @@ -335,7 +301,7 @@ private static class LegacyCheckpointedFlatMap extends RichFlatMapFunction checkpointedTuple = - new Tuple2<>("hello", 42L); + new Tuple2<>("hello", 42L); @Override public void flatMap(Tuple2 value, Collector> out) throws Exception { @@ -369,15 +335,15 @@ public void flatMap(Tuple2 value, Collector> out) } private static class LegacyCheckpointedFlatMapWithKeyedState - extends RichFlatMapFunction, Tuple2> { + extends RichFlatMapFunction, Tuple2> { private static final long serialVersionUID = 1L; public static Tuple2 checkpointedTuple = - new Tuple2<>("hello", 42L); + new Tuple2<>("hello", 42L); private final ValueStateDescriptor stateDescriptor = - new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); + new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); @Override public void flatMap(Tuple2 value, Collector> out) throws Exception { @@ -399,7 +365,7 @@ private static class CheckingRestoringFlatMapWithKeyedState private transient Tuple2 restoredState; private final ValueStateDescriptor stateDescriptor = - new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); + new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); @Override public void open(Configuration parameters) throws Exception { @@ -432,7 +398,7 @@ private static class CheckingRestoringFlatMapWithKeyedStateInOperator private transient Tuple2 restoredState; private final ValueStateDescriptor stateDescriptor = - new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); + new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); @Override public void open(Configuration parameters) throws Exception { @@ -460,7 +426,7 @@ private static class KeyedStateSettingFlatMap extends RichFlatMapFunction stateDescriptor = - new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); + new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); @Override public void flatMap(Tuple2 value, Collector> out) throws Exception { @@ -477,7 +443,7 @@ private static class CheckingKeyedStateFlatMap extends RichFlatMapFunction stateDescriptor = - new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); + new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); @Override public void open(Configuration parameters) throws Exception { @@ -501,8 +467,8 @@ public void flatMap(Tuple2 value, Collector> out) } private static class CheckpointedUdfOperator - extends AbstractUdfStreamOperator, FlatMapFunction, Tuple2>> - implements OneInputStreamOperator, Tuple2> { + extends AbstractUdfStreamOperator, FlatMapFunction, Tuple2>> + implements OneInputStreamOperator, Tuple2> { private static final long serialVersionUID = 1L; private static final String CHECKPOINTED_STRING = "Oh my, that's nice!"; @@ -523,8 +489,8 @@ public void processWatermark(Watermark mark) throws Exception { } private static class CheckingRestoringUdfOperator - extends AbstractUdfStreamOperator, FlatMapFunction, Tuple2>> - implements OneInputStreamOperator, Tuple2> { + extends AbstractUdfStreamOperator, FlatMapFunction, Tuple2>> + implements OneInputStreamOperator, Tuple2> { private static final long serialVersionUID = 1L; @@ -556,12 +522,12 @@ public void processWatermark(Watermark mark) throws Exception { } private static class TimelyStatefulOperator - extends AbstractStreamOperator> - implements OneInputStreamOperator, Tuple2>, Triggerable { + extends AbstractStreamOperator> + implements OneInputStreamOperator, Tuple2>, Triggerable { private static final long serialVersionUID = 1L; private final ValueStateDescriptor stateDescriptor = - new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); + new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); private transient InternalTimerService timerService; @@ -570,18 +536,18 @@ public void open() throws Exception { super.open(); timerService = getInternalTimerService( - "timer", - LongSerializer.INSTANCE, - this); + "timer", + LongSerializer.INSTANCE, + this); } @Override public void processElement(StreamRecord> element) throws Exception { ValueState state = getKeyedStateBackend().getPartitionedState( - element.getValue().f0, - LongSerializer.INSTANCE, - stateDescriptor); + element.getValue().f0, + LongSerializer.INSTANCE, + stateDescriptor); state.update(element.getValue().f1); @@ -608,8 +574,8 @@ public void processWatermark(Watermark mark) throws Exception { } private static class CheckingTimelyStatefulOperator - extends AbstractStreamOperator> - implements OneInputStreamOperator, Tuple2>, Triggerable { + extends AbstractStreamOperator> + implements OneInputStreamOperator, Tuple2>, Triggerable { private static final long serialVersionUID = 1L; public static final String SUCCESSFUL_PROCESS_CHECK_ACCUMULATOR = CheckingTimelyStatefulOperator.class + "_PROCESS_CHECKS"; @@ -617,7 +583,7 @@ private static class CheckingTimelyStatefulOperator public static final String SUCCESSFUL_PROCESSING_TIME_CHECK_ACCUMULATOR = CheckingTimelyStatefulOperator.class + "_PT_CHECKS"; private final ValueStateDescriptor stateDescriptor = - new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); + new ValueStateDescriptor("state-name", LongSerializer.INSTANCE); private transient InternalTimerService timerService; @@ -626,9 +592,9 @@ public void open() throws Exception { super.open(); timerService = getInternalTimerService( - "timer", - LongSerializer.INSTANCE, - this); + "timer", + LongSerializer.INSTANCE, + this); getRuntimeContext().addAccumulator(SUCCESSFUL_PROCESS_CHECK_ACCUMULATOR, new IntCounter()); getRuntimeContext().addAccumulator(SUCCESSFUL_EVENT_TIME_CHECK_ACCUMULATOR, new IntCounter()); @@ -638,9 +604,9 @@ public void open() throws Exception { @Override public void processElement(StreamRecord> element) throws Exception { ValueState state = getKeyedStateBackend().getPartitionedState( - element.getValue().f0, - LongSerializer.INSTANCE, - stateDescriptor); + element.getValue().f0, + LongSerializer.INSTANCE, + stateDescriptor); assertEquals(state.value(), element.getValue().f1); getRuntimeContext().getAccumulator(SUCCESSFUL_PROCESS_CHECK_ACCUMULATOR).add(1); @@ -651,9 +617,9 @@ public void processElement(StreamRecord> element) throws Exce @Override public void onEventTime(InternalTimer timer) throws Exception { ValueState state = getKeyedStateBackend().getPartitionedState( - timer.getNamespace(), - LongSerializer.INSTANCE, - stateDescriptor); + timer.getNamespace(), + LongSerializer.INSTANCE, + stateDescriptor); assertEquals(state.value(), timer.getNamespace()); getRuntimeContext().getAccumulator(SUCCESSFUL_EVENT_TIME_CHECK_ACCUMULATOR).add(1); @@ -662,9 +628,9 @@ public void onEventTime(InternalTimer timer) throws Exception { @Override public void onProcessingTime(InternalTimer timer) throws Exception { ValueState state = getKeyedStateBackend().getPartitionedState( - timer.getNamespace(), - LongSerializer.INSTANCE, - stateDescriptor); + timer.getNamespace(), + LongSerializer.INSTANCE, + stateDescriptor); assertEquals(state.value(), timer.getNamespace()); getRuntimeContext().getAccumulator(SUCCESSFUL_PROCESSING_TIME_CHECK_ACCUMULATOR).add(1); @@ -691,4 +657,5 @@ public void invoke(T value) throws Exception { getRuntimeContext().getAccumulator(NUM_ELEMENTS_ACCUMULATOR).add(1); } } + } From d760a4e44c6aa0f6fed9cb715f1477f985afe635 Mon Sep 17 00:00:00 2001 From: "Tzu-Li (Gordon) Tai" Date: Thu, 25 Jan 2018 18:37:05 +0100 Subject: [PATCH 05/11] [FLINK-8472] [DataStream, test] Extend StatefulJobSavepointMigrationITCase for Flink 1.4 --- .../StatefulJobSavepointMigrationITCase.java | 6 ++++-- .../_metadata | Bin 0 -> 32810 bytes .../_metadata | Bin 0 -> 32738 bytes 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 flink-tests/src/test/resources/stateful-udf-migration-itcase-flink1.4-rocksdb-savepoint/_metadata create mode 100644 flink-tests/src/test/resources/stateful-udf-migration-itcase-flink1.4-savepoint/_metadata diff --git a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointMigrationITCase.java b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointMigrationITCase.java index 28f7e4b7e26ec..641e450b23352 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointMigrationITCase.java +++ b/flink-tests/src/test/java/org/apache/flink/test/checkpointing/utils/StatefulJobSavepointMigrationITCase.java @@ -73,7 +73,9 @@ public static Collection> parameters () { Tuple2.of(MigrationVersion.v1_2, AbstractStateBackend.MEMORY_STATE_BACKEND_NAME), Tuple2.of(MigrationVersion.v1_2, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME), Tuple2.of(MigrationVersion.v1_3, AbstractStateBackend.MEMORY_STATE_BACKEND_NAME), - Tuple2.of(MigrationVersion.v1_3, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME)); + Tuple2.of(MigrationVersion.v1_3, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME), + Tuple2.of(MigrationVersion.v1_4, AbstractStateBackend.MEMORY_STATE_BACKEND_NAME), + Tuple2.of(MigrationVersion.v1_4, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME)); } /** @@ -81,7 +83,7 @@ public static Collection> parameters () { * TODO change these values accordingly, e.g. to generate for 1.3 with RocksDB, * TODO set as (MigrationVersion.v1_3, AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME) */ - private final MigrationVersion flinkGenerateSavepointVersion = MigrationVersion.v1_3; + private final MigrationVersion flinkGenerateSavepointVersion = MigrationVersion.v1_4; private final String flinkGenerateSavepointBackendType = AbstractStateBackend.ROCKSDB_STATE_BACKEND_NAME; private final MigrationVersion testMigrateVersion; diff --git a/flink-tests/src/test/resources/stateful-udf-migration-itcase-flink1.4-rocksdb-savepoint/_metadata b/flink-tests/src/test/resources/stateful-udf-migration-itcase-flink1.4-rocksdb-savepoint/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..61a25498576a16bdedd7ba31b0bf696b6d672f55 GIT binary patch literal 32810 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 Date: Thu, 25 Jan 2018 16:23:17 +0100 Subject: [PATCH 06/11] [FLINK-8472] [kinesis, test] Extend FlinkKinesisConsumerMigrationTest for Flink 1.4 --- .../FlinkKinesisConsumerMigrationTest.java | 2 +- ...sumer-migration-test-flink1.4-empty-snapshot | Bin 0 -> 13147 bytes ...is-consumer-migration-test-flink1.4-snapshot | Bin 0 -> 13215 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 flink-connectors/flink-connector-kinesis/src/test/resources/kinesis-consumer-migration-test-flink1.4-empty-snapshot create mode 100644 flink-connectors/flink-connector-kinesis/src/test/resources/kinesis-consumer-migration-test-flink1.4-snapshot diff --git a/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/FlinkKinesisConsumerMigrationTest.java b/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/FlinkKinesisConsumerMigrationTest.java index 364560c40ddd3..3676e7e59d7b9 100644 --- a/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/FlinkKinesisConsumerMigrationTest.java +++ b/flink-connectors/flink-connector-kinesis/src/test/java/org/apache/flink/streaming/connectors/kinesis/FlinkKinesisConsumerMigrationTest.java @@ -84,7 +84,7 @@ public class FlinkKinesisConsumerMigrationTest { @Parameterized.Parameters(name = "Migration Savepoint: {0}") public static Collection parameters () { - return Arrays.asList(MigrationVersion.v1_3); + return Arrays.asList(MigrationVersion.v1_3, MigrationVersion.v1_4); } public FlinkKinesisConsumerMigrationTest(MigrationVersion testMigrateVersion) { diff --git a/flink-connectors/flink-connector-kinesis/src/test/resources/kinesis-consumer-migration-test-flink1.4-empty-snapshot b/flink-connectors/flink-connector-kinesis/src/test/resources/kinesis-consumer-migration-test-flink1.4-empty-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..fba62580c238bcfbb88d46e488317af3c0bce1bb GIT binary patch literal 13147 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 literal 0 HcmV?d00001 diff --git a/flink-connectors/flink-connector-kinesis/src/test/resources/kinesis-consumer-migration-test-flink1.4-snapshot b/flink-connectors/flink-connector-kinesis/src/test/resources/kinesis-consumer-migration-test-flink1.4-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..5ea40099e3c19e0c84589ac49fb5ddec7d682f6d GIT binary patch literal 13215 zcmeGjOKcm*^^y8gAIh>~Np%&YN!2usD@wLyDUJ-JvPip>X<0BG2v&UPh#XRDEq9sS zp-CErfgXYuXfHja$gw#TMT_PT^w6Y-B1KWSKriX3MS-A~o{IL^Q-HSb&F*r!yO3X8zPMD#&*c{{U7A~5W;=5)7nX8!OSy&13k&RWZt3zBfJ+x}e01NC$CC*C zH~0z8Hh%RN|AIc#fEC>+CRmx}c6p+pD%u{tD2WH`AxnsQnOB6OnhB$#38lmncPnL; zXSty;Re8h>LKm+{6rg6ntA~JejhWm6M$mfG(8ml#)YH(fa;+$KUx!l#g{ygYZd1VW z>lvJK-a>v}B9AZ1d`>TwbZx$Y{`_4e#Qkz514DucSyP#bV8$~%Yrd3MUiKS)+`f@6J^ym$E3_Teb<29Z`vFqBJt`(G`fVogMr@X^gd_+Z% zqZt@Ccu_G0H+Ww1nIrSRU@@Q6Y(9h9$MfH0=I$+4MmT5O@h%aj1XiOvS=Hb}18%gj z#FPf6XvIWM*EF6Jx?v{vEbB{@^gLG+mJLc1yu}5}Gr?|Ld;i^kew=(J3WFIq!}1SU zj%#9*8F-fi(|G}>o3sUC;2fw=qg>156QO>S*9o`L3_N2sX89WxuI2bfrL@BhyKl7I z4ApKNFlj+Z=k3=qQ!qocft_@keE|*->^6Ln zRfJADen(2qV5Al)jqRvBzm6=z-Ys0cj1n{U(i%QIWa>6dK+~6866*>CeT!)E< zUftoss3*C~>e~=2=thpOJ~VXa`KD3V*I`OUxLU4$*I+pmT+xA^hIon9P$o=OxvH3@ zG)$u=BWG_H8kEok3OBc5Sl@Yo(!awiCQrjKGTr%X8)nKVJh5r$MT47WvO=P4Kv;)! zf|+}33feTOoO4ap&5D6PoFOZ=VG`T28Y`Q- zx>(aoWttg5XW�m2y>MY90NH1O5^!LZhv*&FR32(r5n5OGqW zf|iaf7v3*u4U}IH3nnt~q6Uf8JGbm0nSzH!Sd5d+6rix`X0`7-$ z!u}S`SAIKx#{&zsdDh$Fg}zcNQwY&~ef5;{Ht-R}A#}-rBw{_g_Xs>T;Ok*)M60$r zkWWj;AD7;T{AVJCw%FWR7BG-ZXIHOfQn(IH$$_-iCp>HY;)fgePpKb%f}srBEX(E4 zEN&ZlZlEI`cfYYcL*Kw(fBU=1Z~dtUqSs+a)mi>JqZJ-~n%G4)?&@m3R(|yx79Q0> z{FSVzffUqPzaC`3*TNX!(e-8mNvWm;#5U8LsZ4q!m8A97mrhj7zo>uSe(U3x&ROwN z3uV~<>*Skn{pkH)E%uPVuZ|Gn4ze|g`*VJcz61r6TCNbz{Rn&zQS}f1+5(dujL*nr z;u`5LEjAzQ@b6j}|3o8{l#s~qTsT>Ts&b)g^`CwB=T8#V6!C|U?4{dF;kRHy8+1Zd zMhXNcUY!c?>{joXk1LN?Cxd-?yo#T+IrDfm2F>0)UL6NNcOI`!Lx?|*qqv(KdJW}u zpdfn>7t4fqZL?+86NP~cOxxbT6@}MZoNnuv+(u6^PN18E0;glFWwj)>;-Wj-(oBnP z(5&Y|$2t@Bl1dTu9#>Un=>1ubMvOGO_nY~& z{`M>1)82fn<0c0~ZI@EXcu7tM&YAWOi-IVZOKA5>5QCz=ZBla zPtcL{q+uvWn_9V_Sch@5vf~YyGY~gDq9yK+*2?8FI)m2^BjZ3iZQ}!Sn=~6bj^Wof zvYV;3^!0QqDLg)iVN9GTS|N184yBX0OPO6Y3|5y)egV05AWX?>6Rs4@*<__us#ElB z>1bnX=3t7y$Pt|8-a!}=JPoOYJHOOA&s2|zEz1J>)-tQvYz}?8I$ifD@8HjEM!Zf*bSQzt!WFWBj^Pho;A20)f zOxb4!0!MZ;5dRMuh%?TnzOgrf8l_-9dj{h4v1K4;{4x-}1WAMU?J0M#B=XefF#5;| zz7T#3W|hogJWo-fo5P5O<}hNEkZ3DM#KLkI@{_h4Myw@=5evv+#KLnJv6dW$jAyqF z5;}W}ShL<&pFp}(cI#eU01;NIYRb1^<5!t;aqE3Aql{L?b@sx~6KBn<#7)5md|u zdlQD1&?VyzmA~}bNmmfE^xvjx#~=vbjY?M@CngW?=CCV>6BC59A@7Rd#6-}V1nG+6 z#6%I0c%i#_ z#5CH8Qz9LKfyj6g_Tk4hj_#O7 Date: Thu, 25 Jan 2018 17:23:22 +0100 Subject: [PATCH 07/11] [FLINK-8472] [kafka, test] Extend FlinkKafkaConsumerBaseMigrationTest for Flink 1.4 --- .../FlinkKafkaConsumerBaseMigrationTest.java | 2 +- ...-migration-test-flink1.4-empty-state-snapshot | Bin 0 -> 6471 bytes ...fka-consumer-migration-test-flink1.4-snapshot | Bin 0 -> 6525 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 flink-connectors/flink-connector-kafka-base/src/test/resources/kafka-consumer-migration-test-flink1.4-empty-state-snapshot create mode 100644 flink-connectors/flink-connector-kafka-base/src/test/resources/kafka-consumer-migration-test-flink1.4-snapshot diff --git a/flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaConsumerBaseMigrationTest.java b/flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaConsumerBaseMigrationTest.java index 84f0e388e1969..c87e6a75b5e2b 100644 --- a/flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaConsumerBaseMigrationTest.java +++ b/flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaConsumerBaseMigrationTest.java @@ -92,7 +92,7 @@ public class FlinkKafkaConsumerBaseMigrationTest { @Parameterized.Parameters(name = "Migration Savepoint: {0}") public static Collection parameters () { - return Arrays.asList(MigrationVersion.v1_2, MigrationVersion.v1_3); + return Arrays.asList(MigrationVersion.v1_2, MigrationVersion.v1_3, MigrationVersion.v1_4); } public FlinkKafkaConsumerBaseMigrationTest(MigrationVersion testMigrateVersion) { diff --git a/flink-connectors/flink-connector-kafka-base/src/test/resources/kafka-consumer-migration-test-flink1.4-empty-state-snapshot b/flink-connectors/flink-connector-kafka-base/src/test/resources/kafka-consumer-migration-test-flink1.4-empty-state-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..2a06fb706639e0ffc6ed2c85f833b658faa0bf80 GIT binary patch literal 6471 zcmeHL&u<$=6n@?$P2)sul1gogXvM));^5t+b!vqml{7z!+ihCmlvbpoOxCmZHtXGG zcAPjIBK3gahQz5HxF94%#gzjWRK%gTO67nMLOpQc#$Qkgcr&}}wPVLPsUspab69(K zcHVpQ-uK@7W&v>gg9CpOy?9Yz;7);>q+;_sVh-RGcRkBUdxUX|TdtFKP1C15?Q_DZ zpAfGkAT^$uoI001H<_Nu8ijP`d^VFN*+Mo=jq%LH#Mza?#H0x@_88w*nv_T(IP(-m zy(i@X{POKz(C0HqyR4`Zj~FGYnzrSvs;uI0t4vjCfO?s%kvwG?F|DE$wlfEH5Y8|f1AhXXcuA^&fu~_K zrdwKm7h_Q8&nQ4k70<5oDT)$9`hmfP=a6&}0~QDq(t2~yN0`Moa&X9|PLY?EVc4{& zU5Ml9bI301s8S1{q)8~@jim)}&}wkd8a+L&Lz0V)%-Y09F(bOzt!5LasL4mu2(+%? zLcuiryTU?48!_J!w_6OIy7%(e-yeT=Kf;-U*|Q@rud)qSy@Hq6Z=sia6zJDsEG!K1 zv~&PPubd3LBJxSoF-d9RE#jB15)a)s+O*9705)MjhY_LiZCbQ^&WNZj(Zo?EA5umO zVw2k{$Wx9AQd{1>Y4K8%jiJiZZQqUb_X;$K6+KmP?L|+XkRTTuR2w#!dAN9c*nap- zfyBEoNDKpW^%^TshOiik*M#oq>;LV?pN_x(qz9A*NZKwbED(dcEC&O;#He3#?LyVN z@Mhrm^~3l(EdEzPnl|*GGefmC3Wr=%j-jI|DPwWND(E;=sP@%WVy+U^a?HabhHkq{jiLamHM)g zbFk1m2IVl)WGn#PEZ?D5ds>eAzY3|dMK+`KNdfpqo(D^W+%|c;bv>avJeQQ z$Tp&dWl!6>_nIY?H42`tdTXqUK}z;5Yrp<}Yf^!p93&0VGG!VfxN6;7hd$ZQIgHj7 zvOH&q3AD%aHW}P_o=9)I+W^u4qp~$0k-!mERGoJ!<@!mF!{Cj@{Pp?S+(K@Cj>Btp z_K-E^szvG`R1Eb}@H33KX zuzAF=;&4XCZlh7(#Zb+N8O8w(Dc9{fAUaC5eL5T4qUfNQ@2C+b>QHwg+#?tq{~ z8M9|(6q9FP(49lu(w%7LfbJa7ofn+$3?0y&7m4m1YejdEQ)5@X-KOzJrX kfIq@O?$bj?mp(~$`BU}ooh7`zS7)ZguFp*3i>)000_>5J2LJ#7 literal 0 HcmV?d00001 diff --git a/flink-connectors/flink-connector-kafka-base/src/test/resources/kafka-consumer-migration-test-flink1.4-snapshot b/flink-connectors/flink-connector-kafka-base/src/test/resources/kafka-consumer-migration-test-flink1.4-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..d778ca06e90d83b4a58a5db2d3ee79d6bcefb850 GIT binary patch literal 6525 zcmeHMO>Epm6n^U@P4lBPNu@TeXvHB^;;?qpZX4Pll{7zPTQ{xPlvJdmOuXY=H(uL} zC&`9GL=OmVNSw-n3qnFvTsUyxf>MFhTM-;8gis_v;sh6j#Gw-KW^Av$*-hBA8&Rq8 z!Crej@4b2Nd+&YY1;FDUJn)ig#ghUZ*YngQ3pT$l#sCg+*RzbYM;N!b|DSShb@4>*m@cL5<28Z*fOmd8vY4do7rZXqs-o|ormQ%1Pcb(-= z-oAZTU7834W*QS%ElaEnkCYJMi63yTF)^13BPGfyv#IY_%N%nZ(<(?|TXRqY;SHnF z@hiaogHi=_tcB4SscZQSj6uSmQGliwJUii26eSMn2L@*zLDE?aSRhPDYt2F%VHRJ` z!Y-RS1zwzmUels>K8~l)VR%+Ym0AELO+pE8EG>Y8R)K?7?dcI6I=NWLm`!{X)2EBo zYBq5SntU{ZKx+yv6imy%7g%U$HRkK$cAcT8Za($#7yBOEig2c2_H4<^^K98wFW@Qm zTj=E$1=@8O2n$6#EFD16D+dCvh*G%(YhZX41p-*Uhi54uM zGa_nDG_Z%shm_I0SmcHZa+ITj!F6xXSiD$cW2o}*rte1jTLl`#jFz%Ex1uNaOOT5N zs#OcjtWI6)wO1b~ka`8Wh+$x^USfI55Egy$oX{O@?LXZ4YTs+$wtzATowiHzlf>XI z%R&b)GU^vyJ74zByb$<(X*XVb#qTmm)4Kn2q`NXl;gGG#F?2K~B`j`O1s#V9)xJ7U z%z2_(4pth6U_HDb?x#f;zzP&J0d&CgHNpfaH%NVfqGVvt-#Yz{^VW)s*{VY#x)MOr z(K;OV!!l0hl4T?7V4-&m%3*xd1fD2U1HT=|nwBG* zpFkgnnfi)lArMHBZA1&pp0Gz; ztJ2MNXp{Y&Lw}->BQD0{|S+s1Uq^oZY@beZ&;j`cTmL)e_jw(E}dp^p;fR%FE9xNKJJ zE8qO?(EE4E2Q84wVm(H#hhSY1mE!=1-Px(!^yt*sL>Uml;^6=~@KoJJ)MtOX>l9+g z#Kvs{ipatt;8o!35$zZH~DkPMTF+o9K)+Z=9kZ57e zBq%7k0fG``%(jtHOrFPr?(Eu-?nEOybZ3X|JmGYwdx!2kNpxp#J-UOO8awW_O&Wi+ zOR0Q4lZ;VpRbtvRSbbZkr`J-1huu)3!AcXiKFt(`rfp^au%)er64IWXT?P`>|6`X? zmosf;(;+hr;O8)qkLf0(NuMN}{Hglkoh7`zU3;d~L+_cCnbiGnep3#n$lNcYY5 Date: Thu, 25 Jan 2018 17:28:17 +0100 Subject: [PATCH 08/11] [FLINK-8472] [fs, test] Extend ContinuousFileProcessingMigrationTest for Flink 1.4 --- .../ContinuousFileProcessingMigrationTest.java | 3 ++- ...igration-test-1516897628000-flink1.4-snapshot | Bin 0 -> 537 bytes .../reader-migration-test-flink1.4-snapshot | Bin 0 -> 2823 bytes 3 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 flink-fs-tests/src/test/resources/monitoring-function-migration-test-1516897628000-flink1.4-snapshot create mode 100644 flink-fs-tests/src/test/resources/reader-migration-test-flink1.4-snapshot diff --git a/flink-fs-tests/src/test/java/org/apache/flink/hdfstests/ContinuousFileProcessingMigrationTest.java b/flink-fs-tests/src/test/java/org/apache/flink/hdfstests/ContinuousFileProcessingMigrationTest.java index 602ad3e1bb0ff..1c2ea6fdcb552 100644 --- a/flink-fs-tests/src/test/java/org/apache/flink/hdfstests/ContinuousFileProcessingMigrationTest.java +++ b/flink-fs-tests/src/test/java/org/apache/flink/hdfstests/ContinuousFileProcessingMigrationTest.java @@ -77,7 +77,8 @@ public class ContinuousFileProcessingMigrationTest { public static Collection> parameters () { return Arrays.asList( Tuple2.of(MigrationVersion.v1_2, 1493116191000L), - Tuple2.of(MigrationVersion.v1_3, 1496532000000L)); + Tuple2.of(MigrationVersion.v1_3, 1496532000000L), + Tuple2.of(MigrationVersion.v1_4, 1516897628000L)); } /** diff --git a/flink-fs-tests/src/test/resources/monitoring-function-migration-test-1516897628000-flink1.4-snapshot b/flink-fs-tests/src/test/resources/monitoring-function-migration-test-1516897628000-flink1.4-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..7b98325fa9f9eb28cf6807b2ab96351af7a4ae97 GIT binary patch literal 537 zcmbu7O-ckY5QQs)9>E*THi2oor)Rc`xN#wj2QcZbZo{OLCW$}e1-y!i3vb~)Tnge5 zv|=x0b}jQDRRkU%k4FKJzDcy$UK()FXoI|SR!8TxZFz_?V)C&xXgxBR9_GusEN62* zE3%B|xhnW#UM;w)icHmos++nb>nr&uW1#Rs?wdrX_x|z;`@zG~`BunYR#zw*qwShL zT2!v1bRuqgypGxgp=3aD=4`t{ucguV=n0a9AnYG!MFkj)&TgI_p5Mgn y$pFm90k>I0q#;wE!ole{%(?Wk!-(Es2;0nKXB*xA!geZ)T4z#Bzb?})B>e!JkF00_ literal 0 HcmV?d00001 diff --git a/flink-fs-tests/src/test/resources/reader-migration-test-flink1.4-snapshot b/flink-fs-tests/src/test/resources/reader-migration-test-flink1.4-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..c5d0ecfe8c3c7ef46ef698562450c59946863b7a GIT binary patch literal 2823 zcmeHJL2DC16n>l3ps9!`cq<+hyqMXhrW)z3#g>F1#i$4cVX`}$Ox>MXX5MP5Cr{oy z2wpvTQS0AOPaZ@B5xj~Ae}lfsW(lD^w5Jy79CmhRc;EZp_r9H702+U3(B#dy3sh_x zOSEpoEzt0u=5zT&K38V*`S`jA7kgn{G#lad+M)>SwMN)%)_M!`QLP>{=c8sYA1q$2 z15{s9NNF0~%TeGbWw=lG?)lsHA2?;ah`)nN7b$E4Q8Dio(L2s7S>K{s?S;0=bZ}vaKB~EE>TR zDxCzEEXq`XQY*`>&P+fOk?JIRl8SIu#-gRt47<)E&%b}YaBUfWl%Ujx(}@mcBm?eZ zT}TJ2BO`TPzYxxKHmPO4)P5m1@5N$?+I49Mp+Fnzx@FVpCW4mRP>F@=OKR1p)GLG-i{K)$290xAn<=yj1%{rRsJ6e+(CrL{!m>m^#GfR5HY`}?u zwy3C87UAqhUS7;q-|wO!F_%VNFK4FMWNwp#LKUep z-(Bj%f>nBCq609I_dl3up)gVP$V3Nm5|#F8qEF*@UL2;A=*UC|`#FPsn&?n|&aM Date: Thu, 25 Jan 2018 17:32:28 +0100 Subject: [PATCH 09/11] [FLINK-8472] [fs, test] Extend BucketingSinkMigrationTest for Flink 1.4 --- .../fs/bucketing/BucketingSinkMigrationTest.java | 3 ++- ...cketing-sink-migration-test-flink1.4-snapshot | Bin 0 -> 1862 bytes 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 flink-connectors/flink-connector-filesystem/src/test/resources/bucketing-sink-migration-test-flink1.4-snapshot diff --git a/flink-connectors/flink-connector-filesystem/src/test/java/org/apache/flink/streaming/connectors/fs/bucketing/BucketingSinkMigrationTest.java b/flink-connectors/flink-connector-filesystem/src/test/java/org/apache/flink/streaming/connectors/fs/bucketing/BucketingSinkMigrationTest.java index bfb326c358d18..3b7c7d4404295 100644 --- a/flink-connectors/flink-connector-filesystem/src/test/java/org/apache/flink/streaming/connectors/fs/bucketing/BucketingSinkMigrationTest.java +++ b/flink-connectors/flink-connector-filesystem/src/test/java/org/apache/flink/streaming/connectors/fs/bucketing/BucketingSinkMigrationTest.java @@ -86,7 +86,8 @@ public static void verifyOS() { public static Collection> parameters () { return Arrays.asList( Tuple2.of(MigrationVersion.v1_2, "/var/folders/v_/ry2wp5fx0y7c1rvr41xy9_700000gn/T/junit9160378385359106772/junit479663758539998903/1970-01-01--01/part-0-"), - Tuple2.of(MigrationVersion.v1_3, "/var/folders/tv/b_1d8fvx23dgk1_xs8db_95h0000gn/T/junit4273542175898623023/junit3801102997056424640/1970-01-01--01/part-0-")); + Tuple2.of(MigrationVersion.v1_3, "/var/folders/tv/b_1d8fvx23dgk1_xs8db_95h0000gn/T/junit4273542175898623023/junit3801102997056424640/1970-01-01--01/part-0-"), + Tuple2.of(MigrationVersion.v1_4, "/var/folders/tv/b_1d8fvx23dgk1_xs8db_95h0000gn/T/junit3198043255809479705/junit8947526563966405708/1970-01-01--01/part-0-")); } private final MigrationVersion testMigrateVersion; diff --git a/flink-connectors/flink-connector-filesystem/src/test/resources/bucketing-sink-migration-test-flink1.4-snapshot b/flink-connectors/flink-connector-filesystem/src/test/resources/bucketing-sink-migration-test-flink1.4-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..45e7bccfb5ba07c6b569e45ec3a57fe60260af59 GIT binary patch literal 1862 zcmc&#y>HV%6n|;c0&Rg7q)H5(=<1KecH*c5(278#fGQ;dCdwtgByOCudv{6Q4oED3 z)B%KGU|?eb^`AftT@Vrs3=F^kBYy+DbEw)<2^ArcC;PtMyWhL_d(US8lpiSArP8W_ zgY(+Qa_*CX1MejxN35mc|@bQh=Mvt~eL$kt!nd%3NzUF-we zhXdS?g~2FEDTqi7;L_n>mIx;uDk%@B5c@F~Le}t`3E1Beq_+HGws_zaLUKwv7&>yq z7_G~Y3%!8^CD~W&^E)FXs6AUz<$#DvFuYV5CiqiRR)6GdiW# zbhV~mCZdJwBS${IdOdyX-7pLlVJrxVS0u{$A{>(~PDLvWyf`{{K5;a$b`<+bVSJCVgj0R01Hzg{MRH8m9Ht|p%)_C=!*opUNk`ci z5-rZ`wOFEjp+)QMDD;_Jh1-xy3RclRsv0E{HvT*3Mnt&OOwC5}Pw!UG1mc{U8GMMw+02>Rz$6q#gzG&qI5-;O8NGER7gCxovr1Q)moo5H>+=}B^{Wz8U E1X Date: Thu, 25 Jan 2018 17:45:47 +0100 Subject: [PATCH 10/11] [hotfix] [test] Remove stale savepoint files no longer used by migration tests This includes: - Removing MigrationVersion.v1_1, since compatilbity for 1.1 is no longer supported (and no migration tests still test that) - Remove all 1.1 test savepoint files (which no migration tests still use) - Remove all 1.2 test savepoint files that are no longer in use (e.g., CEPMigrationTest does not test 1.2 restores anymore) --- ...olling-sink-migration-test-flink1.1-snapshot | Bin 1471 -> 0 bytes .../FlinkKafkaConsumerBaseMigrationTest.java | 6 +----- ...migration-test-flink1.1-empty-state-snapshot | Bin 468 -> 0 bytes ...ka-consumer-migration-test-flink1.1-snapshot | Bin 738 -> 0 bytes .../ContinuousFileProcessingMigrationTest.java | 15 ++++----------- ...gration-test-1482144479339-flink1.1-snapshot | Bin 468 -> 0 bytes .../reader-migration-test-flink1.1-snapshot | Bin 979 -> 0 bytes .../test/resources/cep-branching-1_2-snapshot | Bin 6736 -> 0 bytes .../src/test/resources/cep-keyed-1_1-snapshot | Bin 5674 -> 0 bytes ...-migration-after-branching-flink1.2-snapshot | Bin 5562 -> 0 bytes ...-single-pattern-afterwards-flink1.2-snapshot | Bin 2326 -> 0 bytes ...ation-starting-new-pattern-flink1.2-snapshot | Bin 5371 -> 0 bytes .../test/resources/cep-non-keyed-1.1-snapshot | Bin 3336 -> 0 bytes .../resources/cep-single-pattern-1.2-snapshot | Bin 3311 -> 0 bytes .../test/resources/cep-starting-1.2-snapshot | Bin 6526 -> 0 bytes .../util/migration/MigrationVersion.java | 1 - ...gration-test-accum-aligned-flink1.1-snapshot | Bin 621 -> 0 bytes ...igration-test-aggr-aligned-flink1.1-snapshot | Bin 586 -> 0 bytes ...tion-test-apply-event-time-flink1.1-snapshot | Bin 2427 -> 0 bytes ...test-apply-processing-time-flink1.1-snapshot | Bin 2327 -> 0 bytes ...ion-test-reduce-event-time-flink1.1-snapshot | Bin 2457 -> 0 bytes ...est-reduce-processing-time-flink1.1-snapshot | Bin 2406 -> 0 bytes ...sion-with-stateful-trigger-flink1.1-snapshot | Bin 2988 -> 0 bytes ...with-stateful-trigger-mint-flink1.1-snapshot | Bin 538 -> 0 bytes ...-migration-itcase-flink1.1-rocksdb-savepoint | Bin 22283 -> 0 bytes ...eful-udf-migration-itcase-flink1.1-savepoint | Bin 27146 -> 0 bytes 26 files changed, 5 insertions(+), 17 deletions(-) delete mode 100644 flink-connectors/flink-connector-filesystem/src/test/resources/rolling-sink-migration-test-flink1.1-snapshot delete mode 100644 flink-connectors/flink-connector-kafka-base/src/test/resources/kafka-consumer-migration-test-flink1.1-empty-state-snapshot delete mode 100644 flink-connectors/flink-connector-kafka-base/src/test/resources/kafka-consumer-migration-test-flink1.1-snapshot delete mode 100644 flink-fs-tests/src/test/resources/monitoring-function-migration-test-1482144479339-flink1.1-snapshot delete mode 100644 flink-fs-tests/src/test/resources/reader-migration-test-flink1.1-snapshot delete mode 100644 flink-libraries/flink-cep/src/test/resources/cep-branching-1_2-snapshot delete mode 100644 flink-libraries/flink-cep/src/test/resources/cep-keyed-1_1-snapshot delete mode 100644 flink-libraries/flink-cep/src/test/resources/cep-migration-after-branching-flink1.2-snapshot delete mode 100644 flink-libraries/flink-cep/src/test/resources/cep-migration-single-pattern-afterwards-flink1.2-snapshot delete mode 100644 flink-libraries/flink-cep/src/test/resources/cep-migration-starting-new-pattern-flink1.2-snapshot delete mode 100644 flink-libraries/flink-cep/src/test/resources/cep-non-keyed-1.1-snapshot delete mode 100644 flink-libraries/flink-cep/src/test/resources/cep-single-pattern-1.2-snapshot delete mode 100644 flink-libraries/flink-cep/src/test/resources/cep-starting-1.2-snapshot delete mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-accum-aligned-flink1.1-snapshot delete mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-aggr-aligned-flink1.1-snapshot delete mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-apply-event-time-flink1.1-snapshot delete mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-apply-processing-time-flink1.1-snapshot delete mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-reduce-event-time-flink1.1-snapshot delete mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-reduce-processing-time-flink1.1-snapshot delete mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-flink1.1-snapshot delete mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-mint-flink1.1-snapshot delete mode 100644 flink-tests/src/test/resources/stateful-udf-migration-itcase-flink1.1-rocksdb-savepoint delete mode 100644 flink-tests/src/test/resources/stateful-udf-migration-itcase-flink1.1-savepoint diff --git a/flink-connectors/flink-connector-filesystem/src/test/resources/rolling-sink-migration-test-flink1.1-snapshot b/flink-connectors/flink-connector-filesystem/src/test/resources/rolling-sink-migration-test-flink1.1-snapshot deleted file mode 100644 index 2ebd70a361e78ddacbff6f865ceda0ebc4c86580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1471 zcmc&yJ#W)M7=DwcrO*!wm5LZT!Gws1|tqiJ2#nOd~b8*}_cjoS#x*ZTK z2&n@MFfi~B@+S}j3k!@abYNv-fsNNrA(1+C%t@9{ch5cV`#kT{`w8PpLPbc=pdocz z%xDHaZyQQWMms+D3>k6lcbK86YAd6bp6}wmrm1GoUzse7IWW_VxT}4^(<=?P9i%0F zT9VR|Q!=8G$0WsVQr-yIvICRtZhD|J%sczEOG%{tfNWCLx=%v{%!rUls)bBpPv9wJ z;t;!EKGXfbp3^c$hjoNJG-^!xH1LmDW2kQRr6}CmdG;p@nLU_Q{~`A%b_m(MwOB&w z9RAfhxBbku(eqH-LF}Zt^1v~=C-RbrHUpZ4@;J+(4XD+H% zMpGFNMS%11YB-~tYmwV#Iu$dhmD`2|HKcsgXff!pLQ4q|R-5RR`jBCZc3c9>jmF}EEGpKA@5hv3P~5|Qbe&~QY$RFb9$ z8cZs3R3y!~>sk9HRqF8S5?9Si-8ytDs$$~uIN2rp5%;xSwaZ1jTrdl^RjL+EyIAgD z6iZ9RQpGmyvTc{m0>VsUn^rk*T6wdY&s!A|QmON1ehD)&p9IQC0%fd9Ne>e-@$;{X z?>^D@W02W`oWf-E`#s1dJ;(U!%HY*$4972g`|xq$@s}~kZos8L(8dN%UdS!Ds9Tb$ z7V3+`yDO>c>4Qo9&*7Irve}d@vD|2A~H~r_SVy p-rL2gHz&uZkx6+$CE=gIeJ<@aH%fQSQ5LsGS==6F@j@Jj;a{cN!1e$D diff --git a/flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaConsumerBaseMigrationTest.java b/flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaConsumerBaseMigrationTest.java index c87e6a75b5e2b..388f13caaa94a 100644 --- a/flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaConsumerBaseMigrationTest.java +++ b/flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaConsumerBaseMigrationTest.java @@ -349,11 +349,7 @@ public void testRestoreFailsWithNonEmptyPreFlink13StatesIfDiscoveryEnabled() thr fail("Restore from savepoints from version before Flink 1.3.x should have failed if discovery is enabled."); } catch (Exception e) { - if (testMigrateVersion == MigrationVersion.v1_1) { - Assert.assertTrue(e.getCause() instanceof IllegalArgumentException); - } else { - Assert.assertTrue(e instanceof IllegalArgumentException); - } + Assert.assertTrue(e instanceof IllegalArgumentException); } } diff --git a/flink-connectors/flink-connector-kafka-base/src/test/resources/kafka-consumer-migration-test-flink1.1-empty-state-snapshot b/flink-connectors/flink-connector-kafka-base/src/test/resources/kafka-consumer-migration-test-flink1.1-empty-state-snapshot deleted file mode 100644 index f4dd96d21134264b96e88b4b622d6468ac4bb6b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 468 zcmah_%}N6?5T0(SR-vK@`VJz=K@g<}e<>AK5ZhZXj@`5yo881DTUQU_(TC|vh)>|v zlP}=Oi{8v;>koJ^mlSEF7N__%m<(jtu diff --git a/flink-connectors/flink-connector-kafka-base/src/test/resources/kafka-consumer-migration-test-flink1.1-snapshot b/flink-connectors/flink-connector-kafka-base/src/test/resources/kafka-consumer-migration-test-flink1.1-snapshot deleted file mode 100644 index 01c9e031e5786cb8ae0e57579653655f1355c263..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738 zcmah{F^dyH6n@#TcQKmdRM5)GPIR^qMNOfna$IzkgQO7B+{^AHS$B43otcfRgOK1JTC^NyPtAjR2(4iuBbz8$ZCN-S5^XS}4Jz7T zP8JwuD|^8&D&#J@9W^L zLsKY>*QtZj9XMdenwzl_ahYGfQZ+erzd_$sdOeDxvrq0~n30l_J08PQ9Hz(;X}Ojt z47=&pJ(VZXCTg3wIX3-%@Zr;)b2Qx!G$VICVyBNpQ*YN4#Yx5ke#p3-aS3}h4Q}v{scwADe=_>=ys6}xPCl+dE(%U k-JN-G&h^^1aaX_t_WKnrm#IU{hgEIK?O*yleqHAIA4~!Bw*UYD diff --git a/flink-fs-tests/src/test/java/org/apache/flink/hdfstests/ContinuousFileProcessingMigrationTest.java b/flink-fs-tests/src/test/java/org/apache/flink/hdfstests/ContinuousFileProcessingMigrationTest.java index 1c2ea6fdcb552..30a6119a10cd7 100644 --- a/flink-fs-tests/src/test/java/org/apache/flink/hdfstests/ContinuousFileProcessingMigrationTest.java +++ b/flink-fs-tests/src/test/java/org/apache/flink/hdfstests/ContinuousFileProcessingMigrationTest.java @@ -203,17 +203,10 @@ public void testReaderRestore() throws Exception { // compare if the results contain what they should contain and also if // they are the same, as they should. - if (testMigrateVersion == MigrationVersion.v1_1) { - Assert.assertTrue(testHarness.getOutput().contains(new StreamRecord<>(createSplitFromTimestampedSplit(split1)))); - Assert.assertTrue(testHarness.getOutput().contains(new StreamRecord<>(createSplitFromTimestampedSplit(split2)))); - Assert.assertTrue(testHarness.getOutput().contains(new StreamRecord<>(createSplitFromTimestampedSplit(split3)))); - Assert.assertTrue(testHarness.getOutput().contains(new StreamRecord<>(createSplitFromTimestampedSplit(split4)))); - } else { - Assert.assertTrue(testHarness.getOutput().contains(new StreamRecord<>(split1))); - Assert.assertTrue(testHarness.getOutput().contains(new StreamRecord<>(split2))); - Assert.assertTrue(testHarness.getOutput().contains(new StreamRecord<>(split3))); - Assert.assertTrue(testHarness.getOutput().contains(new StreamRecord<>(split4))); - } + Assert.assertTrue(testHarness.getOutput().contains(new StreamRecord<>(split1))); + Assert.assertTrue(testHarness.getOutput().contains(new StreamRecord<>(split2))); + Assert.assertTrue(testHarness.getOutput().contains(new StreamRecord<>(split3))); + Assert.assertTrue(testHarness.getOutput().contains(new StreamRecord<>(split4))); } /** diff --git a/flink-fs-tests/src/test/resources/monitoring-function-migration-test-1482144479339-flink1.1-snapshot b/flink-fs-tests/src/test/resources/monitoring-function-migration-test-1482144479339-flink1.1-snapshot deleted file mode 100644 index 17eba99d9177d9aa63ff9cc6f523f895c4a430e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 468 zcmaiwze)o^5XR?DA^}Md1g)&>M0N{7lvMsHf}A2Ijij0+o8-K`-E(&@L<_MJA%zzD z7T5S5zJn=jt!!fFW-l7S!mWmxZ-4X6m%T$lE7+E*OEAG!kC6@!MMShw4C7FAiAseD zV@3?>NRyiD*KJ)hXc*+r^Ibr(EuoRqQA8BerPOGSUN0?YaNhVC8k;=&~;2OL^V%=B%xc~O-){vORQeBc7Qz7#3 zinV|3-MN#S>nAs#K6ni%>mSJhT8H2__67>J{^9R7ZCcne`&?>Na~? RU3eS~r!?1gh5S}{+69S=tf-0hiXzS~`P=c0>{D0vFR z3t(ErBT(}Ihz?OurJ-bY?}9Da0&&IOXnwx=zL}Z-gmccqJ#D8<7?Ea@O^RI2m_sW? znX4(YmBPG~427FHHVFPBvIi(oLi0s2bQ0K}R4T<>s}MriO$e4Zusp!>7K}Sz%tPLR zP~$@O64;y_2Zuwrn!FIlf>)Rq{6M(ukua37t&Ow-wGC-6;Wb3HF^2f}R`{Q>4vknT zOKnfs-U-S^z*6UrpT6Ebefy>xLo|equ^?s;5BF*dcm9ETe?(IfDef2ANiiy9BV{oY zs7+-(*!=X`ukPm2w;0F;IG)s|M^*n_-~ePt>fm?FmoWakjNg;Z0_4ry~J zEGDoqp=5;XtK;@)eB$^Mfmx3f?XK^aYnJGgl#_;aP2)aXbe_lKsvJo>gbSH=s6;9K zu7=IB3ZbU7QA;<|^CF=`+S?%WL4P|w_~Fa*?>}~4J#2^3Y6BRbS+vld^+ahfUdmz| zQR3UsfG#&AltljQX`cuX$R&S7j9iRd^QdO~@A~gMKs8-j98p2IvW`2#7LqdVpPRK; r;{37sFZM<^m;j&KzYO8?;oVv;zE%GzjFt-*O1<~*h45d6w`=non|~rc diff --git a/flink-libraries/flink-cep/src/test/resources/cep-branching-1_2-snapshot b/flink-libraries/flink-cep/src/test/resources/cep-branching-1_2-snapshot deleted file mode 100644 index 47f710e37d6cb907d55ca5c237c2b9975f6df99f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6736 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 F{2M(l9!mfK diff --git a/flink-libraries/flink-cep/src/test/resources/cep-migration-after-branching-flink1.2-snapshot b/flink-libraries/flink-cep/src/test/resources/cep-migration-after-branching-flink1.2-snapshot deleted file mode 100644 index 4eb4e4457a778128d07ae7e09da2c05f3f3e62dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5562 zcmd^DTWl0n7(TmON@)>VG1brf{lSvS}fgefmTU?7|!mT?T*gQjAzbv zw?1HqF+TX>izG%(G*J_cFOqm8l3<7sRiN!jzk$9p9pkiIINW3f41u8P#-LVc3Z*aFv$7mV> zn>shqE=m)fU_^Wq>`Zh=Xm@8%q`QN5#Nr9o)e-9<n!1>t(=<18N0l zOfx2QCQM`M<;Pw*r4$Do!1(+CYq6?rvIqb{q+5+F9km#z!sKIu3MQWt^0ga)?m9)h zURVErfbTe^}ZzfE)M3ug@EjZ1HVK&9o{(+r4sSu1CUI~YH z)`YU$j(?syz2x=YH;x5KFiF~&&ho6fTLtM(g5Idp=~3C~aHBbcXL|IqOdoVmdx1Rud6fZ?ZLbR}#F5cF(2G*(Xnew1#^kCpCYJ}M zN2<~Qfh1Xiaj7)NgXACyl<*n?jhpKHQumkOGzDHJ4)NpgeA zvb3OA5p2IsZJXJG+?YhnC=zir2@K8DyQ!TUp%x@(S=}}p&1*`MrJPM@Hk1xiF{Lx& zj4=T?;c3!)G?A-V>YCyrubfrZ)8Bxh6Qs>CUZ=)HRKoO@<9EFb6}qL=xD`L1+TW@l z|075Odr1qNsm!)Vxym?{N?T=*8-xW5KY#bc@&g}*NN|ue>n2s5${HezM2<5%XXPuE} zF>3QPlx9(gq4hOol9QY2>I|uSU=kV}9dSP;3rg}nUs10?FOyqjf9#gc;x=oW_Q{XW zrMlbDdCSp@vxFRH@Y3#5+|9mbxQES#miJzW9a_CBL>l*!YjV_3bv6#?tyvI5qzw*T zE~Ib$CY-~J?;y=Z%}~uE$|T9nhG}doSh|*>0$RJ4tpw@vr>N8{o1pp^+c^q-vbB)S zGA_tEe-N-gI#wkJ8yn?}0KK)eszA8LBmrgzdeNe|l zf1A&*6y09MgZw~hcJf;Y<>1RN!0G=f`7QCNsfHG3Fz!l_pT9yRKi`$h zBfqu29fqt^-L(&Y*%D0O|HG;fcGc2Js>489o}$o_#*!rux+1=E1tC={XU4@hg#9_8 zUij_1M396a@dnJbf-I{#^%p#kABydo0-Mhxi7aWd&B^+9X-PwTYZ_BhUFxU(-F@u|gV$uUhO+ z5AFVT$2-wq?#J;b2TbM%uvhvh}1_)P!@A^K&9KNbB-o%fZiL_45~}iH3#w8dT?!Mdunv|fFzZ8 zNj|*`o~BHm_e4>$PYSG(({X?CHUJNhJ%RB6cJsx}zj(^zH_loi+!QY!hM$m9;+qgR zeHQ^HYnrclC|klcXgH+=<_B?Pi@S3g1pculjlyO8!wa$%_B9FVcpEFSsZ=4KX8fM# z-#@wUxic|vVIOHxD+_`I_YIY-0>|%>qX%xE{Qk&`GJmeBfIPEMsWZqA7BC<~aO?O3 zKcocS5nLK}=I?83hVlll09(UpcwaIMplV4X;c{sNWN8GPq#_WO;+?+E&0LCr$%Rw@ zqs2pKzj-QgRyu=ttI9>OK#Iv{c!}fX&XUyMARkDN(4n9-r{c4h09+%*E%FOeGS9Tu zRYt9{&=plyS3{_5RoSxu-VPU6R9vX*0+dJPl@C%n~x&rU7Mf^0{azW`Hl BvW@@% diff --git a/flink-libraries/flink-cep/src/test/resources/cep-migration-single-pattern-afterwards-flink1.2-snapshot b/flink-libraries/flink-cep/src/test/resources/cep-migration-single-pattern-afterwards-flink1.2-snapshot deleted file mode 100644 index 64e973ebfa382d5207f5c4936572799b87a27035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2326 zcmd^AOKTHR6h29-)(6_S@U?JN5QLdY(sa_H3!kluu~y>)M8uo9C(Y<&X1sILCN6X( z{sLXQRowbO5EK_KMO-L?h8tQvq@+b{?q+0uqqTV>5F-t1>j?bqwRr^{A=4e7X{UST2XM?6_Z z;V{>^ih?lIN~Hms0`{)}<`kiJaLSH1@1pd**4>-;Uh0d}F<{~M0DG}wN-?JZ2#Ay( z^{VW6fPzV1lqHiG-39oV2w?UF5)Dr}b<{((TR-DFe3sQQB#pXgcZd2n(^ts@Tu;*6 z)t9D?flk`!vorg~I_2oi>n~J6(by6Q#}|%looHYKqbev#|Eo$2ze*}`dSE5|q($|8 zl~4+1%cIyreqefTj!B8aYq#*&T#uAXcKr78?ZyXF51*zXU4jg{SjTR+N-#?l*NB~N zL{6s*$B3P7EIHlib<|V|)>Mg&FIo~#^+Qk-8Exvuim1=Ts8cjN{=Ca*kR9rim2^Z_ zr}3h99IfsMw0*(#a`bq5xl$biq)M<+>C!RB6}SeerurYEhhf`@@BASZ>;v>2pvb&c@rY08wNfRFpwN+_0D~J?$(FhJL9j^GCK79 z$-x`9Za;ohpwDzOSlpnZwIeit5l~4xkjjF99esVKM)&jr8C)fjtY$zhd12tzwn0}o bTOxm)jLedlHRHVbd}r3osN{oo;1v7-1r^}~ diff --git a/flink-libraries/flink-cep/src/test/resources/cep-migration-starting-new-pattern-flink1.2-snapshot b/flink-libraries/flink-cep/src/test/resources/cep-migration-starting-new-pattern-flink1.2-snapshot deleted file mode 100644 index 5e4824195a9b99cd62576da8cb989892d199d2cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5371 zcmd^DTZ|J`7(Q*6WnmF^(clFHl_IjS)4g=Ng^ht_+0}(^7w9Sp5aa30>2`EFGoCr! zc71>lV|?(%7fpUo`PXB*73N#s{M&V!VVvi1Dr==!+)$|7T`;p|iW7XiS`> z)6UF)zW@H6e@X};ArkHB(^Bd{Zz9&OQ7x9Bsbnmd>+OxHJ&9zpyIURTXDN_ulhTBA z{ox&W9f1=bA@@t-rBdBVbwC}6r*?5D}3sv%yBx8y>MwsEj2 z*OyQAsx%ktPbK?eiDZ8sF#7Vb)W*bss&)7D_G`U_T!lEO8b7CB{(&rTI7wN2N})DY z3rxuyx_KX5=!$9;izc^DdHtl z=tZVDD6QOO=~{*snFBGZGrL~Zf75+8&j&p>*EhMTGFySzD4EfrXe}L$eqDwvpcyM{ zu3KCeGrLNx#AFsQr2nf-w0z)Y;?BTKSYC-LLpeuqs)`+KhH1kiJ9knc7&rYAj_zy- zWwjlDKXG#DYlE*J36pS|bTWe#S$($(l1zi%xZCM*+39eh$K6hkS35o4*inONvM>+U zSbRp1$z}*BqPTB*{E|!`bx{X_JpO)_0g>I_6jq2MqeY+>rPk4ShcngUnv#`|M=p$1 ztpP%5vJ~S|YmWQL0TQan6#$JH5$v) zl2J#n!v=L6<_L0a8ZqNY#PKvRG}G>&PGOwdkeuaB%N#VXElrkjHl;gII!wcq&We*| z0&t=iNbk`_p=POPiif;;%H`nhjH|` zFbVA??Nn8n<4kakaVV9}+8Qqi3l@I%&aoBud>A3&QL@;usODDI7+E9=oH+%{&?@%k zEpD{SxG#6$?+THYE(v_XNuY5Mt51!SdmsC$#qS2hSWVW4GoTtct^#ClDs=m)NjyBuK+G{f6$HnhL{T+g8!cST6+UUEf&nwr5TVZXIXVvKacrptx& zZP;V%&`cne~D9|&?j3<`8?x- ztPchO`{UUR7jFCrS*N~h4}Q@e&fWXnnh18)vT16-Kw6!m(2~}QEjPL{zH)^jRjX&m#W#fg1)-h$ z^_%`Mi9q5_m}>=DUbpMPoB>1yWYHnXVvfAKpQLSXk*wi45s1(kX_`;$}O~O z4mv^uqFFp669VlBc&kGS1-q}T?Uh5E)0s4k1C>J`UH`-h`ZRbyMp_(rk&{dnt~z_m z+|JglKhpNYlehjf5teSZ!Y~Jh3(`H0t+n+-RaaHZ)MP;BBei_Vl#87BsBXa4FzQ`H zyxPI%DJEnj1i4`zDI8iRvRo7I>%jD3G5lBI> z3fmp&l_67WbmYuilg{T#>X;njTMU*LSc&V>WC7Qw3hss6=X(Q9_i?kO91dTN*q@`o2ai2+3br*EBIHQ4Qjpf7l#rJVZ%_@eg5 zxkt}7sEjaEtLh_CAE`iD%+mq2ZmZ8Znz#XaZ&Wv_AyL;Jzs7hDcySy!4$1 zn7n1Z;-hSdHlX2@A`$T}{#ym1jt1f(mu_QaHj^n8bBy2l?0d)eJ#)GTN@^cz*J=+0 z3GW-L*d>nN73KvK*c@Iws zJZ-8-{SkRXI*C4pr8zYx@qa++JU%RM!80785Zny3be=p)6ROHWc)6pz(gj7-rZPf_ ZOu5bfYtk++@_)i>5iIbm!yjD;^CwDVjj;d# diff --git a/flink-libraries/flink-cep/src/test/resources/cep-non-keyed-1.1-snapshot b/flink-libraries/flink-cep/src/test/resources/cep-non-keyed-1.1-snapshot deleted file mode 100644 index 68ca0ec86d8b8f2dac04236878fd7c855d84d5a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3336 zcmbVOTWl0n7(RRHwzNPC7*M%MSQH4Eu~LxOC~Qkt7N)JTt0a^M&hDJu9XdNRo;ll{ z`haPSzWBlmBt%R!Q4DJLxJ}xt@dfte}Ds z|B6IOOe0H*RjVKj+mc&?Y}3H3>YG)iS+#CVbx~QBa{H*In`}@cU6WIC!4+hMc8pF@ zwJHo#-ACQ>D0M(!iR~~>h0UedGvqjlc#h)${=qi<0cz<;sj!O8rG|mO{+SI=#z^8YSyGlXGfG?tmGwlXvb`5$OQ0*Z>SsLUxUt%~(Xpd%pF z5YFyUBUs)|CW3065ax& z-lpba_jGHdm$Q=LLiI2m!?>*-OqE8Gw@4o{M7a%0-SWD5Wdr|lq*0J%K6sN_B~?Z= z=%JZT;BS?r3R9%Cgf(zs>`0$^;a^DlVbVhj1?IZrTxT2-x2&O4C!wSB>klukJo;IT zMAM|(w5gtk#rfz&TqlAA(Baq2X8 z?Q`GuMDxdfUmwG+>YbuywP}DLl7#2rqpKDN;}J;Jy4%~uaet&N^y`2Bx9htN;mv%$_VmZ}6^K4V;w}tLIjN#D*eED%oqTFeyKGdMrmdoN_D#^vpRz|F9rFj!_5YMF!i~yVAE*vTVy``iqy)}@_ z@8#TYlwB92B&w0P$%+Ciag#~;j{qL)P$%T67q8cP#TmaZg0ffR^arp|K)om;F|vNmOgv^#FZAuF=pv= zUWsf5;z5Zl&<%~wYtBCc-2#1>HY{pNs~eBw+GYqa^Z3~K!4WxN20Xd?D6Edzyb_3_ zWJ(IGmxsl0O#$N(aww9EU}xXl{b%4zJ|l7$CE%Kc3n)s4QiPLmFRQWXv1%pH_*1Wa za%tk#pZetwVvpX~!2iTd{TDAYdj9DBQ@_3ahNLTSKi diff --git a/flink-libraries/flink-cep/src/test/resources/cep-single-pattern-1.2-snapshot b/flink-libraries/flink-cep/src/test/resources/cep-single-pattern-1.2-snapshot deleted file mode 100644 index 255f46a559fcc2b8535f7afff544dd3e03cdaac0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3311 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 diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-apply-event-time-flink1.1-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-apply-event-time-flink1.1-snapshot deleted file mode 100644 index 02f0df23a2c51e2cf7fe9a07e7ec1da083b8cfeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2427 zcma)8O>7%Q6drG4H*plDX{F{;Bn|;_ptDWruOhY74WX7?aj;bmxiDFeh_^S!_Cz2_${ zNm)s9DU$n?#mwt++6jEoqe@H8LSO7t*%#UmIn_+{6m6RO7Mz=!X-@1aIb^OumOFjn zX+IL?lP2#s0M@mzu7PzEFjwJY*T~&qq8;$923hDGmC!V}o`@6Ex`U?XUL)5-VQj!D^x20!zR|a1<;4qgSO4ARUsSF;B zO#T43unZ>bYp8Q9Wt8N_r}6-TN^MZ-IH+`wDUNjl#gqApx?m+ds1cr!*5+e-00bb$t$M`~+w!nT%xiG83bCJC5XRpa7GNQqnJ zwK+HaCd+u*4qE*Dc^Y7pQ7<M1d_%=WL!U zpX}Y{o(8Tsoei{d9oqRjGXY!Jq|62-G6erN3ola+*^_A#5ObIIIWE|hXTzb{P67g#aCZFtbirS1Vm>S zAr}{B^!0iWDbDr+ZcWN1r;lLEaOJ^oJYNzK+|p^W^b}`K!kF~Zj1Ul7izYs%k5i$g Hr|Hdq!t3`e diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-apply-processing-time-flink1.1-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-apply-processing-time-flink1.1-snapshot deleted file mode 100644 index 78963d679afcb6a97409e5d89d2ffa763fadcdde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2327 zcma)7zi$&s6do_JNsOWpkZ=PMML<_@vq!>D1@XfP0ZT?Fovouta}#?UFW#M9X2!7% z5)uvQbpHSaJpx673PE|g;tDD#5kjZyucARhy71nN?e(%D@k-W?XJ@|m-uJ%u-sXQK zt0XxW%5};jR%>$F@IBF@N=wcHPpnhf7TOCq)l9V%t(g5PtSg#nPVAF$$euEpZnQ;B zd!aC&G&xZQSl7b32G;F^xe714=G=8A>ONmAlgZYG*-)AsEZ<@q%x!DWcds+myul(k zFdar*G95~D>^8YaGTkTw_h<1m#nZHZI=lD%pMM?t?d=}otdP7Pvib_E!Oaqx(oM-# zGxY1-=+b55ex@@CZwG!EO=dctsE3^&YoX9wXa(?#DRu^&m@sI-gHZP94IY#|rHylQ z6~Q8~qKyFn2K25Z7so@ovIg{nzkq1a(qP$DGErwhB5_uWz)XwxDqMQZ_wI11$(c0s zEb`o17zCkkbuZ#bmU64Githo%2L%hb0wIiSBhmRXnKHpHb5+x1VMly(&?Xm;OD_WE z0er@Mi0v8RZq$|-#O9~M=iFrVA0#RQ)-GT=EPMN2*>?f=oh-yUj~^3@g~5(lY@0M- zfLaFVkO8{J6h~2m(qqT0xk1v3sib`$DM@GrP<^gL(R=#v+26Et)vDmscz{W)QJ+xr zD=Cn;WYIq>V=Q31QnU(HeA9?~Zu?L%AF}{`It4uvu*o4E3O!EnsDqN6+#REWJs^D_ zO14ZUP=}fvuzkR1Vjc8^Ndg(=)llhu1>r0A-JF}|5NCW)yVZ8&kElH9{-tf*9}lSr zl8VtLN+ipqr+X!m^SM~p%~i6$;c>qnCjmO%+0`9OYUqBtWb+yWS@M|znAs7+%+_Mp zWEK2zwzjtZhg!3ilHGnJze7tjslUbZ_YXgLedx=hL4i67k!OJR^z_&k&y-q8=s50} zC1Tv%zah!-9hk>JsmU8Q0DPdYf?Ax$Pf4x(ympJ%G-$;MOJHZQJ-6e8Bh{YTmS0uj-8}G9R0WY$MU=9#&pg$1x@DD^7?ibkeD(3{r^gR+;7Na6VX#w>i!)=!y5xt7vo)VvmlDZoBiJ--{nFna dP6qg&7#Z-t5aP7J*#J-aBW(6(O(BG}^A#m(=}iCt diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-reduce-event-time-flink1.1-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-reduce-event-time-flink1.1-snapshot deleted file mode 100644 index ed428be0814c12f08948eac5e96f2b1284809f3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2457 zcmb7Gy^j+|6d&)M&3)){T#&d1p%e#7k<4-j;zO4BFqaFKjF4iB6xT4f9-kMlXE!sm zXPW|v1`7TG3VK9@lrE4mqM(M70-^M&Xd*?*<-M6*uUC73S!uny^YNSae((3*^RvH6 zSxIs}l)IEg%nwr= zOJT$%)1frWej#^BX&6Od{tB+9xSA%b%ZJ|n`SR$k*E7V~A`3yt+FQ(nopmy=yOOJJ z7_^7crOU?r(qImr4%{V8mIuCQhlB6EP-rf+0{BY>c2Z7^8??{+p&Zfcy#Et##~zSo z3|wmp7Qso{90K5Q!cdZn)1h72fe?VrfNIc+VC8Kx+h#x{akgu~PLGe8T>32V?{KNf z*&_Qa@?9_N_e0_8QN)oj<+k80+Xpls5v^uWJjADsSJo~WvPi3z49*K&8wVO#;5(4qD_yWhu;On~ifv*{S*)Tu& z1vgw~9XwYNr<7aaKuD{FAOJViazn@5&>f~YN*+TxrWWDhO2S$D0;D|EO+XE}4#nu{ zgI{0K!4Fm+XQl(pV_B1|O_&i|1&}PE(NimOOmF+9XbW=uXCwW!gI&c)tpN0e0`vrR zCb~4223hzsBTEhPmBd`(TS>|IoLd0G#UYWoc;a% z{~)LBN%_t)p_cJUG_U6Bg?q=I{BiW(M`58B4^Nd3aBf zlLrdNGLMc@6Ss|QE2zckoXTtE#?Ec-Y0!$(Sw|~RKuAwa1)SkRxf_(o5d3Quc4mp2 zswr)QY9fto>fT5iWQ!}k){JdG;xcy-+ISp~`mu0SdVtO1v;&#ksWGp|MSE=%8ctnA zvA*f^fo#7iFD93BKTenCnnSV>7vEw>B#@}Rt|9h diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-reduce-processing-time-flink1.1-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-reduce-processing-time-flink1.1-snapshot deleted file mode 100644 index 9945be6b480d81f9635592d9d2bed2d5bf437afb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2406 zcmb7GF>l*O6h6_GYP)c4*MPkgMF%Iy&>R~lh#LrKQpI&6K!JfsNCq!GQzwZLb!6|3 zmee6YmuAQx=#V{V5ujU#+! zNyfK}! zY*-E>E}0Ic+4eoTM@pk80{7Q&H^tpF*t7@)0@f~JN-TRHKC#zLTzAS4>$ds99e8um z{NNKLtXiNLBBwTTI*FVfGR0BQn6L?P)=ZkL+W$bx6WIjRfa_3!i%2ug7ApI$-T_(d z_&jK5DTUs-b8u>5PTVgR{*uN(t_Ms3%-R%TW~n+d8UcTt6w{;GhAq9!x9-me67OCtZ-8`r9)0lm9Z_|{bc;L zxYAqA*iIWRbB55zPtnx31yiX3TgB;oF||`;UZ0Eh)-H^bx`<+Z+vh_&n9qIoqV-_+ z@828(WnHoEYO-C_SOPy8?fCz}fF}cfgq^F{ne$#HqqH{G9I7;r@cWa0c3wUFsREuP zlMjPkgoIq4G1lurs5m6C4q$5O+?!AXOr~H@n_lXPwx!>T=q4Y_CV95}diV*P){CDcj{#G1-%}p~suhZz!fX34b|*EY!(L zyYE@b_C5Vckr(R#Ylg6UY@zGyBSR%$rPh zZ?OO-toQ*JO!-1jdzXAba>F11^UFA!;%pkt&Y$|@r=QQg^VcU|8z)hOUdlQf&qOV$CoXFTR|2`P{oMv9AdvaB86;nGs%(uw$bVi;DOF6;m} z2k?^qknE>{he2PU6Zamj|65pU{)I#Zz}k8E=OXrs;j{E5j^)AEjp%~`5!%Xd3a--7 zRT{fW_nG9Fw-}+AsR$;DPW3U6CYfshs>7A$f})Zp>DEhvzU*%mcWG_saJjn~N{rmrGvp>R0N>p&V}$RYcRG7fu`c=#yHqTxse z)&1l02hmmsIWh#qY$hESGqA4H;X=}F6r5)GR%!Izgkh)$#C}qdQW)!tmhUMJ@&r3& zv;R1Ks@qa&?xt!J?y%Iyb_I661pgz&clth#jf>A1cajlYyN1nKFze;nag6QB#uBRs zk=C(!da9S0s9Nun_>3KI_5&v+Uuhzz>G}LfRgjPbZLvo3OxS8vBL#MpCBhh@qg2OjGg%7t zY_wmRtme1&?{Z5)H5=^>w9*94I6oI~f(!K&mFZ??g z=iur4h`j~@I#Ixrfa?I=@$FP*rs+VmRc+LB*uAW~6_^ob7LL7uZ`e5-HyfHneBH$6 zRn)yVXAv4*Y_twlnbqT7tFi<4n3@;#)g7A;!h7I_Xa8<~y7T+Dn&m>Mor-K`D=CUs ze3QiMss@kllS4c~=hVpRNO3qVCK0~>;lb61pMO*UOQI_mI=c*McV$jrw;f+{w(s!J Zq%`qCoCC;j9DbaVzVg6p=?fgh-~UgFsg?i$ diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-mint-flink1.1-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-mint-flink1.1-snapshot deleted file mode 100644 index 72e8d9027852648c761f9ccf67faf987f7c7a382..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 538 zcmaixu};G<5QeV-st$BwU}a!nK(@pHNS!E^C{majv2?noZX1#~#=ewvVPxSIc!Wx9 zi09w|5MpQQ!ieLv0*RqsY~B6-{r%_p7i<{~rzv9p2AgCV(#Z46@} zhx;8Qyp$@Z>qy*H6bE~s!DHv`*@K!7^=bwLN9%Kx!*b@!G(}0(T0@nJG}ANIo{^}= z`p4nr_5Eb=^ia1Xeb^jYR06NxE;Jmkab0CSPckELkcbND_otvxxh~D-i{0;fBlz&Z LmTZ4}sd3v6&E>bn diff --git a/flink-tests/src/test/resources/stateful-udf-migration-itcase-flink1.1-rocksdb-savepoint b/flink-tests/src/test/resources/stateful-udf-migration-itcase-flink1.1-rocksdb-savepoint deleted file mode 100644 index e63038b81874efad47faa3f07b103c56bccf2a1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22283 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 Date: Thu, 1 Feb 2018 15:27:46 +0100 Subject: [PATCH 11/11] [FLINK-8472] [tests] Extend AbstractOperatorRestoreTestBases for Flink 1.4 --- .../AbstractKeyedOperatorRestoreTestBase.java | 15 +++++++------- .../restore/keyed/KeyedComplexChainTest.java | 5 +++-- .../operator/restore/keyed/KeyedJob.java | 8 ++------ ...stractNonKeyedOperatorRestoreTestBase.java | 19 +++++++++--------- .../restore/unkeyed/ChainBreakTest.java | 5 +++-- .../unkeyed/ChainLengthDecreaseTest.java | 5 +++-- .../unkeyed/ChainLengthIncreaseTest.java | 5 +++-- .../ChainLengthStatelessDecreaseTest.java | 5 +++-- .../restore/unkeyed/ChainOrderTest.java | 5 +++-- .../restore/unkeyed/ChainUnionTest.java | 5 +++-- .../operator/restore/unkeyed/NonKeyedJob.java | 5 +---- .../complexKeyed-flink1.4/_metadata | Bin 0 -> 163530 bytes .../operatorstate/nonKeyed-flink1.4/_metadata | Bin 0 -> 6248 bytes 13 files changed, 40 insertions(+), 42 deletions(-) create mode 100644 flink-tests/src/test/resources/operatorstate/complexKeyed-flink1.4/_metadata create mode 100644 flink-tests/src/test/resources/operatorstate/nonKeyed-flink1.4/_metadata diff --git a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/keyed/AbstractKeyedOperatorRestoreTestBase.java b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/keyed/AbstractKeyedOperatorRestoreTestBase.java index 1b66c21cab150..36301dfd77fef 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/keyed/AbstractKeyedOperatorRestoreTestBase.java +++ b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/keyed/AbstractKeyedOperatorRestoreTestBase.java @@ -21,6 +21,7 @@ import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.util.migration.MigrationVersion; import org.apache.flink.test.state.operator.restore.AbstractOperatorRestoreTestBase; import org.apache.flink.test.state.operator.restore.ExecutionMode; @@ -36,17 +37,15 @@ @RunWith(Parameterized.class) public abstract class AbstractKeyedOperatorRestoreTestBase extends AbstractOperatorRestoreTestBase { - private final String savepointPath; + private final MigrationVersion migrationVersion; @Parameterized.Parameters(name = "Migrate Savepoint: {0}") - public static Collection parameters () { - return Arrays.asList( - "complexKeyed-flink1.2", - "complexKeyed-flink1.3"); + public static Collection parameters () { + return Arrays.asList(MigrationVersion.v1_2, MigrationVersion.v1_3, MigrationVersion.v1_4); } - public AbstractKeyedOperatorRestoreTestBase(String savepointPath) { - this.savepointPath = savepointPath; + public AbstractKeyedOperatorRestoreTestBase(MigrationVersion migrationVersion) { + this.migrationVersion = migrationVersion; } @Override @@ -65,6 +64,6 @@ public void createMigrationJob(StreamExecutionEnvironment env) { @Override protected String getMigrationSavepointName() { - return savepointPath; + return "complexKeyed-flink" + migrationVersion; } } diff --git a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/keyed/KeyedComplexChainTest.java b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/keyed/KeyedComplexChainTest.java index 45dbc78c6504c..04cd9566ef8b8 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/keyed/KeyedComplexChainTest.java +++ b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/keyed/KeyedComplexChainTest.java @@ -21,6 +21,7 @@ import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.util.migration.MigrationVersion; import org.apache.flink.test.state.operator.restore.ExecutionMode; /** @@ -28,8 +29,8 @@ */ public class KeyedComplexChainTest extends AbstractKeyedOperatorRestoreTestBase { - public KeyedComplexChainTest(String savepointPath) { - super(savepointPath); + public KeyedComplexChainTest(MigrationVersion migrationVersion) { + super(migrationVersion); } @Override diff --git a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/keyed/KeyedJob.java b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/keyed/KeyedJob.java index 076fedabae325..85bccbb4c8cab 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/keyed/KeyedJob.java +++ b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/keyed/KeyedJob.java @@ -100,9 +100,7 @@ public static SingleOutputStreamOperator createFirstStatefulMap(Executi .map(new StatefulStringStoringMap(mode, "first")) .setParallelism(4); - if (mode == ExecutionMode.MIGRATE || mode == ExecutionMode.RESTORE) { - map.uid("first"); - } + map.uid("first"); return map; } @@ -112,9 +110,7 @@ public static SingleOutputStreamOperator createSecondStatefulMap(Execut .map(new StatefulStringStoringMap(mode, "second")) .setParallelism(4); - if (mode == ExecutionMode.MIGRATE || mode == ExecutionMode.RESTORE) { - map.uid("second"); - } + map.uid("second"); return map; } diff --git a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/AbstractNonKeyedOperatorRestoreTestBase.java b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/AbstractNonKeyedOperatorRestoreTestBase.java index c100dc9fd24f7..6c9767d011e72 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/AbstractNonKeyedOperatorRestoreTestBase.java +++ b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/AbstractNonKeyedOperatorRestoreTestBase.java @@ -21,6 +21,7 @@ import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.util.migration.MigrationVersion; import org.apache.flink.test.state.operator.restore.AbstractOperatorRestoreTestBase; import org.apache.flink.test.state.operator.restore.ExecutionMode; @@ -42,22 +43,20 @@ @RunWith(Parameterized.class) public abstract class AbstractNonKeyedOperatorRestoreTestBase extends AbstractOperatorRestoreTestBase { - private final String savepointPath; + private final MigrationVersion migrationVersion; @Parameterized.Parameters(name = "Migrate Savepoint: {0}") - public static Collection parameters () { - return Arrays.asList( - "nonKeyed-flink1.2", - "nonKeyed-flink1.3"); + public static Collection parameters () { + return Arrays.asList(MigrationVersion.v1_2, MigrationVersion.v1_3, MigrationVersion.v1_4); } - protected AbstractNonKeyedOperatorRestoreTestBase(String savepointPath) { - this.savepointPath = savepointPath; + protected AbstractNonKeyedOperatorRestoreTestBase(MigrationVersion migrationVersion) { + this.migrationVersion = migrationVersion; } - protected AbstractNonKeyedOperatorRestoreTestBase(String savepointPath, boolean allowNonRestoredState) { + protected AbstractNonKeyedOperatorRestoreTestBase(MigrationVersion migrationVersion, boolean allowNonRestoredState) { super(allowNonRestoredState); - this.savepointPath = savepointPath; + this.migrationVersion = migrationVersion; } @Override @@ -80,6 +79,6 @@ public void createMigrationJob(StreamExecutionEnvironment env) { @Override protected String getMigrationSavepointName() { - return savepointPath; + return "nonKeyed-flink" + migrationVersion; } } diff --git a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainBreakTest.java b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainBreakTest.java index 4e074ea204117..b0618471c92ba 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainBreakTest.java +++ b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainBreakTest.java @@ -21,6 +21,7 @@ import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.util.migration.MigrationVersion; import org.apache.flink.test.state.operator.restore.ExecutionMode; import static org.apache.flink.test.state.operator.restore.unkeyed.NonKeyedJob.createFirstStatefulMap; @@ -34,8 +35,8 @@ */ public class ChainBreakTest extends AbstractNonKeyedOperatorRestoreTestBase { - public ChainBreakTest(String savepointPath) { - super(savepointPath); + public ChainBreakTest(MigrationVersion migrationVersion) { + super(migrationVersion); } @Override diff --git a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainLengthDecreaseTest.java b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainLengthDecreaseTest.java index af81c0e501402..0190ca0a19362 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainLengthDecreaseTest.java +++ b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainLengthDecreaseTest.java @@ -21,6 +21,7 @@ import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.util.migration.MigrationVersion; import org.apache.flink.test.state.operator.restore.ExecutionMode; import static org.apache.flink.test.state.operator.restore.unkeyed.NonKeyedJob.createFirstStatefulMap; @@ -33,8 +34,8 @@ */ public class ChainLengthDecreaseTest extends AbstractNonKeyedOperatorRestoreTestBase { - public ChainLengthDecreaseTest(String savepointPath) { - super(savepointPath); + public ChainLengthDecreaseTest(MigrationVersion migrationVersion) { + super(migrationVersion); } @Override diff --git a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainLengthIncreaseTest.java b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainLengthIncreaseTest.java index 1f07e0bbbc777..d0648ad7e3df3 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainLengthIncreaseTest.java +++ b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainLengthIncreaseTest.java @@ -21,6 +21,7 @@ import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.util.migration.MigrationVersion; import org.apache.flink.test.state.operator.restore.ExecutionMode; import static org.apache.flink.test.state.operator.restore.unkeyed.NonKeyedJob.createFirstStatefulMap; @@ -34,8 +35,8 @@ */ public class ChainLengthIncreaseTest extends AbstractNonKeyedOperatorRestoreTestBase { - public ChainLengthIncreaseTest(String savepointPath) { - super(savepointPath); + public ChainLengthIncreaseTest(MigrationVersion migrationVersion) { + super(migrationVersion); } @Override diff --git a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainLengthStatelessDecreaseTest.java b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainLengthStatelessDecreaseTest.java index fb4dcf5bdabfc..b0f09452d8e41 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainLengthStatelessDecreaseTest.java +++ b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainLengthStatelessDecreaseTest.java @@ -21,6 +21,7 @@ import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.util.migration.MigrationVersion; import org.apache.flink.test.state.operator.restore.ExecutionMode; import static org.apache.flink.test.state.operator.restore.unkeyed.NonKeyedJob.createFirstStatefulMap; @@ -36,8 +37,8 @@ */ public class ChainLengthStatelessDecreaseTest extends AbstractNonKeyedOperatorRestoreTestBase { - public ChainLengthStatelessDecreaseTest(String savepointPath) { - super(savepointPath, false); + public ChainLengthStatelessDecreaseTest(MigrationVersion migrationVersion) { + super(migrationVersion); } @Override diff --git a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainOrderTest.java b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainOrderTest.java index 61e366d5bedbb..cb2252e3b44f3 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainOrderTest.java +++ b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainOrderTest.java @@ -21,6 +21,7 @@ import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.util.migration.MigrationVersion; import org.apache.flink.test.state.operator.restore.ExecutionMode; import static org.apache.flink.test.state.operator.restore.unkeyed.NonKeyedJob.createFirstStatefulMap; @@ -34,8 +35,8 @@ */ public class ChainOrderTest extends AbstractNonKeyedOperatorRestoreTestBase { - public ChainOrderTest(String savepointPath) { - super(savepointPath); + public ChainOrderTest(MigrationVersion migrationVersion) { + super(migrationVersion); } @Override diff --git a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainUnionTest.java b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainUnionTest.java index 456e7464cafae..d8134d836a61e 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainUnionTest.java +++ b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/ChainUnionTest.java @@ -21,6 +21,7 @@ import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.util.migration.MigrationVersion; import org.apache.flink.test.state.operator.restore.ExecutionMode; import static org.apache.flink.test.state.operator.restore.unkeyed.NonKeyedJob.createFirstStatefulMap; @@ -34,8 +35,8 @@ */ public class ChainUnionTest extends AbstractNonKeyedOperatorRestoreTestBase { - public ChainUnionTest(String savepointPath) { - super(savepointPath); + public ChainUnionTest(MigrationVersion migrationVersion) { + super(migrationVersion); } @Override diff --git a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/NonKeyedJob.java b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/NonKeyedJob.java index 1b0ed454c3a15..c04ad884a009b 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/NonKeyedJob.java +++ b/flink-tests/src/test/java/org/apache/flink/test/state/operator/restore/unkeyed/NonKeyedJob.java @@ -102,10 +102,7 @@ public static SingleOutputStreamOperator createThirdStatefulMap(Executi .map(new StatefulStringStoringMap(mode, "third")) .setParallelism(4); - // we cannot set the uid on a chained operator in 1.2 - if (mode == ExecutionMode.MIGRATE || mode == ExecutionMode.RESTORE) { - map.uid("third"); - } + map.uid("third"); return map; } diff --git a/flink-tests/src/test/resources/operatorstate/complexKeyed-flink1.4/_metadata b/flink-tests/src/test/resources/operatorstate/complexKeyed-flink1.4/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..81530444572c2e4ea716cdf66cf45c9800b2006e GIT binary patch literal 163530 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