From 4b072164b52e82fa1c7c30b235e20eccd906b23e Mon Sep 17 00:00:00 2001 From: Frostebite Date: Mon, 2 Oct 2023 23:58:34 +0100 Subject: [PATCH] Interrupt k8s logs when logs found --- dist/index.js | Bin 19482766 -> 19482327 bytes dist/index.js.map | Bin 13786419 -> 13785905 bytes .../providers/k8s/kubernetes-task-runner.ts | 36 +++++++----------- 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/dist/index.js b/dist/index.js index 5aa13bebb0424a61b3a69f0323e3f5f8e7d14a85..b5ad0aaaccd7b036bee496ed3f77daddc1130799 100644 GIT binary patch delta 1372 zcmWmE_gl?z9ES1he5+HZlM0n1PAHX;z4zWDGqOka$|j>wWY!VqLz0O#C0 zs_#E|{K#PeDmz~DQyD=zH*h z8_2eU9`w> zE3`%%v_&A=p*=dFBRZiog3twB5sYr=jvnZVUg(WJ=!<^nj}Q#NKn%iQ48c$g!*Gni zNQ^=#Mq>=dVjRX}0w!V-CL;_}Fcs4<9pQ+;49vtVL?Q~aF$d9@i+Pxj1z3nhh(RnY zSd2I_#f~ zAPwo*i+$LS12~97$iQJ7!BHH;ah$+OoWf~j;tbB>9M0ncvXG67xP;5Nf~&ZO>&U?k z+{7*1#vR16wJj5eB#uGfnGd#x&yu>TK#v8oFJG{pSe8eYw#ut3WH+;tr{KPN( z#vlAeF8>hU8c?nJ8Ut53SU_;uVW^61@yMTmLxqk-{RB$IGqy=S=BVZKRi{Vln0nK#v+B(f-LAZz+M1AcL2H8v3uGSw8zRvO zb~xZfXLLanq7j3xh=mK?5QlgqAQ9b>1UEeJq6d zKoB!=4`$(B%*K7V9}nO`JcK!@!ozq3b1@I|@hBGHF)YL)EXLzlf@&;94MJFkTGU}V z>Y=d$PoM!S@g$zY(|88YVii_n4W2_Ip2rJ#5ij9oyn?k@hbF8?GhW4OcpV$C5t|Uk zW^BP$Y{MIP6K|mfZ(}=lU?<+eyV!;I@IF4khxiB|;}f)EH}+sJ_Tf`}hR^W@+VCa5 z!hRgU*Z2nC;yWC~A$*S?a2Q8$6hGn^j^hM=!b$v$Q}_k#IE`QN8-B+h_!EEO4F1Mh z{DX5ikALys;?@RZDI})EBC$#$BsNK;q?5!haY&q!&XO*YC`q&=M$%OhD{)D>N#Z2& rk_1Vjq`M?Z;+A+MUP%v0vP4NzB&m`#Nl!^HNxG!B(ZV-j*w0pj diff --git a/dist/index.js.map b/dist/index.js.map index 0207f16302313502a41c958a7cfba5adb458de93..28579d2b27c0cc1acc696980a5cb8d67a29efd44 100644 GIT binary patch delta 1046 zcmW;E`BThs9LMpg);CtAY_x6PYN>5evW`+)QR^;CZmATJ6qTcdP{NXgaMww%SyyR;?7@wf^c(-z>e`|En?0 zE2AO3x5i+$7|d>PhX)iG1PPuPj3H2BD7@ee9}I&p{4g9U_+tb{A^>UxLgO%)gWA41 ze#Ocm9-=f}4j0YIvQAXl0u>G)qil5>h{9lx@f7X(I#1y=8dXAT)_aLalUyirTe6ix z`$JZVzRDz}X#E`~iTda`)xfN&P7^4~e`-plyn?dgq9~F4SB?;MDRKafpUBA!_7S%F zAcZJN36;dx1itjwY9!I4(|C(2yR3CYCCY!?MSr2JusBUJf)RpHXfX<-5r%N+5CJ{L zU@XQV5>XhBXiR_s6EO*sF$FP*#Z<&09!4Y}5lNVa=}1NjOqhY0n1$JxgSnW8RHR`( z%vgYhNXH^9#u6;WGAzdmtV9M@Aro21#%kms7i+KQ}>oW(hu#|5;Y6&G;{mvIGGaSd&_jvKg%TeyuoXvbaH(1CmCgdO+M1qUAB uA-dtjBRs|vJVg(l;W=L5C0^k*-ry}OAiFWWpd+6W|ANax#9ncZ}=!5_SA_&3gj4lX4D7r$AFeuKZl<I^bVRRQfzEz4!cR@hA-sm7AL)b*92RYnGO2vpO>JtafdIDK#x= zx|ymuan+C5s;``hQzNBhhY~4iZdE6(ajGV6m&s46 zr+Fc5DV8#fHgaxAzj|7ZH zBF11W#$h~?kcBztmWMV0@ zkc}MVA`kf}Kp~dF3LA=0jODPyffZPZRalKRSc`R7j}6#}O(?-;Y{6D+!*-OS3_GwB zyRaL3uowGKj{P`*gQ!3y4&g8aM{pF!a2zLa5~pw)RXBsQIEVANfQz_<%eaE8xQ6Sv zft$F6YSiF1?%*!&;Xa&r02gZU5RdQ}Pw*7a@EkAj60h(YZ}1lHP>1)Z#|JdvBR;{6 LMyD&`^J?V}6LlI? diff --git a/src/model/cloud-runner/providers/k8s/kubernetes-task-runner.ts b/src/model/cloud-runner/providers/k8s/kubernetes-task-runner.ts index 900ca4b1..fcd7a188 100644 --- a/src/model/cloud-runner/providers/k8s/kubernetes-task-runner.ts +++ b/src/model/cloud-runner/providers/k8s/kubernetes-task-runner.ts @@ -32,7 +32,6 @@ class KubernetesTaskRunner { ? ` -f -c ${containerName}` : ` --previous`; - let logs; const callback = (outputChunk: string) => { output += outputChunk; @@ -47,15 +46,28 @@ class KubernetesTaskRunner { CloudRunnerLogger.log(`Loghash found`); } if (chunk.includes(`LOGS:`)) { + CloudRunnerLogger.log(`LOGS: found`); + // remove "LOGS: " and decode base64 remaining const unpacked = Buffer.from(chunk.split(`LOGS: `)[1], 'base64').toString('ascii'); const result = RemoteClientLogger.HandleLogFull(unpacked); CloudRunnerLogger.log(`Logs found HandleLogChunkLineResult:${result}`); + if (result) { + FollowLogStreamService.DidReceiveEndOfTransmission = true; + } + + return; } + ({ shouldReadLogs, shouldCleanup, output } = FollowLogStreamService.handleIteration( + chunk, + shouldReadLogs, + shouldCleanup, + output, + )); } }; try { - logs = await CloudRunnerSystem.Run(`kubectl logs ${podName}${extraFlags}`, false, true, callback); + await CloudRunnerSystem.Run(`kubectl logs ${podName}${extraFlags}`, false, true, callback); } catch (error: any) { await new Promise((resolve) => setTimeout(resolve, 3000)); const continueStreaming = await KubernetesPods.IsPodRunning(podName, namespace, kubeClient); @@ -70,26 +82,6 @@ class KubernetesTaskRunner { } throw error; } - const splitLogs = logs.split(`\n`); - for (const chunk of splitLogs) { - const message = CloudRunner.buildParameters.cloudRunnerDebug ? chunk : chunk.split(`Z `)[1]; - - // if line contains "LOGS: " then stop - if (message.includes(`LOGS:`)) { - CloudRunnerLogger.log(`LOGS: found`); - continue; - } - ({ shouldReadLogs, shouldCleanup, output } = FollowLogStreamService.handleIteration( - message, - shouldReadLogs, - shouldCleanup, - output, - )); - const result = RemoteClientLogger.HandleLog(message); - if (result) { - FollowLogStreamService.DidReceiveEndOfTransmission = true; - } - } if (FollowLogStreamService.DidReceiveEndOfTransmission) { CloudRunnerLogger.log('end of log stream'); break;