Build failed in Jenkins: java-idp-plugin-webauthn-v1-multi-java17 » OpenJDK-24,Rocky9 #115

Shibboleth Jenkins noreply at shibboleth.net
Tue Jul 22 02:12:18 UTC 2025


See <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/115/display/redirect?page=changes>

Changes:

[Phil Smart] JWEBAUTHN-56 - Improve performance of credential lookup by userHandle

[Phil Smart] Update version to 1.3.0-SNAPSHOT

[Phil Smart] Add since tags, improve Javadoc

[Phil Smart] GEN-356-Plugin jar manifest errors

[Phil Smart] Add more tests, minor code improvements


------------------------------------------
[...truncated 8.56 KiB...]
Running as SYSTEM
[EnvInject] - Loading node environment variables.
Building remotely on EC2 (ec2-I2) - Rocky9 (i-0ddea1034a9abb751) (Rocky9) in workspace <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/>
Selected Git installation does not exist. Using Default
The recommended git tool is: NONE
No credentials specified
Cloning the remote Git repository
Cloning repository https://git.shibboleth.net/git/java-idp-plugin-webauthn
 > git init <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/> # timeout=10
Fetching upstream changes from https://git.shibboleth.net/git/java-idp-plugin-webauthn
 > git --version # timeout=10
 > git --version # 'git version 2.47.1'
 > git fetch --tags --force --progress -- https://git.shibboleth.net/git/java-idp-plugin-webauthn +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git config remote.origin.url https://git.shibboleth.net/git/java-idp-plugin-webauthn # timeout=10
 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
Avoid second fetch
Checking out Revision 08f44a1a9df3135fb9ddabd62af9913615ce2d83 (refs/remotes/origin/main)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 08f44a1a9df3135fb9ddabd62af9913615ce2d83 # timeout=10
Commit message: "Add more tests, minor code improvements"
 > git rev-list --no-walk 10af81d4d0af0b4dc6d7b8bd381fd4434c612e4a # timeout=10
[Rocky9] $ /opt/maven_home/bin/mvn -Djdk=OpenJDK-24 -Dmatrix-combinations= -Dlabel=Rocky9 -Dno-check-m2= -V -B clean test --update-snapshots --fail-at-end
WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::load has been called by org.fusesource.jansi.internal.JansiLoader in an unnamed module (file:/opt/maven_home/lib/jansi-2.4.0.jar)
WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled

Apache Maven 3.9.5 (57804ffe001d7215b5e7bcb531cf83df38f93546)
Maven home: /opt/maven_home
Java version: 24.0.2, vendor: Oracle Corporation, runtime: /efs/optjava/jdk/oracle/openjdk-24.0.2
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.14.0-570.25.1.el9_6.x86_64", arch: "amd64", family: "unix"
WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::objectFieldOffset has been called by com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper (file:/opt/maven_home/lib/guava-32.0.1-jre.jar)
WARNING: Please consider reporting this to the maintainers of class com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper
WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for net.shibboleth.idp.plugin.authn:idp-plugin-webauthn-impl:jar:1.3.0-SNAPSHOT
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: com.google.guava:guava:jar -> duplicate declaration of version (?) @ line 240, column 21
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] Shibboleth IdP :: Plugins :: WebAuthn Login Flow                   [pom]
[INFO] Shibboleth IdP :: Plugins :: WebAuthn Login Flow API               [jar]
[INFO] Shibboleth IdP :: Plugins :: WebAuthn Login Flow Impl              [jar]
[INFO] Shibboleth IdP :: Plugins :: WebAuthn Login Flow Distribution      [pom]
[INFO] 
[INFO] -----< net.shibboleth.idp.plugin.authn:idp-plugin-webauthn-parent >-----
[INFO] Building Shibboleth IdP :: Plugins :: WebAuthn Login Flow 1.3.0-SNAPSHOT [1/4]
[INFO]   from pom.xml
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- clean:3.1.0:clean (default-clean) @ idp-plugin-webauthn-parent ---
[INFO] 
[INFO] --- enforcer:3.0.0-M3:enforce (maven-version) @ idp-plugin-webauthn-parent ---
[INFO] 
[INFO] ------< net.shibboleth.idp.plugin.authn:idp-plugin-webauthn-api >-------
[INFO] Building Shibboleth IdP :: Plugins :: WebAuthn Login Flow API 1.3.0-SNAPSHOT [2/4]
[INFO]   from webauthn-api/pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- clean:3.1.0:clean (default-clean) @ idp-plugin-webauthn-api ---
[INFO] 
[INFO] --- enforcer:3.0.0-M3:enforce (maven-version) @ idp-plugin-webauthn-api ---
[INFO] 
[INFO] --- resources:3.2.0:resources (default-resources) @ idp-plugin-webauthn-api ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] skip non existing resourceDirectory <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-api/src/main/resources>
[INFO] 
[INFO] --- compiler:3.10.1:compile (default-compile) @ idp-plugin-webauthn-api ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 63 source files to <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-api/target/classes>
[INFO] 
[INFO] --- resources:3.2.0:testResources (default-testResources) @ idp-plugin-webauthn-api ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] skip non existing resourceDirectory <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-api/src/test/resources>
[INFO] 
[INFO] --- compiler:3.10.1:testCompile (default-testCompile) @ idp-plugin-webauthn-api ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 5 source files to <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-api/target/test-classes>
[INFO] 
[INFO] --- surefire:3.1.2:test (default-test) @ idp-plugin-webauthn-api ---
[INFO] Using configured provider org.apache.maven.surefire.testng.TestNGProvider
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running TestSuite
[INFO] Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.041 s -- in TestSuite
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 13, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] ------< net.shibboleth.idp.plugin.authn:idp-plugin-webauthn-impl >------
[INFO] Building Shibboleth IdP :: Plugins :: WebAuthn Login Flow Impl 1.3.0-SNAPSHOT [3/4]
[INFO]   from webauthn-impl/pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] Downloading from shib-thirdparty-snapshot: https://build.shibboleth.net/maven/thirdparty-snapshots/net/shibboleth/plugin/storage/jdbc/jdbc-storage-impl/2.1.1-SNAPSHOT/maven-metadata.xml
[INFO] Downloading from shib-snapshot: https://build.shibboleth.net/maven/snapshots/net/shibboleth/plugin/storage/jdbc/jdbc-storage-impl/2.1.1-SNAPSHOT/maven-metadata.xml
[INFO] Downloaded from shib-snapshot: https://build.shibboleth.net/maven/snapshots/net/shibboleth/plugin/storage/jdbc/jdbc-storage-impl/2.1.1-SNAPSHOT/maven-metadata.xml (2.0 kB at 3.7 kB/s)
[INFO] Downloading from shib-snapshot: https://build.shibboleth.net/maven/snapshots/net/shibboleth/plugin/storage/jdbc/jdbc-storage-parent/2.1.1-SNAPSHOT/maven-metadata.xml
[INFO] Downloading from shib-thirdparty-snapshot: https://build.shibboleth.net/maven/thirdparty-snapshots/net/shibboleth/plugin/storage/jdbc/jdbc-storage-parent/2.1.1-SNAPSHOT/maven-metadata.xml
[INFO] Downloaded from shib-snapshot: https://build.shibboleth.net/maven/snapshots/net/shibboleth/plugin/storage/jdbc/jdbc-storage-parent/2.1.1-SNAPSHOT/maven-metadata.xml (813 B at 102 kB/s)
[INFO] 
[INFO] --- clean:3.1.0:clean (default-clean) @ idp-plugin-webauthn-impl ---
[INFO] 
[INFO] --- enforcer:3.0.0-M3:enforce (maven-version) @ idp-plugin-webauthn-impl ---
[INFO] 
[INFO] --- resources:3.2.0:resources (default-resources) @ idp-plugin-webauthn-impl ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] Copying 32 resources
[INFO] 
[INFO] --- compiler:3.10.1:compile (default-compile) @ idp-plugin-webauthn-impl ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 117 source files to <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-impl/target/classes>
[INFO] <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-impl/src/main/java/net/shibboleth/idp/plugin/authn/webauthn/admin/impl/RegistrationContextCredentialRemovalConsumer.java>: Some input files use or override a deprecated API that is marked for removal.
[INFO] <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-impl/src/main/java/net/shibboleth/idp/plugin/authn/webauthn/admin/impl/RegistrationContextCredentialRemovalConsumer.java>: Recompile with -Xlint:removal for details.
[INFO] 
[INFO] --- resources:3.2.0:testResources (default-testResources) @ idp-plugin-webauthn-impl ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] Copying 11 resources
[INFO] 
[INFO] --- compiler:3.10.1:testCompile (default-testCompile) @ idp-plugin-webauthn-impl ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 74 source files to <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-impl/target/test-classes>
[INFO] <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-impl/src/test/java/net/shibboleth/idp/plugin/authn/webauthn/admin/impl/AddUserIdTest.java>: Some input files use or override a deprecated API.
[INFO] <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-impl/src/test/java/net/shibboleth/idp/plugin/authn/webauthn/admin/impl/AddUserIdTest.java>: Recompile with -Xlint:deprecation for details.
[INFO] <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-impl/src/test/java/net/shibboleth/idp/plugin/authn/webauthn/admin/impl/DeletePublicKeyCredentialTest.java>: Some input files use or override a deprecated API that is marked for removal.
[INFO] <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-impl/src/test/java/net/shibboleth/idp/plugin/authn/webauthn/admin/impl/DeletePublicKeyCredentialTest.java>: Recompile with -Xlint:removal for details.
[INFO] <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-impl/src/test/java/net/shibboleth/idp/plugin/authn/webauthn/storage/impl/StrategyBasedIdPStorageServiceCredentialRepositoryTest.java>: <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-impl/src/test/java/net/shibboleth/idp/plugin/authn/webauthn/storage/impl/StrategyBasedIdPStorageServiceCredentialRepositoryTest.java> uses unchecked or unsafe operations.
[INFO] <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-impl/src/test/java/net/shibboleth/idp/plugin/authn/webauthn/storage/impl/StrategyBasedIdPStorageServiceCredentialRepositoryTest.java>: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- surefire:3.1.2:test (default-test) @ idp-plugin-webauthn-impl ---
[INFO] Using configured provider org.apache.maven.surefire.testng.TestNGProvider
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running TestSuite
WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::objectFieldOffset has been called by com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper (file:/home/jenkins/.m2/repository/com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar)
WARNING: Please consider reporting this to the maintainers of class com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper
WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release
[ERROR] Tests run: 240, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 35.09 s <<< FAILURE! -- in TestSuite
[ERROR] net.shibboleth.idp.plugin.authn.webauthn.storage.impl.IdPStorageServiceCredentialRespositoryTest.testGetUsernameFromCredentialIdCache_UsernameCredentialIdMappingInvalid -- Time elapsed: 0.017 s <<< FAILURE!
java.lang.AssertionError: expected [jdoe] but found [null]
	at org.testng.Assert.fail(Assert.java:110)
	at org.testng.Assert.failNotEquals(Assert.java:1577)
	at org.testng.Assert.assertEqualsImpl(Assert.java:149)
	at org.testng.Assert.assertEquals(Assert.java:131)
	at org.testng.Assert.assertEquals(Assert.java:655)
	at org.testng.Assert.assertEquals(Assert.java:665)
	at net.shibboleth.idp.plugin.authn.webauthn.storage.impl.IdPStorageServiceCredentialRespositoryTest.testGetUsernameFromCredentialIdCache_UsernameCredentialIdMappingInvalid(IdPStorageServiceCredentialRespositoryTest.java:597)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
	at org.testng.TestRunner.privateRun(TestRunner.java:829)
	at org.testng.TestRunner.run(TestRunner.java:602)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
	at org.testng.SuiteRunner.run(SuiteRunner.java:330)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
	at org.testng.TestNG.runSuites(TestNG.java:1099)
	at org.testng.TestNG.run(TestNG.java:1067)
	at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
	at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)

[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Failures: 
[ERROR]   IdPStorageServiceCredentialRespositoryTest.testGetUsernameFromCredentialIdCache_UsernameCredentialIdMappingInvalid:597 expected [jdoe] but found [null]
[INFO] 
[ERROR] Tests run: 240, Failures: 1, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] ------< net.shibboleth.idp.plugin.authn:idp-plugin-webauthn-dist >------
[INFO] Building Shibboleth IdP :: Plugins :: WebAuthn Login Flow Distribution 1.3.0-SNAPSHOT [4/4]
[INFO]   from webauthn-dist/pom.xml
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- clean:3.1.0:clean (default-clean) @ idp-plugin-webauthn-dist ---
[INFO] 
[INFO] --- enforcer:3.0.0-M3:enforce (maven-version) @ idp-plugin-webauthn-dist ---
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Shibboleth IdP :: Plugins :: WebAuthn Login Flow 1.3.0-SNAPSHOT:
[INFO] 
[INFO] Shibboleth IdP :: Plugins :: WebAuthn Login Flow ... SUCCESS [  0.651 s]
[INFO] Shibboleth IdP :: Plugins :: WebAuthn Login Flow API SUCCESS [  6.235 s]
[INFO] Shibboleth IdP :: Plugins :: WebAuthn Login Flow Impl FAILURE [ 42.265 s]
[INFO] Shibboleth IdP :: Plugins :: WebAuthn Login Flow Distribution SUCCESS [  0.323 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  49.884 s
[INFO] Finished at: 2025-07-22T02:12:18Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.1.2:test (default-test) on project idp-plugin-webauthn-impl: There are test failures.
[ERROR] 
[ERROR] Please refer to <http://127.0.0.1:1583/jenkins/job/java-idp-plugin-webauthn-v1-multi-java17/jdk=OpenJDK-24,label=Rocky9/ws/webauthn-impl/target/surefire-reports> for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :idp-plugin-webauthn-impl
Build step 'Invoke top-level Maven targets' marked build as failure
TestNG Reports Processing: START
Looking for TestNG results report in workspace using pattern: **/target/surefire-reports/testng-results.xml
Saving reports...
Processing '/var/lib/jenkins/jobs/java-idp-plugin-webauthn-v1-multi-java17/configurations/axis-jdk/OpenJDK-24/axis-label/Rocky9/builds/115/testng/testng-results-1.xml'
Processing '/var/lib/jenkins/jobs/java-idp-plugin-webauthn-v1-multi-java17/configurations/axis-jdk/OpenJDK-24/axis-label/Rocky9/builds/115/testng/testng-results.xml'
0.395257% of tests failed, which exceeded threshold of 0%. Marking build as UNSTABLE
TestNG Reports Processing: FINISH


More information about the commits mailing list