From e90b2a15ec4a0110bb6df1f5d96afa19be9d6360 Mon Sep 17 00:00:00 2001 From: Davide Frison Date: Tue, 21 Jul 2026 09:57:17 +0200 Subject: [PATCH 01/10] test: do not create 100 database on hsqldb startup - no need, database are created on demand by mailbox when you create an account --- .../java/org/openzal/zal/db/HSQLZimbraDatabase.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/test/java/org/openzal/zal/db/HSQLZimbraDatabase.java b/src/test/java/org/openzal/zal/db/HSQLZimbraDatabase.java index 8f0a33c..507bcb8 100644 --- a/src/test/java/org/openzal/zal/db/HSQLZimbraDatabase.java +++ b/src/test/java/org/openzal/zal/db/HSQLZimbraDatabase.java @@ -48,7 +48,8 @@ public static void createDatabase(String basePath) throws Exception { return; // already exists } executeFromClasspath(conn, basePath + "/db.sql"); - executeForAllGroups(conn, basePath + "/create_database.sql"); + // group 1 only; other groups are created on demand by DbMailbox.createMailbox, as the store's own HSQLDB does + executeFromClasspath(conn, basePath + "/create_database.sql"); } finally { DbPool.closeResults(rs); DbPool.quietCloseStatement(stmt); @@ -79,20 +80,12 @@ private static void clearDatabase(String clearSqlScript) throws Exception { com.zimbra.cs.db.DbPool.DbConnection conn = DbPool.getConnection(); try { - executeForAllGroups( - conn, - clearSqlScript - ); + executeFromClasspath(conn, clearSqlScript); } finally { DbPool.quietClose(conn); } } - private static void executeForAllGroups(com.zimbra.cs.db.DbPool.DbConnection conn, String classpathFile) throws Exception - { - for( int i=1; i <= 100; ++i ) executeFromClasspath(conn, classpathFile, i); - } - interface TempFileRunner { void run(File file) throws Exception; } From c36304068570e9a682428b0bce638144adac3d4e Mon Sep 17 00:00:00 2001 From: Davide Frison Date: Tue, 21 Jul 2026 11:21:03 +0200 Subject: [PATCH 02/10] test: create db groups based on local settings - caller can decide how many. follow production settings --- .../org/openzal/zal/db/HSQLZimbraDatabase.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/test/java/org/openzal/zal/db/HSQLZimbraDatabase.java b/src/test/java/org/openzal/zal/db/HSQLZimbraDatabase.java index 507bcb8..4c6dde5 100644 --- a/src/test/java/org/openzal/zal/db/HSQLZimbraDatabase.java +++ b/src/test/java/org/openzal/zal/db/HSQLZimbraDatabase.java @@ -4,6 +4,7 @@ * Zimbra Collaboration Suite Server */ +import com.zimbra.common.localconfig.LC; import com.zimbra.common.service.ServiceException; import com.zimbra.cs.db.DbMailbox; import com.zimbra.cs.db.DbPool; @@ -48,8 +49,7 @@ public static void createDatabase(String basePath) throws Exception { return; // already exists } executeFromClasspath(conn, basePath + "/db.sql"); - // group 1 only; other groups are created on demand by DbMailbox.createMailbox, as the store's own HSQLDB does - executeFromClasspath(conn, basePath + "/create_database.sql"); + executeForAllGroups(conn, basePath + "/create_database.sql"); } finally { DbPool.closeResults(rs); DbPool.quietCloseStatement(stmt); @@ -80,12 +80,20 @@ private static void clearDatabase(String clearSqlScript) throws Exception { com.zimbra.cs.db.DbPool.DbConnection conn = DbPool.getConnection(); try { - executeFromClasspath(conn, clearSqlScript); + executeForAllGroups( + conn, + clearSqlScript + ); } finally { DbPool.quietClose(conn); } } + private static void executeForAllGroups(com.zimbra.cs.db.DbPool.DbConnection conn, String classpathFile) throws Exception + { + for( int i=1; i <= LC.zimbra_mailbox_groups.intValue(); ++i ) executeFromClasspath(conn, classpathFile, i); + } + interface TempFileRunner { void run(File file) throws Exception; } From 0cc8d42026323d777a386d221eebd65b724d106a Mon Sep 17 00:00:00 2001 From: Davide Frison Date: Tue, 21 Jul 2026 12:46:39 +0200 Subject: [PATCH 03/10] fix: use mailbox_groups --- src/main/java/org/openzal/zal/MailboxManagerImp.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/openzal/zal/MailboxManagerImp.java b/src/main/java/org/openzal/zal/MailboxManagerImp.java index dc94cce..9d97329 100644 --- a/src/main/java/org/openzal/zal/MailboxManagerImp.java +++ b/src/main/java/org/openzal/zal/MailboxManagerImp.java @@ -21,6 +21,7 @@ package org.openzal.zal; +import com.zimbra.common.localconfig.LC; import com.zimbra.common.service.ServiceException; import com.zimbra.cs.db.DbMailbox; import com.zimbra.cs.db.DbPool; @@ -149,7 +150,7 @@ public Set getMailboxGroupSet() for( int n=0; n < ids.length; ++n ) { - set.add( (ids[n]-1) % 100 + 1 ); + set.add( (ids[n]-1) % LC.zimbra_mailbox_groups.intValue() + 1 ); } return set; From e926c75ba2f89ad558fd54738e9314f52f3bc1ab Mon Sep 17 00:00:00 2001 From: Davide Frison Date: Tue, 21 Jul 2026 12:46:55 +0200 Subject: [PATCH 04/10] ci: deploy snapshot temporarily --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b0922ce..4f2ec13 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -43,8 +43,8 @@ pipeline { script { mavenStage( profile: '', - deployArtifacts: env.TAG_NAME ? true : false, - extraDeployArgs: '-Dchangelist=' + deployArtifacts: true, + extraDeployArgs: '-Dchangelist=-SNAPSHOT' ) } } From 363613f4f2a4e01ec1cbc11b4dc8ec6e045aa1a6 Mon Sep 17 00:00:00 2001 From: Davide Frison Date: Tue, 21 Jul 2026 13:06:20 +0200 Subject: [PATCH 05/10] ci: use ci fix branch --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 4f2ec13..7eb3fa1 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,5 @@ library( - identifier: 'jenkins-lib-common@v2.8.8', + identifier: 'jenkins-lib-common@fix/maven-deploy', retriever: modernSCM([ $class: 'GitSCMSource', credentialsId: 'jenkins-integration-with-github-account', @@ -44,7 +44,7 @@ pipeline { mavenStage( profile: '', deployArtifacts: true, - extraDeployArgs: '-Dchangelist=-SNAPSHOT' + extraDeployArgs: '-Dchangelist=SNAPSHOT' ) } } From 6f0e7d0971f7f8cce6a120d019b5ddfc96f0ea2a Mon Sep 17 00:00:00 2001 From: Davide Frison Date: Tue, 21 Jul 2026 13:13:30 +0200 Subject: [PATCH 06/10] ci: -SNAPSHOT changelist --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 7eb3fa1..31d572d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -44,7 +44,7 @@ pipeline { mavenStage( profile: '', deployArtifacts: true, - extraDeployArgs: '-Dchangelist=SNAPSHOT' + extraDeployArgs: '-Dchangelist=-SNAPSHOT' ) } } From 769e56f6a2012beb4bd61b6e9c82d83f86f473bd Mon Sep 17 00:00:00 2001 From: Davide Frison Date: Tue, 21 Jul 2026 15:58:57 +0200 Subject: [PATCH 07/10] ci: revert library usage --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 31d572d..4f2ec13 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,5 @@ library( - identifier: 'jenkins-lib-common@fix/maven-deploy', + identifier: 'jenkins-lib-common@v2.8.8', retriever: modernSCM([ $class: 'GitSCMSource', credentialsId: 'jenkins-integration-with-github-account', From 4afcb52cd3a6cb9cfb2875a45a6c148ce1ee9a10 Mon Sep 17 00:00:00 2001 From: Davide Frison Date: Tue, 21 Jul 2026 18:06:20 +0200 Subject: [PATCH 08/10] ci: use new maven stage --- Jenkinsfile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 4f2ec13..4ac767b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,5 @@ library( - identifier: 'jenkins-lib-common@v2.8.8', + identifier: 'jenkins-lib-common@breaking-change/maven-stage', retriever: modernSCM([ $class: 'GitSCMSource', credentialsId: 'jenkins-integration-with-github-account', @@ -42,9 +42,7 @@ pipeline { steps { script { mavenStage( - profile: '', - deployArtifacts: true, - extraDeployArgs: '-Dchangelist=-SNAPSHOT' + mvnOpts: '-Dchangelist=' ) } } From f3e2fa1a9a6a56339d2b647d1fddd0843fcec9dc Mon Sep 17 00:00:00 2001 From: Davide Frison Date: Wed, 22 Jul 2026 09:04:02 +0200 Subject: [PATCH 09/10] ci: set version based on env + maven profiles --- Jenkinsfile | 4 +--- pom.xml | 28 +++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 4ac767b..2edce06 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -41,9 +41,7 @@ pipeline { stage('Maven') { steps { script { - mavenStage( - mvnOpts: '-Dchangelist=' - ) + mavenStage() } } } diff --git a/pom.xml b/pom.xml index fadeb5e..b7ffe29 100644 --- a/pom.xml +++ b/pom.xml @@ -6,11 +6,12 @@ org.openzal zal - ${revision}${changelist} + ${revision}${sha1}${changelist} jar 4.32.1 + -SNAPSHOT 4.28.0 UTF-8 @@ -814,4 +815,29 @@ + + + release + + + env.TAG_NAME + + + + + + + + snapshot + + + !env.TAG_NAME + + + + .${env.GIT_COMMIT} + + + + From bd0049bab73b45e373a5aad45abf0ec5edc97aa9 Mon Sep 17 00:00:00 2001 From: Davide Frison Date: Wed, 22 Jul 2026 09:07:06 +0200 Subject: [PATCH 10/10] ci: set version based on env + maven profiles - pt.2 --- pom.xml | 49 +------------------------------------------------ 1 file changed, 1 insertion(+), 48 deletions(-) diff --git a/pom.xml b/pom.xml index 146830f..f2331ad 100644 --- a/pom.xml +++ b/pom.xml @@ -11,55 +11,8 @@ 4.33.0 + -SNAPSHOT - Also: hudson.remoting.ProxyException: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: 905c18f7-800d-478b-8e42-c9ddf08ca1ae - hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: java.lang.String.remove() is applicable for argument types: (null, null) values: [null, null] - Possible solutions: reverse() - at PluginClassLoader for script-security//org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:159) - at PluginClassLoader for script-security//org.kohsuke.groovy.sandbox.impl.Checker$15.call(Checker.java:868) - at PluginClassLoader for script-security//org.kohsuke.groovy.sandbox.impl.Checker.preCheckedCast(Checker.java:874) - at PluginClassLoader for script-security//org.kohsuke.groovy.sandbox.impl.Checker.checkedCast(Checker.java:838) - at PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.sandbox.SandboxInvoker.cast(SandboxInvoker.java:59) - at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.LoggingInvoker.cast(LoggingInvoker.java:267) - at mavenStage.call(mavenStage.groovy:50) - at WorkflowScript.run(WorkflowScript:44) - at ___cps.transform___(Native Method) - at PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.CastBlock$ContinuationImpl.cast(CastBlock.java:56) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) - at java.base/java.lang.reflect.Method.invoke(Unknown Source) - at PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:71) - at PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:110) - at PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:118) - at PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:87) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) - at java.base/java.lang.reflect.Method.invoke(Unknown Source) - at PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:71) - at PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.CollectionLiteralBlock$ContinuationImpl.dispatch(CollectionLiteralBlock.java:54) - at PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.CollectionLiteralBlock.eval(CollectionLiteralBlock.java:26) - at PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.Next.step(Next.java:84) - at PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:142) - at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:17) - at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:48) - at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:188) - at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:464) - at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:372) - at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:302) - at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService.lambda$wrap$4(CpsVmExecutorService.java:143) - at java.base/java.util.concurrent.FutureTask.run(Unknown Source) - at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:139) - at jenkins.util.ContextResettingExecutorService.lambda$wrap$0(ContextResettingExecutorService.java:26) - at jenkins.security.ImpersonatingExecutorService.lambda$wrap$0(ImpersonatingExecutorService.java:66) - at jenkins.util.ErrorLoggingExecutorService.lambda$wrap$0(ErrorLoggingExecutorService.java:51) - at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) - at java.base/java.util.concurrent.FutureTask.run(Unknown Source) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) - at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$1.call(CpsVmExecutorService.java:53) - at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$1.call(CpsVmExecutorService.java:50) - at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:136) - at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:275) - at PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService.lambda$categoryThreadFactory$0(CpsVmExecutorService.java:50) - at java.base/java.lang.Thread.run(Unknown Source) 4.29.0 UTF-8 2.15.4