From 97ca574116bb5ee5af0bf1ed69fe1f60b6b770b6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 31 Mar 2026 14:32:44 +0000 Subject: [PATCH 01/16] Initial plan From bbc3d1165a3565cbcd998c8bfc1673c645ae390b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 31 Mar 2026 14:34:39 +0000 Subject: [PATCH 02/16] ci: add Windows service start/stop test to Test on Windows step Agent-Logs-Url: https://github.com/OpenIdentityPlatform/OpenDJ/sessions/b8d7e4b7-e6e7-45c5-b70c-b90833a88d84 Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com> --- .github/workflows/build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 26894a3684..a4131e4327 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -234,6 +234,12 @@ jobs: opendj-server-legacy\target\package\opendj\bat\rebuild-index.bat --bindDN "cn=Directory Manager" --bindPassword password --baseDN "dc=example2,dc=com" --rebuildAll --trustAll opendj-server-legacy\target\package\opendj\bat\ldapsearch.bat --hostname localhost --port 1636 --bindDN "cn=Directory Manager" --bindPassword password --useSsl --trustAll --baseDN "dc=example2,dc=com" --searchScope sub "(uid=user.*)" dn | find /c '"dn:"' | findstr "10000" opendj-server-legacy\target\package\opendj\bat\stop-ds.bat + opendj-server-legacy\target\package\opendj\bat\windows-service.bat --enableService + net start OpenDJ + powershell -Command "for ($i=0; $i -lt 12; $i++) { try { $c = New-Object System.Net.Sockets.TcpClient('localhost', 1636); $c.Close(); break } catch { Start-Sleep -Seconds 5 } }" + opendj-server-legacy\target\package\opendj\bat\status.bat --bindDN "cn=Directory Manager" --bindPassword password + net stop OpenDJ + opendj-server-legacy\target\package\opendj\bat\windows-service.bat --disableService - name: Upload artifacts OpenDJ Server uses: actions/upload-artifact@v4 with: From 607c63167ebd4fcfcb522a709c6dbec17a6724c2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 31 Mar 2026 15:31:01 +0000 Subject: [PATCH 03/16] fix: correct Windows service name and PowerShell wait loop in CI Agent-Logs-Url: https://github.com/OpenIdentityPlatform/OpenDJ/sessions/a07e721d-23f2-4511-976c-3682f3473369 Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com> --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a4131e4327..cc2c4e9ed0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -235,10 +235,10 @@ jobs: opendj-server-legacy\target\package\opendj\bat\ldapsearch.bat --hostname localhost --port 1636 --bindDN "cn=Directory Manager" --bindPassword password --useSsl --trustAll --baseDN "dc=example2,dc=com" --searchScope sub "(uid=user.*)" dn | find /c '"dn:"' | findstr "10000" opendj-server-legacy\target\package\opendj\bat\stop-ds.bat opendj-server-legacy\target\package\opendj\bat\windows-service.bat --enableService - net start OpenDJ - powershell -Command "for ($i=0; $i -lt 12; $i++) { try { $c = New-Object System.Net.Sockets.TcpClient('localhost', 1636); $c.Close(); break } catch { Start-Sleep -Seconds 5 } }" + net start "OpenDJ Server" + for ($i=0; $i -lt 12; $i++) { try { $c = New-Object System.Net.Sockets.TcpClient('localhost', 1636); $c.Close(); break } catch { Start-Sleep -Seconds 5 } } opendj-server-legacy\target\package\opendj\bat\status.bat --bindDN "cn=Directory Manager" --bindPassword password - net stop OpenDJ + net stop "OpenDJ Server" opendj-server-legacy\target\package\opendj\bat\windows-service.bat --disableService - name: Upload artifacts OpenDJ Server uses: actions/upload-artifact@v4 From 7b70095de59250f585b7c9d83459ec4cb2ca8b4a Mon Sep 17 00:00:00 2001 From: Valery Kharseko Date: Tue, 31 Mar 2026 18:34:41 +0300 Subject: [PATCH 04/16] Replace status.bat with ldapsearch.bat in build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cc2c4e9ed0..af65065eaf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -237,7 +237,7 @@ jobs: opendj-server-legacy\target\package\opendj\bat\windows-service.bat --enableService net start "OpenDJ Server" for ($i=0; $i -lt 12; $i++) { try { $c = New-Object System.Net.Sockets.TcpClient('localhost', 1636); $c.Close(); break } catch { Start-Sleep -Seconds 5 } } - opendj-server-legacy\target\package\opendj\bat\status.bat --bindDN "cn=Directory Manager" --bindPassword password + opendj-server-legacy\target\package\opendj\bat\ldapsearch.bat --hostname localhost --port 1636 --bindDN "cn=Directory Manager" --bindPassword password --useSsl --trustAll --baseDN "dc=example2,dc=com" --searchScope sub "(uid=user.*)" dn | find /c '"dn:"' | findstr "10000" net stop "OpenDJ Server" opendj-server-legacy\target\package\opendj\bat\windows-service.bat --disableService - name: Upload artifacts OpenDJ Server From 5322e9058220d74af35d9af06a70b77ae54365da Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 31 Mar 2026 15:50:42 +0000 Subject: [PATCH 05/16] Initial plan From 2c785d19a76dd37c54da0e9dae35a6cbe558c0e9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 31 Mar 2026 16:46:42 +0000 Subject: [PATCH 06/16] Initial plan From c00d4e455d4f712f47f6f2475900baf2ff67edcb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 31 Mar 2026 17:04:47 +0000 Subject: [PATCH 07/16] Fix infinite loop in doStopApplication: add missing nTries-- decrement Agent-Logs-Url: https://github.com/OpenIdentityPlatform/OpenDJ/sessions/e46b6ae6-67e4-4df3-a718-14eb1853fc33 Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com> --- opendj-server-legacy/src/build-tools/windows/service.c | 1 + 1 file changed, 1 insertion(+) diff --git a/opendj-server-legacy/src/build-tools/windows/service.c b/opendj-server-legacy/src/build-tools/windows/service.c index 0f9f6e0fc0..840fbe71d2 100644 --- a/opendj-server-legacy/src/build-tools/windows/service.c +++ b/opendj-server-legacy/src/build-tools/windows/service.c @@ -677,6 +677,7 @@ ServiceReturnCode doStopApplication() Sleep(3000); while ((nTries > 0) && running) { + nTries--; if (isServerRunning(&running, TRUE) != SERVICE_RETURN_OK) { break; From f824443f165cdaba87244be4dd5fd68987efda70 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 31 Mar 2026 19:20:13 +0000 Subject: [PATCH 08/16] Add Windows native executables build and upload steps to CI workflow Agent-Logs-Url: https://github.com/OpenIdentityPlatform/OpenDJ/sessions/9c943d96-6413-42b0-9380-3e3e6186a45d Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com> --- .github/workflows/build.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 26894a3684..886153d511 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -234,6 +234,23 @@ jobs: opendj-server-legacy\target\package\opendj\bat\rebuild-index.bat --bindDN "cn=Directory Manager" --bindPassword password --baseDN "dc=example2,dc=com" --rebuildAll --trustAll opendj-server-legacy\target\package\opendj\bat\ldapsearch.bat --hostname localhost --port 1636 --bindDN "cn=Directory Manager" --bindPassword password --useSsl --trustAll --baseDN "dc=example2,dc=com" --searchScope sub "(uid=user.*)" dn | find /c '"dn:"' | findstr "10000" opendj-server-legacy\target\package\opendj\bat\stop-ds.bat + + - name: Build Windows native executables + if: runner.os == 'Windows' + shell: cmd + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86 + cd opendj-server-legacy\src\build-tools\windows + nmake all + + - name: Upload Windows exe artifacts + if: runner.os == 'Windows' + uses: actions/upload-artifact@v4 + with: + name: windows-exe-${{ matrix.java }} + retention-days: 5 + path: opendj-server-legacy/src/build-tools/windows/*.exe + - name: Upload artifacts OpenDJ Server uses: actions/upload-artifact@v4 with: From e991de7210524a5629444709af1f39dd5bef79bb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 31 Mar 2026 19:22:17 +0000 Subject: [PATCH 09/16] Add copyright notice: Portions copyright 2026 3A Systems, LLC Agent-Logs-Url: https://github.com/OpenIdentityPlatform/OpenDJ/sessions/00df5340-a338-444c-a9a7-92f4f2a0dd7e Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com> --- opendj-server-legacy/src/build-tools/windows/service.c | 1 + 1 file changed, 1 insertion(+) diff --git a/opendj-server-legacy/src/build-tools/windows/service.c b/opendj-server-legacy/src/build-tools/windows/service.c index 840fbe71d2..58fc63021f 100644 --- a/opendj-server-legacy/src/build-tools/windows/service.c +++ b/opendj-server-legacy/src/build-tools/windows/service.c @@ -13,6 +13,7 @@ * * Copyright 2008-2010 Sun Microsystems, Inc. * Portions Copyright 2011-2013 ForgeRock AS. + * Portions copyright 2026 3A Systems, LLC */ #include "service.h" From 8ef1b1acff1423a45e8f42dd7f3cf7fdf6b01852 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 1 Apr 2026 06:06:11 +0000 Subject: [PATCH 10/16] Move Windows native build before Maven and copy exes to lib Agent-Logs-Url: https://github.com/OpenIdentityPlatform/OpenDJ/sessions/7a28df62-1005-4859-8e60-7f15511a9a5d Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com> --- .github/workflows/build.yml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 886153d511..017d78dc72 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,6 +47,15 @@ jobs: if: runner.os != 'Windows' run: | echo "MAVEN_PROFILE_FLAG=-P precommit" >> $GITHUB_OUTPUT + - name: Build Windows native executables + if: runner.os == 'Windows' + shell: cmd + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86 + cd opendj-server-legacy\src\build-tools\windows + nmake all + xcopy /Y *.exe ..\..\..\lib\ + - name: Build with Maven timeout-minutes: 180 env: @@ -235,14 +244,6 @@ jobs: opendj-server-legacy\target\package\opendj\bat\ldapsearch.bat --hostname localhost --port 1636 --bindDN "cn=Directory Manager" --bindPassword password --useSsl --trustAll --baseDN "dc=example2,dc=com" --searchScope sub "(uid=user.*)" dn | find /c '"dn:"' | findstr "10000" opendj-server-legacy\target\package\opendj\bat\stop-ds.bat - - name: Build Windows native executables - if: runner.os == 'Windows' - shell: cmd - run: | - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86 - cd opendj-server-legacy\src\build-tools\windows - nmake all - - name: Upload Windows exe artifacts if: runner.os == 'Windows' uses: actions/upload-artifact@v4 From d23a1de9b396c94894a2cfb9ecfecc0649ee0e57 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 1 Apr 2026 06:09:34 +0000 Subject: [PATCH 11/16] Move Build Windows native executables before Set Integration Test Environment Agent-Logs-Url: https://github.com/OpenIdentityPlatform/OpenDJ/sessions/7fb02264-b78f-4248-bd9c-6e74b2f3270d Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com> --- .github/workflows/build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 017d78dc72..e95b2cd7b7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,11 +42,6 @@ jobs: path: ~/.m2/repository key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2-repository - - name: Set Integration Test Environment - id: failsafe - if: runner.os != 'Windows' - run: | - echo "MAVEN_PROFILE_FLAG=-P precommit" >> $GITHUB_OUTPUT - name: Build Windows native executables if: runner.os == 'Windows' shell: cmd @@ -55,6 +50,11 @@ jobs: cd opendj-server-legacy\src\build-tools\windows nmake all xcopy /Y *.exe ..\..\..\lib\ + - name: Set Integration Test Environment + id: failsafe + if: runner.os != 'Windows' + run: | + echo "MAVEN_PROFILE_FLAG=-P precommit" >> $GITHUB_OUTPUT - name: Build with Maven timeout-minutes: 180 From dd54e58dc3023f3d64d910822ae532ef95166bd3 Mon Sep 17 00:00:00 2001 From: Valery Kharseko Date: Wed, 1 Apr 2026 10:56:15 +0300 Subject: [PATCH 12/16] Add git status command in build.yml Added git status command to the build process. --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9a5b522670..9123cd54d3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -50,6 +50,7 @@ jobs: cd opendj-server-legacy\src\build-tools\windows nmake all xcopy /Y *.exe ..\..\..\lib\ + git status - name: Set Integration Test Environment id: failsafe if: runner.os != 'Windows' From f2749b212701b3cfcea6d89e9cd8b00cc1aa134b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Apr 2026 09:20:21 +0000 Subject: [PATCH 13/16] Update Windows native executables from CI artifact build (run 23892978565) Agent-Logs-Url: https://github.com/OpenIdentityPlatform/OpenDJ/sessions/55032988-067e-46e6-8e8c-07e4a8e47fe1 Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com> --- .../lib/launcher_administrator.exe | Bin 159232 -> 159232 bytes opendj-server-legacy/lib/opendj_service.exe | Bin 169984 -> 169984 bytes opendj-server-legacy/lib/winlauncher.exe | Bin 158208 -> 158208 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/opendj-server-legacy/lib/launcher_administrator.exe b/opendj-server-legacy/lib/launcher_administrator.exe index bf71337cc1bc03d2ba1f20bcac108bd96c0a7297..c375becc15421fafc29932157b3f437eab32cbeb 100644 GIT binary patch delta 43 xcmZp;!`X0$a{(i>w9&cA%#6Ow7JAIh!Hn&}jEviZ8JRNmK@!{d8!$QA0stTo40Zqj delta 43 xcmZp;!`X0$a{(iB^OG}^nHhbV*(NhJ2Q#(@Gcs-uW@O6L2T5$-Z@}be3jk7W4%h$y diff --git a/opendj-server-legacy/lib/opendj_service.exe b/opendj-server-legacy/lib/opendj_service.exe index e4f456c8eba0a1f283399c60ba1327bc5f2a2a77..e91f10365126bd0132d27afb5ca5ded9fee295a3 100644 GIT binary patch delta 13353 zcmZ{K2~-nT_xRiZf(io4z6b~cD&R~edol^2C@yG_8bmg6jkuwLTSc&liV;PhI%@rF z-RizI)o87X)rxEDTKBEhb`-U0U9eU2zZ0uj^OFAn zBv{8ehXQz!YM0MJPC7ITQN`3yRCU*=5TkJ3LQzKZ-3LkHJ6$-`C_G+BQ5G)8l1x<` z3#hbvR*u7^%(CB-C}A8aZ5GpJlZ>JYbB-g0Sy4!bG78Ixt(g_3kx{P6u9keUXEpi8 zwVkBd0CLqeUE-NfI=S_Wil2>ie2|Vw=!(-!!qHp`*NCbQFb807AqZjFWQ|)0+#!eD z;-J=A@75nAttzd_E#69?fap8|p*t~oT!C>Up;Z`+Cw*FlLjoDssx9^`Xr+c%))TEb zkhsnxu3p>2l>JbUhKgg(mG?y?839sySRCPsz z-E-DX?91qXum$QT(|ioEt4rPp&!3A3&gOkBDa!7<8AesU_MFv2r1|(^5|t*L zMI4LoP{*!0TTWGvhk0d?G^@7cZKofrliG03i0WCa? zqd6Skg;_`mU*ifTM!~XD+@Www19tcrE9}VOGGxs>T13o7#6l>PWU@DejKw0N56Vy+ z>%cYFJSsyRl>>);ZORmwMwCop4H_7VQ$JLwuD~aiM@hTJDaS;r&2UD=F}Fj=Deh89 z6RwJVU7ZI)4o7tpHxIrhH+)lIG>PyF z04ve>b@O)r!y!<8ka<=E(t7`tEb>d128ud5=2q1;D%>L2mBPbRimFPX?30~^+xTe7 zr4CVE=uK5A&Q&>4DxrA=aq-V+bL=z6G)qJMd81kP2I;jUqx|E`ieESusY7Q+=BRpa zdvO$PE*BB5JrRf8Gwi-mXkwMMCGG9L#rR}2-xr6!#o>BSOHNc=hS^Q*IO)K5L+@&y zDY!eXKw-iSOAeNU=sQ8HBVGekK2u==DhqfEa?pz2h4@`-`@n z!9EcpNKsHwpro-EJE@GS&cYjvo1(IW5oBFZyI4&rzM>^3HZ9;~G&`($=Of1g8Fj9r zEeN6HNl*vBhtvPH;(1L7!fg^4OncFduV_yW%SM5eATFLqp+2<4(Zq4+=Zgni4nn)>t!i*&&V|2eTQoCMj9A> zRLGD~I7X^MXvIar;qtUm*o;e|SO-LI_X+QlsD~&gMt^(~wu@M^qG)kqMy4=>{1FoG zW5fyd-exl*)Vr8hiFmn$4pq2EBeq>GE-zTfgwTFUw`3%g_#vs0r{kgl3g7(xFG*np zZjt2~t{@XvFqsD+uCSQ=9oo5UR*J(Ij6zkTeyV#%#qO)YarQ>KQRs?P&}y1i`|48% z?!)h$FhhxW+Ym3^=nzQ={2$a$n^1W~HJ?DV0}^qUUj8Q1b8ez%`jjG@+h&HINkpV2 z_9p&?QbhWw4S^=1Vcp$hv8!oPH7N?~7urIcQv1)80}mRfU}!K3W67N`Wyf+h5&dgE zMr6^!tBRvy5#oe=5fe3J{HP7#EJ+OC0f)#R;l3er?>F&hM(x^tDfCe^7?o%UV@P;} z51b(Kh(4Wq=$rN*DftwFQ3z=G$lsf*!8e4gDWamh>Zj~~M#@6t$n^+c?iPn3<(Wyi zjEXQ>t_trbi#YD}AtrN_Q?i(&|C7|T6>A+@a<4dT&oC$A7vr9tFVROvw2J@5juYv>aS!c6I2jWeqHw}4+{el%C6P^$ zC&OHX2to@Su!M?Hsk#)9oriC6n=;Jn#jzjB;mD|jllR1_?uSLYeQ0%zx{1cV$kFeH zVJQHLGjTn!b2{;kiiL?p6BQ5bi8(3)BFVg{?7)q89YiWVNQwjY1>m+hl8{kYNIpb$ zfMF!IeK>R_J=%vtG#SypeH?}OeURab56+%**5lIls6B&lL(R3XaFt)~ICjZ=Q+&Bh z_OxvhcuBoiEtm`8&VJ>ZT0q+!ve3en!oHRNfGAIv2#u^AvES+Vh+v(aNJYl}ZM(=TzA0J1c8j@Mze!v?TB zIHSK&I6~q&ghCh6v%`3=bkqqNZEw_u7*Q{i(;WiKwqd}--4Uw;rVuc8eBRi>zRnby zPjk?!&&RAh%Y+7Mp4;YQqJEf*@4~Gyh=H-yE7P$b!j-9wGvXUv`VbC(tO@dOI7AWY z?ry?zJpg1#$AzuFz23MT$3!uz7kBc7$;7V{11Ti6Qw(sVs8bKgpV!ENPC6_H8#?tB z2jUFiLgvPGhlAu?TrT93gm?`^k&*EsIC*w_TW}*A;xpPTxgwGdK)WgNHs2Ie&u64% zLKdWwVF`usgq%xYF$+0&js?yd-?=xq{n#13j7Gi9q`Sdp>j`?BGZyP5@*03}(oA_8 z&RH)g)0!o8X+}|4!Z}H6j|#uJIG$aFLhP)6vI~y(w>&N{b)!mJ2=8%B=x0sS&vk+# z@^jL#R=aV3_lwS8>Eeb#zDIHmv?14%!@-yQoh-*vo#~1(D-$Y8dgKVx7X=I^&IAk?nT9Ay^ zIT@#iI@Wd-P(Z5w0SdiF#1sw5+bG;48C@gs7%;hOmdC%fI6hf_>Iwj7tmjh>0&eZX z?(wjU9PHjbf`3TDqwvmFgm94`EVmFOnDuh&o9IHp4d*I^)J0yNvo@i^1s|~t8{j3l zlTR{I{f=TzRu_d74;J=|**P(!D&?iH!}@i`egJPWx{ zif)B?tgA{55qe@-A)F?VlLVopOAZr~is8v#g0--_y~IsugHtdnTAo#v+!xM~nw(*H z@_n7t%eSqVS*HY0GZ05CDN+ND3X_N_cLm%e&vF;QJyMqED|u-q%kr=)B!A~MKo9aV zKN6ftz#t`Bs&SBCM%W#p-G;!bk9AO&_4@4?}4ok$0d zh?y`F1H$oo?|!BX!G_N$6-EqKwl+II@8nUo)+m0298x=&WA7A+r`~k~7UGVvXdPl+ z;KVnoq*I}@sY?EdII{o0usjGoBvxWCCIg2I2tn_**iAwkjPAn067hhyMx1PyH51&( z=^@b=bYBdq1y^Dn8Wr@-aFKpM#R+?TqNSUA%@M)fv5! zeQ{7m_74w%N95<>GPLxTBjRBuQIA-RcOhr+8Oq6D<`H>~32{ibU!Wf@Bs( zEre+ZWe95#wi0e?pyXa_vU^fAc#yKGZ$_#8U<>ekNlnlTx=lZvWZuPI&+T5dflhhRlH3$ZTRD|Bv zq&ZUnW6ig7JHwac(OfMICDB!1V&Ps_l@9wz;Jk430nNONe!cOCS>FbY-|bMjXEIea zna(f?S4gBK%6)_TKhCh1WLVm@pZsqJZY?E7Zb#B?3_Tg9Ov^Q43i*#E#B)s^R&*1c zEhX`Y0dtF7xd{&*dUg(OU3sc3(#voVmIJP?Ns>xmwBK&$u49DTsDOZj5k^p;&&%d!b z9%ok^3qefGMowhZ!bm733l~Pg0P@X3wQ@fet<@s zUQruRQ77O_#YH>f1|a4@Qn6^dM~DVX0*A^?XtVB%r$Ql_y|@d;!c&V!!XzRi_rmgx zc*W#eJ=rb8Xi4o|)zXrhTGdLBVAW^B3#b7^wj?Q7=J18^-0!_8jK`Me(iIYAdc)_8VK{q>7`n41s+PX^2$pEs<^qm|ySxvaC$D%F+$IUjcR*)yYk34l1pD%oXu6kp^YvI{DealaQ`*bwv}bt!KZpE^ zDz}$B##^q!6{XB8HA*Rd9`+LD{rBULJon+{zD>PN?>~@$l}UIvK5*qP@RD$!uXpZ? zA?8(Ds3+@J^?}LOKUe)KfeP!DFFH#ggSf5@lN8lCkSuGxFMqtWJU4o;Sq0##>CXOT(>x%t1W2xDc z+?(tkmk+EZ_tyJi$d@2CBBNr8{67wYh~3ED_5Oa74*$3NpqrMuWeVBEV?%;p z9F`V^fGkJi0~Qy@i%(<<{v>@vAYN>a+RzgVlD!*DzS$xdM!RnS7I*cn3!TK`r#p%G zY7}~M^;hW-Pwsrx1x}L4jpN(9e=2fZ=wnV5WeTc6nZz?rfRK!JX;X5|Ap1A2Q1w9{ zMA=gAThg8lt@6OEOJzBV&O$Guf$e&v>@!;NTYbd0Xkz2c? zN$%d-9?ytZw$8z`UH-OIjFFqR4U>FmOFXythBYK-`&{(p2isM+O4}XEjz7+GSOnHZ z{=+Lu-vyO;Wngr3n&s#fQ%aqqPBIBvQnsT8b>g+N1oYO~J5vD?tv~G=4OnsLzGh&6 zb?n!l!QyYK&|BwyGZ{WuC3{{pgCgsz0}2V|+PFjYu*Dj1*ahGh(zcd^_12u)qX2hF z`1k#w+B)(3+Y+cF{eJib_F3h}695?;TDP`UZ@emTQZ_&RJ(k#LMl-CRUCML;Gr4|k z0-jXTu1|yl>yhiH0lljFW)BSWS8n!_z%3Ga=TCS;{O?A?eWJgc3lprX?!I@zmzDRE z@dSM9z6GC0KIjED>z)V261;xuC>UX@^;5wHaMsE`3UPuotMN&&6K?J3XDi^1wb^q8 zz#uF40tPO2``pz;rAQT+`bKZlD+mAOjx(=Y7q7WKrKLw?Ha&J zC&=ZCUBCdL{5LMp4F=f$c7bYuEqs+L=wJ+g+!a2709&vdtaXKC+aXWr0QfF=0qX)U zZ6SVe0zx~tOQNPC%trVVAuY18EycFR1_5Alfld5?P>6up{IpQ$&^BksHN4xTgs!%Y?VuE3G2cE4bndGs{xdRz9}@*3%?q%nBAgP&@{6ND**v1@HNkcv z3aS7`@j20u1k3r=(GVH>9fy8=#d2IcOEg7NM+(ox5H*0mjVLgkm&5=gf!n-121da< zeoYJI7Y#pg(^v0ouZhy`AB?1TOP082BQ5J%cw^juPPG!K^jP zfOTGD@;__aErk>pN%KK`gA!^Wn6Fa7k>+3KHA=9Z&rm~db4}B0cYePb(%kOj#Z?3? zyx?1Dpr88}_*O?@`9le1w$U0G4sf2osD+L0mD&GjW*9$P2Vu=qut(HPKYoV}%fFI4f)ddPH5%|f#iR`Y}P(9!>9fAM~<#INbbRB&|+=JMk2^{;%F>S@-ymG{6g#o?^JI zcUPCVPi!OX<5SZh1}58z(x3pK6Mvx(#7n3iJc^V9Yi)UbVFgIsy7O<1kN{Wt*mRJ? zT0Sow#sX_Qn-1Rq%-}!EKs)SX`#J+YcYzhQK3TBJ8GLQ^xzNm6(n?|bvj94|L8UFM z5ZnPS@o}SIX{0_*RIuYn)_0KIz7H#|vV6;f+@l$mTzC9wFjxrT?~j6Lcx7uj8n$3K zukV&d}C&rxJ== zz&8Gq8dTO~zN!Xzw8Dr*Ku7Lq_74k(HUG_m$x`Bu$thTvZ!2B|EhSKHD<{y!8Fc(H z9_GPrzVCA2^?~*eA4TZMie7s1Xw%Hr!ut>ZjJ3kCdKYzx+XVaxvpxk&SuBo(qqe9O zpp&4-7kmy=Vy1dHV*EKQmE45mZ$5|x2pUhUFsN}rzyWt*`!cjRu<~iEQ1o-Q)vLe? zu+-LXHLURfFaG6LXxCizE&h&=CyRHsux${C2EnVh!>7=T-?JT*YU#ctDg_}OVJJco zLIuJage?g35#Avb>`$VmBTPgnMEKm+eg_1)!vfy$E#$NsdP@|q9Xd{ZOCi&?`CABW z21EI}TB!DroK2!$oJpd7LAcHr9D$ftlYjn*j(2T^{IVk$3O?|X?_pBRoXa2Vd5xrQ zr8I~JAQWR)9TkDZu_w>bRbcz#dwA#sX1?k;tc1;cR2|4dS6xV=b|b7q*n%Lw2VHE0 zeYTQ1z{GKmM=izJE}j6VW)N+=@+0I)&|MYh(XcknI_9v26@nsM+ce_o_>o_~r|owrQ+V7EnFfUB_g z5`LvjOG-ph8b1rPi60-S8=6FFHopHgHjx_C0wvg(L@gVPDd9lUKRB1p;_=XyL|wLp z{tSi)F>tu!{ck+`h6oJ3*WEYb2W`$^_H;Xh|=Wf_uCNH~{DQAK?yY8hTa zvv`n+y9HDagd&7$ge?el2=@^%i=6sI5>&?EQ6&i>rz=JA2u>*!Wk4uIc!BT+;V*>u z2#+qgtBz;aQSAmo>SG)CT@!mL%9CJui{!k05@& z}ZQgDoURU5}5PxK# z!~kFLkSz&wYPBnozmY8obP?xmyo2^MP3Zk`;-YNH5Esu=iBw1aEn>L3 zoJsgsiXKKV)F@qPi%(qkdMtsK0<8%=99!Ggf9@A-yEGzo~23r=`2*0 z-{vGr#vjQ?xzy+sy>0jMC4D2x)*1F2P8u#7-WrgDaEb~*vvH!^&^kJwUPOOOU!Y&o zPE2bikm<)1Fg$aexyL+Xe59SEbEGS!3bqeBfGuGUv1i#U>@D^w8zmbq+a;SQUn1Wi zuaiHLH^>7OkqV8XP_a}YDB_hPl#`SPl)otdQhKWxRbiQGs%p0CnChLT@Y^#XOB`kMN-+C|e>Q=plwnXg%`*{wOMankx~gS6wc)3o!oKWMLLZ)&4;ak>KC zaNT%anQpdjrEas%synLtP4`&$R_Drja-m!#*O60k>D+8?Ik$y7$i3i#^a}k5{S5t5 zeVI*vME_h*8Dxf3L%w0Sp~NuXu*C3{VY^`;>gAT&gK37=(p~A% z^aOe)ZK0RY`{}2&go$I)n6apzUCbWld*&>2k!fI@r7fh9(pafdYLezihe^jtmq}Mi zH%NC%Yo({8H>3}wk}}qt4Px7|omeHC!kXAY>`>Osj%JJ4IqWi2=wtRh>nv+2Yb%q> zOtNg*U|F^73)vP_@vpLnvX?R!d8GUk`4D-zyhgrH{)0SLF+j0Eu|)BeVkfHmsp7q& zg)&?zSN2jGm1bqJa+L)BK5qUxpUry8Oft(vJ?tU9Gq zsVAy;sxPUXG`^Z_%}C8S&00+xtxmg6dtUpSwqE;8>#g(CMe1^O3eLdwMCA_UCU8@@ z8Qd&x9#_Nh+-hzEw~e!M-*QK|liYdk8ux&E%Kgc`<(%{$`cQqmp3`^JZz$8B*E<_J z8q@}(!DPrW3^tezV-3ZID#IGXCc_Rxt>KiY{zQtpgpHIo&?D%nsPYr^dHOb*W&)#R zdNJwD3}!vEov|{d?B`9}G6`Sx_vqtrGCz}FnAku zhD5^z!&1XK!)C)V!(&k>BSmd0!h|J3Z+|0@1c*nM`IB zQ_5^&zGf~kHyHuVs*N;28Y)#uQ>1;Q8PWmLiPBPOm2`oWNOws0NsmcSN`I6-mcEus zSXb7ajb}Ob2zwJ<(;(|A%aohtU6q;25@m&wQJ0z3YvrYns7~&CRP)t znWOtz_dxdp_gdt15Je5Zrn7XjG*Dh3FOyfwm&%XG-^fE0^~!~+?wakI&$VZ?dR-S? z4_zOfNtdG=tSi)A=l<6F8lntRgWk~7FaWo<6n)EPIAeHVcp=g)qROZ!Y$@844x&5L zUFafuGF^(2e_#@%bEPKsTb3%PC>^3~qmMAxn6YdZd3Sj)d0%;kJX4-6&zHAR_^X0d zVX8<~jH;8Wvx-$c*HBtP{{|B^RYOs+*mPzUYzCXjX0!S15cU$=PN`LHLo@$VRra-h z5SkkGCFNiwh;B#6(sQI^*)q17ELb)|)OR_{AU?o*Ssz#((iPr~T=+bPUbWCbWqn48$if6yK#2nG~j) zS;myJ^VoIlHg+%j6MKzqEen*f$n03zF-3RfS*4(KR<%~OSJ5i1DnnJEnx)#Ns#681 zqtsG$inawrYU#m~4e^TF2-&Ma5wL`)Ezte63kK zRXb0+Mf(W7-dUHdE7xt%z0$dJv0NTEnVZg4a%Z^y`T{+#|5Cq6?_`)_pw8hx6Hrs3 z^g?vfhjc7DXaUB>znBk9GihsS9LBo;bW(Y!0##j9!&PHc(dyZnLfv0nfnl0qBgTsThC0KK zhD(M&3=X5cOHq%JiA1^^hUzJF1-*veNbjQ$(%)n3_=WzReoVik%RDf*`7<$$is6`K z%yB~)GcyL=Z2?1=<;+3mGSd<{ZZFkf1Rst(FO+^R-7P&Uy(4`heIb1#^^#3XV-pHNH6wOh_ zG{rT=pNa-WcXg?{QoUP!8bgRu(?c^=vkGn5OWRlbRtso8u9(LraCMwQ-&_B?ev9F2 z3?;uC{t{j3S)+@(pxtytKPsfh)0=4<%J>FjNIWBBhB{347;_R+(<|JD_R@9i1-9%N z+e)@l#we7EJcU`YP_aVs9Y(k(iZ_a{bh{1bku*^F3l#oq^$q)jEJ!ZLbaP$tR^_Z- zqqeH|s|RbwYNlvD)6B*cU87ls46oH}((KS&MmvhvmZIe=^#*+}{Q$I(Lj6?zJpCg5 z=lTu$o%)OVTl(M2F!}zicf$Y~gjrxS?xI5)FQBI5qAqj~`V;yheHG2F?54QeSzvTvW3TV?!E7h7s~{mr$5@23w#7I4*YaQOKm48kXvPSSyBo-f%3_8m*f zoMmn@cbS*WDDSP@uFOL3*r&B?2Xe)j=T350xR=~JuDw1^-$kFLC;FB8>-u~8M|vMa zjDf)jxX7^Da28!1*PwyI-%F^LWpo6cLl2>?bRFG5cV^0%b<6;Cj~ZzgwjVo}{gMUD zSTki;WQ_c^T&I|!*o5ilj-o(Gln0eRDX%I2R)(mmR6A8atKO(4sF!03x~*QRIi(5K z8ns_)k7yTT8d6}$`Ihq(BVuBsaQ?XNOgfS&Q!@S0(l0XWq({)6DYhk>#%{+t?merO zrOOt}cFLskPvxuSYZTuqoRmSB>#~*Q%GJuRl^2vZl>sW5YKCf<<|~a|cb~hfcQu3= z`WYxAP)l&F8T1Nz9qq?VMNc|_Cg&mbkp@fU(yo}cvQfwq>B%zbO)0P)*b+G}zbbzr zcUGh*7AaOLRx8${q&qO(ey8|JaSOd8QkjOei?>RTMaq6vpe9{2Ub9~Fjpk2{QJbsf zwHvhCwTCbXUDWbAEB6EUiff~f(8uca`c!?0VXlE11Y(q@K4Au;i;rcBF@P^(%6?;( zOV^+gy_L3PL)p%35+;ga>|`t(K1V$qX792uumJOu#maihTVN${Ua?i#TBSoKE~r|n z+o_Y)$JFD|{;SaLcWW+aBw7td%oSRz_D5|SU4pJVdO(eCht8%us0(qFq70|!7II6t z6<8x}EaQ&p&*~rO+Zd7zR1t`ECRI)=*|v&U#Rz4NYN)DE6^?rvgoGwwh5NOxPIq3H z%njf~M4&>jVP$V*@p745E6jH+p*b&&po*~naF?l2npNNthUUl*+_(N$q2 zv7zDrz?BWwuh+X{;YEE3)F()6x;#=fSyigqq}r}Jth%DASE<#%U}k8hnTuY1Pxnyw z91CmU!nhc&id)KU=JsHPcaJmZyX!}ye^=_4=#vef8MYXXV#Wk9pHbb>#D~#iX$x~p zYLZV@e5r6&worO1{glxfET2-8xym8RamoeCB^cpf;?clK6|G7@C8w&gRU=f>@Pt5+ zo%^b0YK3~JdW?FKx=g*7KVL2JFB5AOS|h_9c%pID`e?hN_9tq~wM%dhDBU&PM~?lG zd=XXOzDypDWv_Lh)#$!VEQBy%Ni) zp`4i;%@uJMF*M*J=YYz=W(d|f3+Nx{XS9O(ih0gZSkX!Gh_GDRSpOGe^*Ws`#|k!5 wwpVsQc2-u8$;1Uq)o1cZ#S2Zi?tm_l^B92@_ZsdHRum0fn5}++#H0ED1Eeh~vH$=8 delta 13380 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 XFJ*VJZf9AZ^|rrQEb?r*lotO#tHeVY diff --git a/opendj-server-legacy/lib/winlauncher.exe b/opendj-server-legacy/lib/winlauncher.exe index f971e1b7d5336ebb4c9bb00a8f652f6d13e52f8f..8b4b57fadd766321c980841b2ebe05fcfe2b41d9 100755 GIT binary patch delta 35 pcmZp;!r5?za{(i>w9&a{X2y1AM#k;Tj7&TAK?2+N8!$Oq0szKt3UUAd delta 35 pcmZp;!r5?za{(iB^OG~p%#7{KjEviv8JTwKg9NtkH(+wK1OV$=459!4 From f5fb9fe068d118caee768950d77d0a6f9f375904 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Apr 2026 16:37:45 +0300 Subject: [PATCH 14/16] Fix Windows service start timeout (NET HELPMSG 3523) in doStartApplication (#621) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com> --- .github/workflows/build.yml | 2 ++ .../src/build-tools/windows/service.c | 19 +++++++++++++++++-- .../src/build-tools/windows/service.h | 2 ++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 17a6361b67..e1809fa9e6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -247,9 +247,11 @@ jobs: opendj-server-legacy\target\package\opendj\bat\stop-ds.bat opendj-server-legacy\target\package\opendj\bat\windows-service.bat --enableService net start "OpenDJ Server" + if ($LASTEXITCODE -ne 0) { throw "net start 'OpenDJ Server' failed with exit code $LASTEXITCODE" } for ($i=0; $i -lt 12; $i++) { try { $c = New-Object System.Net.Sockets.TcpClient('localhost', 1636); $c.Close(); break } catch { Start-Sleep -Seconds 5 } } opendj-server-legacy\target\package\opendj\bat\ldapsearch.bat --hostname localhost --port 1636 --bindDN "cn=Directory Manager" --bindPassword password --useSsl --trustAll --baseDN "dc=example2,dc=com" --searchScope sub "(uid=user.*)" dn | find /c '"dn:"' | findstr "10000" net stop "OpenDJ Server" + if ($LASTEXITCODE -ne 0) { throw "net stop 'OpenDJ Server' failed with exit code $LASTEXITCODE" } opendj-server-legacy\target\package\opendj\bat\windows-service.bat --disableService - name: Upload Windows exe artifacts diff --git a/opendj-server-legacy/src/build-tools/windows/service.c b/opendj-server-legacy/src/build-tools/windows/service.c index 166853bc47..d14eaa4d7e 100644 --- a/opendj-server-legacy/src/build-tools/windows/service.c +++ b/opendj-server-legacy/src/build-tools/windows/service.c @@ -503,7 +503,7 @@ ServiceReturnCode isServerRunning(BOOL *running, BOOL mustDebug) // The functions returns SERVICE_RETURN_OK if we could start the server // and SERVICE_RETURN_ERROR otherwise. // ---------------------------------------------------- -ServiceReturnCode doStartApplication() +ServiceReturnCode doStartApplication(SERVICE_STATUS_HANDLE *serviceStatusHandle, DWORD *checkPoint) { ServiceReturnCode returnValue; // init out params @@ -546,6 +546,11 @@ ServiceReturnCode doStartApplication() debug("doStartApplication: OPENDJ_WINDOWS_SERVICE_STARTDS_WAIT is not set. Using default %d milliseconds.", STARTDS_WAIT_DEFAULT_VALUE); } + if (serviceStatusHandle != NULL && checkPoint != NULL) + { + updateServiceStatus(SERVICE_START_PENDING, NO_ERROR, 0, + (*checkPoint)++, wait + 30000, serviceStatusHandle); + } waitOk = waitForProcess(&procInfo, wait, &startDSExit); if (waitOk) { @@ -590,6 +595,11 @@ ServiceReturnCode doStartApplication() while ((nTries > 0) && !running) { nTries--; + if (serviceStatusHandle != NULL && checkPoint != NULL) + { + updateServiceStatus(SERVICE_START_PENDING, NO_ERROR, 0, + (*checkPoint)++, 10000, serviceStatusHandle); + } if (isServerRunning(&running, TRUE) != SERVICE_RETURN_OK) { break; @@ -640,6 +650,11 @@ ServiceReturnCode doStartApplication() while ((nTries > 0) && !running) { nTries--; + if (serviceStatusHandle != NULL && checkPoint != NULL) + { + updateServiceStatus(SERVICE_START_PENDING, NO_ERROR, 0, + (*checkPoint)++, 10000, serviceStatusHandle); + } if (isServerRunning(&running, TRUE) != SERVICE_RETURN_OK) { break; @@ -1119,7 +1134,7 @@ void serviceMain(int argc, char* argv[]) { WORD argCount = 1; const char *argc[] = {_instanceDir}; - code = doStartApplication(); + code = doStartApplication(_serviceStatusHandle, &checkPoint); switch (code) { diff --git a/opendj-server-legacy/src/build-tools/windows/service.h b/opendj-server-legacy/src/build-tools/windows/service.h index 6d6b933cba..d75debac0f 100644 --- a/opendj-server-legacy/src/build-tools/windows/service.h +++ b/opendj-server-legacy/src/build-tools/windows/service.h @@ -13,6 +13,7 @@ * * Copyright 2008 Sun Microsystems, Inc. * Portions Copyright 2013 ForgeRock AS. + * Portions Copyright 2026 3A Systems, LLC. */ #include "common.h" @@ -95,6 +96,7 @@ ServiceReturnCode updateServiceStatus ( DWORD waitHint, SERVICE_STATUS_HANDLE *serviceStatusHandle ); +ServiceReturnCode doStartApplication(SERVICE_STATUS_HANDLE *serviceStatusHandle, DWORD *checkPoint); void serviceHandler(DWORD controlCode); BOOL getServiceStatus(char *serviceName, LPDWORD returnState); From 85d40f08f2e7bfc6d7b7fae33e1a2407c61b969d Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Apr 2026 22:46:30 +0300 Subject: [PATCH 15/16] Fix Windows service premature exit due to transient lock file false negatives (#623) Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com> Co-authored-by: Valery Kharseko --- .github/workflows/build.yml | 31 ++++---- .github/workflows/deploy.yml | 30 ++++---- .github/workflows/release.yml | 38 +++++----- .../src/build-tools/windows/service.c | 70 ++++++++++++------- 4 files changed, 95 insertions(+), 74 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e1809fa9e6..c995358c82 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,6 @@ on: push: branches: [ 'sustaining/4.10.x','master' ] pull_request: - branches: [ 'sustaining/4.10.x','master' ] jobs: build-maven: @@ -28,17 +27,17 @@ jobs: wine --version version="9.4.0"; sudo wget "https://dl.winehq.org/wine/wine-mono/$version/wine-mono-$version-x86.msi" -O /tmp/wine-mono.msi wine msiexec /i /tmp/wine-mono.msi - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 submodules: recursive - name: Java ${{ matrix.Java }} (${{ matrix.os }}) - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: java-version: ${{ matrix.java }} distribution: 'zulu' - name: Cache Maven packages - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }} @@ -256,14 +255,14 @@ jobs: - name: Upload Windows exe artifacts if: runner.os == 'Windows' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: windows-exe-${{ matrix.java }} retention-days: 5 path: opendj-server-legacy/src/build-tools/windows/*.exe - name: Upload artifacts OpenDJ Server - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: ${{ matrix.os }}-${{ matrix.java }} retention-days: 5 @@ -288,7 +287,7 @@ jobs: - 5000:5000 steps: - name: Download artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: ubuntu-latest-11 - name: Get latest release version @@ -298,16 +297,16 @@ jobs: echo "release_version=$git_version_last" >> $GITHUB_ENV - name: Docker meta id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v6 with: images: | localhost:5000/${{ github.repository }} tags: | type=raw,value=${{ env.release_version }} - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 with: driver-opts: network=host - name: Prepare Dockerfile @@ -317,7 +316,7 @@ jobs: cp ./opendj-server-legacy/target/package/opendj-*.zip ./opendj-packages/opendj-docker sed -i -E '/^#COPY opendj/s/^#//' ./opendj-packages/opendj-docker/Dockerfile - name: Build image (default) - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v7 with: context: ./opendj-packages/opendj-docker file: ./opendj-packages/opendj-docker/Dockerfile @@ -352,7 +351,7 @@ jobs: - 5000:5000 steps: - name: Download artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: ubuntu-latest-11 - name: Get latest release version @@ -362,7 +361,7 @@ jobs: echo "release_version=$git_version_last" >> $GITHUB_ENV - name: Docker meta id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v6 with: images: | localhost:5000/${{ github.repository }} @@ -370,9 +369,9 @@ jobs: type=raw,value=alpine type=raw,value=${{ env.release_version }}-alpine - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 with: driver-opts: network=host - name: Prepare Dockerfile @@ -382,7 +381,7 @@ jobs: cp ./opendj-server-legacy/target/package/opendj-*.zip ./opendj-packages/opendj-docker sed -i -E '/^#COPY opendj/s/^#//' ./opendj-packages/opendj-docker/Dockerfile-alpine - name: Build image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v7 with: context: ./opendj-packages/opendj-docker file: ./opendj-packages/opendj-docker/Dockerfile-alpine diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c6e0b5184b..8b56d45faa 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -27,13 +27,13 @@ jobs: wine --version version="9.4.0"; sudo wget "https://dl.winehq.org/wine/wine-mono/$version/wine-mono-$version-x86.msi" -O /tmp/wine-mono.msi wine msiexec /i /tmp/wine-mono.msi - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 submodules: recursive ref: ${{ github.event.workflow_run.head_branch }} - name: Set up Java for publishing to Maven Central Repository OSS - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: java-version: ${{ github.event.workflow_run.head_branch == 'sustaining/4.10.x' && '8' || '11'}} distribution: 'temurin' @@ -41,7 +41,7 @@ jobs: server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD - name: Cache Maven packages - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }} @@ -71,52 +71,52 @@ jobs: continue-on-error: true run: mvn javadoc:aggregate - name: Upload artifacts OpenDJ Server - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: OpenDJ Server path: opendj-server-legacy/target/package/*.zip - name: Upload artifacts OpenDJ SDK Toolkit - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: OpenDJ SDK Toolkit path: opendj-ldap-toolkit/target/*.zip - name: Upload artifacts OpenDJ Debian Package - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: OpenDJ Debian Package path: opendj-packages/opendj-deb/opendj-deb-standard/target/*.deb - name: Upload artifacts OpenDJ RPM Package - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: OpenDJ RPM Package path: opendj-packages/opendj-rpm/opendj-rpm-standard/target/rpm/opendj/RPMS/noarch/*.rpm - name: Upload artifacts OpenDJ MSI Package - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: OpenDJ MSI Package path: opendj-packages/opendj-msi/opendj-msi-standard/target/*.msi - name: Upload artifacts OpenDJ Docker Packages - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: OpenDJ Docker Packages path: opendj-packages/opendj-docker/target/Dockerfile.zip - name: Upload artifacts OpenDJ Openshift template - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: OpenDJ Openshift template path: opendj-packages/opendj-openshift-template/*.yaml - name: Upload artifacts OpenDJ Doc Generated Reference - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: OpenDJ Doc Generated References path: opendj-doc-generated-ref/target/*.zip - name: Upload artifacts OpenDJ DSML Gateway - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: OpenDJ DSML Gateway path: opendj-dsml-servlet/target/*.war - name: Upload artifacts OpenDJ Commons REST LDAP Gateway - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: OpenDJ Commons REST LDAP Gateway path: opendj-rest2ldap-servlet/target/*.war @@ -125,7 +125,7 @@ jobs: git config --global user.name "Open Identity Platform Community" git config --global user.email "open-identity-platform-opendj@googlegroups.com" cd .. - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 continue-on-error: true with: repository: ${{ github.repository }}.wiki @@ -145,7 +145,7 @@ jobs: git commit -a -m "upload docs after deploy ${{ github.sha }}" git push --quiet --force - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 continue-on-error: true with: repository: OpenIdentityPlatform/doc.openidentityplatform.org diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9b982ac93b..41bb3bc8b0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,12 +31,12 @@ jobs: wine --version version="9.4.0"; sudo wget "https://dl.winehq.org/wine/wine-mono/$version/wine-mono-$version-x86.msi" -O /tmp/wine-mono.msi wine msiexec /i /tmp/wine-mono.msi - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 submodules: recursive - name: Set up Java for publishing to Maven Central Repository OSS - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: java-version: ${{ github.event.workflow_run.head_branch == 'sustaining/4.10.x' && '8' || '11'}} distribution: 'temurin' @@ -44,7 +44,7 @@ jobs: server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD - name: Cache Maven packages - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }} @@ -90,7 +90,7 @@ jobs: target/checkout/opendj-doc-generated-ref/target/*.zip target/checkout/opendj-dsml-servlet/target/*.war target/checkout/opendj-rest2ldap-servlet/target/*.war - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 continue-on-error: true with: repository: ${{ github.repository }}.wiki @@ -113,7 +113,7 @@ jobs: git push --quiet --force git push --quiet --force origin ${{ github.event.inputs.releaseVersion }} - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 continue-on-error: true with: repository: OpenIdentityPlatform/doc.openidentityplatform.org @@ -136,14 +136,14 @@ jobs: needs: - release-maven steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: ref: ${{ github.event.inputs.releaseVersion }} fetch-depth: 1 submodules: recursive - name: Docker meta id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v6 with: images: | ${{ github.repository }} @@ -152,22 +152,22 @@ jobs: type=raw,value=latest type=raw,value=${{ github.event.inputs.releaseVersion }} - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Login to DockerHub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to GHCR - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v7 continue-on-error: true with: context: ./opendj-packages/opendj-docker @@ -184,14 +184,14 @@ jobs: needs: - release-maven steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: ref: ${{ github.event.inputs.releaseVersion }} fetch-depth: 1 submodules: recursive - name: Docker meta id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v6 with: images: | ${{ github.repository }} @@ -200,23 +200,23 @@ jobs: type=raw,value=alpine type=raw,value=${{ github.event.inputs.releaseVersion }}-alpine - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Login to DockerHub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to GHCR - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push image continue-on-error: true - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v7 with: context: ./opendj-packages/opendj-docker file: ./opendj-packages/opendj-docker/Dockerfile-alpine diff --git a/opendj-server-legacy/src/build-tools/windows/service.c b/opendj-server-legacy/src/build-tools/windows/service.c index d14eaa4d7e..1fd7e373d0 100644 --- a/opendj-server-legacy/src/build-tools/windows/service.c +++ b/opendj-server-legacy/src/build-tools/windows/service.c @@ -715,7 +715,7 @@ ServiceReturnCode doStopApplication() if (spawn(command, FALSE) != -1) { // Try to see if server is really stopped - int nTries = 10; + int nTries = 30; BOOL running = TRUE; debug("doStopApplication: the spawn of the process worked."); @@ -1241,31 +1241,53 @@ void serviceMain(int argc, char* argv[]) } else { - // Check current Status - DWORD state; - BOOL success = getServiceStatus(serviceName, &state); - if (!(success && - ((state == SERVICE_STOPPED) || - (state == SERVICE_STOP_PENDING)))) + // Server appears not running - retry a few times before concluding + // it has actually stopped (the lock file check can be transient, + // e.g. during JVM GC pressure or heavy I/O after a large ldapsearch). + // 3 retries × 2 seconds gives up to 6 extra seconds of tolerance. + int retryCount = 3; + BOOL confirmedStopped = TRUE; + while (retryCount > 0) { - WORD argCount = 1; - const char *argc[] = {_instanceDir}; - _serviceCurStatus = SERVICE_STOPPED; - debug("checking in serviceMain serviceHandler: service stopped with error."); + retryCount--; + Sleep(2000); // wait 2 seconds between retries before re-checking + code = isServerRunning(&running, TRUE); + if (code == SERVICE_RETURN_OK && running) + { + confirmedStopped = FALSE; + break; + } + } - updateServiceStatus ( - _serviceCurStatus, - ERROR_SERVICE_SPECIFIC_ERROR, - -1, - CHECKPOINT_NO_ONGOING_OPERATION, - TIMEOUT_NONE, - _serviceStatusHandle); - reportLogEvent( - EVENTLOG_ERROR_TYPE, - WIN_EVENT_ID_SERVER_STOPPED_OUTSIDE_SCM, - argCount, argc); - } - break; + if (confirmedStopped) + { + // Check current Status + DWORD state; + BOOL success = getServiceStatus(serviceName, &state); + if (!(success && + ((state == SERVICE_STOPPED) || + (state == SERVICE_STOP_PENDING)))) + { + WORD argCount = 1; + const char *argc[] = {_instanceDir}; + _serviceCurStatus = SERVICE_STOPPED; + debug("checking in serviceMain serviceHandler: service stopped with error."); + + updateServiceStatus ( + _serviceCurStatus, + ERROR_SERVICE_SPECIFIC_ERROR, + -1, + CHECKPOINT_NO_ONGOING_OPERATION, + TIMEOUT_NONE, + _serviceStatusHandle); + reportLogEvent( + EVENTLOG_ERROR_TYPE, + WIN_EVENT_ID_SERVER_STOPPED_OUTSIDE_SCM, + argCount, argc); + } + break; + } + // else: server is actually still running, continue monitoring } } } From a834d660f0abb31fd2bf5cba5355787fbb50986d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 3 Apr 2026 06:46:15 +0000 Subject: [PATCH 16/16] Update Windows executables from CI artifact (run 23918835259, Java 26) Agent-Logs-Url: https://github.com/OpenIdentityPlatform/OpenDJ/sessions/c82d83b5-1b35-455b-bf77-a2cacfb8acbd Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com> --- .../lib/launcher_administrator.exe | Bin 159232 -> 159232 bytes opendj-server-legacy/lib/opendj_service.exe | Bin 169984 -> 169984 bytes opendj-server-legacy/lib/winlauncher.exe | Bin 158208 -> 158208 bytes 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 opendj-server-legacy/lib/winlauncher.exe diff --git a/opendj-server-legacy/lib/launcher_administrator.exe b/opendj-server-legacy/lib/launcher_administrator.exe index c375becc15421fafc29932157b3f437eab32cbeb..50b885811d2d0f841b4af5d8500c3298e195084b 100644 GIT binary patch delta 41 wcmZp;!`X0$a{(ih*UiaHjDE~BYM7dX8QX&y8Mg;BGG*!m#kcP>U~;kr03^x{F#rGn delta 41 vcmZp;!`X0$a{(ihw9#ZHMn7f?J?7?M#`a)F#_hq3Oqu#X@$LHzn4D|@^Z*Lj diff --git a/opendj-server-legacy/lib/opendj_service.exe b/opendj-server-legacy/lib/opendj_service.exe index e91f10365126bd0132d27afb5ca5ded9fee295a3..0b458d8f72c8796c7336720edb0adc56d21533c8 100644 GIT binary patch delta 13772 zcmaL834Baf`#65jO(KJABw>)qVnRxAx0$)KPa+{yn20125?b3xwW1P4F(HB&DSGI< zEvo3E)rC∓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 diff --git a/opendj-server-legacy/lib/winlauncher.exe b/opendj-server-legacy/lib/winlauncher.exe old mode 100755 new mode 100644 index 8b4b57fadd766321c980841b2ebe05fcfe2b41d9..04f210cb64acb3c794dab74c8ab2882c0a34451b GIT binary patch delta 33 ncmZp;!r5?za{(ih*Ue@o#&#w~#_dduOuO`f{O$V;n4ByDygv$l delta 33 ncmZp;!r5?za{(ihv{5q?V>=Tg<8~%Srd|3#{`P$aOiq>nqRj}>