diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 00000000000..937f463ce17 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,38 @@ +name: Publish + +on: + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 11 + uses: actions/setup-java@v4 + with: + java-version: '11' + distribution: 'temurin' + cache: maven + cache-dependency-path: 'server/apps/distributed-app/pom.xml' + - uses: docker/setup-qemu-action@v3 + - uses: docker/setup-buildx-action@v3 + - uses: imjasonh/setup-crane@v0.1 + - name: Build + run: | + mvn clean install -DskipTests + - name: Publish to GitHub Container Registry + env: + REGISTRY: ghcr.io/appscode + DOCKER_TOKEN: ${{ secrets.LGTM_GITHUB_TOKEN }} + USERNAME: 1gtm + APPSCODE_ENV: prod + run: | + docker login ghcr.io --username ${USERNAME} --password ${DOCKER_TOKEN} + cd server/apps/distributed-app/ + docker image load -i target/jib-image.tar + docker push ghcr.io/appscode/inbox-server:latest diff --git a/.gitignore b/.gitignore index 39fe4e80756..ccf9a369b55 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,8 @@ dockerfiles/run/**/keystore dockerfiles/run/**/glowroot .m2 test-run.log -build .mvn/.develocity +build +.idea +.mvn/.gradle-enterprise +./cs \ No newline at end of file diff --git a/.mvn/.gradle-enterprise/gradle-enterprise-workspace-id b/.mvn/.gradle-enterprise/gradle-enterprise-workspace-id new file mode 100644 index 00000000000..a3acce8db86 --- /dev/null +++ b/.mvn/.gradle-enterprise/gradle-enterprise-workspace-id @@ -0,0 +1 @@ +b3ujmit4lbgnhnywrot42dhdmi \ No newline at end of file diff --git a/James JMAP APIs.postman_collection13thFeb25.json b/James JMAP APIs.postman_collection13thFeb25.json new file mode 100644 index 00000000000..e10b9ba4dab --- /dev/null +++ b/James JMAP APIs.postman_collection13thFeb25.json @@ -0,0 +1,2200 @@ +{ + "info": { + "_postman_id": "334c89ee-38cc-4bfb-bf78-4fdddee6a595", + "name": "James APIs", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "30479464" + }, + "item": [ + { + "name": "B3", + "item": [ + { + "name": "Get token from b3", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{b3token}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{b3host}}:3003/api/v1/agent/token-test/4cbf392c-6206-4c49-a859-4467ebf02a73/token", + "protocol": "http", + "host": [ + "{{b3host}}" + ], + "port": "3003", + "path": [ + "api", + "v1", + "agent", + "token-test", + "4cbf392c-6206-4c49-a859-4467ebf02a73", + "token" + ] + } + }, + "response": [] + }, + { + "name": "Get identity from b3", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{b3token}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{b3host}}:3003/api/v1/clustersv2/identity/{{clusterID}}", + "protocol": "http", + "host": [ + "{{b3host}}" + ], + "port": "3003", + "path": [ + "api", + "v1", + "clustersv2", + "identity", + "{{clusterID}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "WebAdmin", + "item": [ + { + "name": "Miscellaneous", + "item": [ + { + "name": "Healthcheck", + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [ + { + "key": "Connection", + "value": "close", + "type": "text" + } + ], + "url": { + "raw": "http://{{host}}:{{port}}/healthcheck", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "healthcheck" + ] + } + }, + "response": [] + }, + { + "name": "Send mail over webadmin", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-server-admin-token}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "From: tmpuser3@mydomain\nTo: tmpuser3@mydomain\nMIME-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"XXXXboundary text\"\n\nThis is a multipart message in MIME format.\n\n--XXXXboundary text\nContent-Type: text/plain\n\ngroup works\n\n--XXXXboundary text\nContent-Type: text/plain;\nContent-Disposition: attachment;\n filename=\"test.txt\"\n\nthis is the attachment text\n\n--XXXXboundary text--", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/mail-transfer-service", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "mail-transfer-service" + ] + } + }, + "response": [] + }, + { + "name": "ReIndex all emails", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "messagesPerSecond", + "value": "200", + "type": "text", + "disabled": true + } + ], + "url": { + "raw": "http://{{host}}:{{port}}/mailboxes?task=reIndex&messagesPerSecond=200", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "mailboxes" + ], + "query": [ + { + "key": "task", + "value": "reIndex" + }, + { + "key": "messagesPerSecond", + "value": "200" + }, + { + "key": "mode", + "value": "rebuildAll", + "disabled": true + } + ] + } + }, + "response": [] + }, + { + "name": "Recomputing Global JMAP fast message view projection", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "I-KNOW-WHAT-I-M-DOING", + "value": "ALL-SERVICES-ARE-OFFLINE", + "type": "text", + "disabled": true + } + ], + "url": { + "raw": "http://{{host}}:{{port}}/mailboxes?task=recomputeFastViewProjectionItems", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "mailboxes" + ], + "query": [ + { + "key": "task", + "value": "recomputeFastViewProjectionItems" + } + ] + } + }, + "response": [] + }, + { + "name": "Get task webadmin", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/tasks/ca4e4ca3-221e-499a-b44a-7eef0c831b61", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "tasks", + "ca4e4ca3-221e-499a-b44a-7eef0c831b61" + ] + } + }, + "response": [] + }, + { + "name": "Download (easier with curl) testuser", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "username", + "value": "testuser.org@mydomain", + "type": "string" + }, + { + "key": "password", + "value": "password", + "type": "string" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "url": { + "raw": "http://{{host}}/download/{{accountId}}/b50c5eb0-8f4b-11ee-849d-9fa9bb19403d_4?type=text%2Fplain&name=toUpload2.txt", + "protocol": "http", + "host": [ + "{{host}}" + ], + "path": [ + "download", + "{{accountId}}", + "b50c5eb0-8f4b-11ee-849d-9fa9bb19403d_4" + ], + "query": [ + { + "key": "type", + "value": "text%2Fplain" + }, + { + "key": "name", + "value": "toUpload2.txt" + } + ] + } + }, + "response": [] + }, + { + "name": "Download (easier with curl) sami", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0dXNlci5vcmdAbXlkb21haW4iLCJpYXQiOjE2MTYyMzkwMjIsImV4cCI6MTk0NjIzOTAyMn0.SO2fTuxB6qQNZqkhwWAndyqXDpyZMrHZFNdgG5ka7j8dW0G9JqU-rx04wqL-R2T51QCVYnlLBM62AVEltK-85ck10nFHEEFwQSD85v5PpI_qzeTz4NRFDxek-5N2gYdK0XQ6NzMvlSwxyUM2TkNZCupIto9H3MDeuDSs0p6Xmwk3iaGKJcIorIUbImf8xzwfB39ytpOw1j6ggAGjczZH8Ykz2PnHQQX2TU8R_dGbn6euYOqnTiZDWggfbxaS1joJ3PatN0Q-jxfuQGwTdZWeSN-Ocvr55MitQvMKJQaoRMVAOFCPXuhCkMq1szKRaBbhnL1nFjmHBpMJC5VpSeDgKOa-govmuTrnRMDV15n5KeeSWEeE2Km9ibOqzZktlR5EU-lU16h-a0u5ydPfax4HcUnNnVcKFqjSGyMFyBQOOxQWKrSJdHNaA7ZP07QQjwdSRQFbJHsUBdH22oBfTnT891yMmWW1iFLHZuV2sMivUGnH-EBO29HHVzAXUlOzErqDaVnovMvdPN6_Vi80LpdSWikYbe2zXUV4csBAc6bC1NweP9omNidBk9Vgo-3q2mHw-H6mfFnTONUipbtbV8ifI2MKQ-ZS0ciNomOcNgyYu5mc-ebDFpZU9xx-_nakCOscUm0tHN224MxKNIx-9E7XrS0PlSOauNYqi4AVKP9svW0", + "type": "string" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "url": { + "raw": "http://{{host}}/download/{{accountId}}/uploads-4c2ef740-b115-11ee-8311-9b9e3b5ba63c?type%3Dimage%2Fpng%26name%3Dcat.png", + "protocol": "http", + "host": [ + "{{host}}" + ], + "path": [ + "download", + "{{accountId}}", + "uploads-4c2ef740-b115-11ee-8311-9b9e3b5ba63c" + ], + "query": [ + { + "key": "type%3Dimage%2Fpng%26name%3Dcat.png", + "value": null + } + ] + } + }, + "response": [] + }, + { + "name": "upload test 2", + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + }, + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "text/plain; charset=utf-8" + }, + { + "key": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0dXNlci5vcmdAbXlkb21haW4iLCJpYXQiOjE2MTYyMzkwMjIsImV4cCI6MTk0NjIzOTAyMn0.SO2fTuxB6qQNZqkhwWAndyqXDpyZMrHZFNdgG5ka7j8dW0G9JqU-rx04wqL-R2T51QCVYnlLBM62AVEltK-85ck10nFHEEFwQSD85v5PpI_qzeTz4NRFDxek-5N2gYdK0XQ6NzMvlSwxyUM2TkNZCupIto9H3MDeuDSs0p6Xmwk3iaGKJcIorIUbImf8xzwfB39ytpOw1j6ggAGjczZH8Ykz2PnHQQX2TU8R_dGbn6euYOqnTiZDWggfbxaS1joJ3PatN0Q-jxfuQGwTdZWeSN-Ocvr55MitQvMKJQaoRMVAOFCPXuhCkMq1szKRaBbhnL1nFjmHBpMJC5VpSeDgKOa-govmuTrnRMDV15n5KeeSWEeE2Km9ibOqzZktlR5EU-lU16h-a0u5ydPfax4HcUnNnVcKFqjSGyMFyBQOOxQWKrSJdHNaA7ZP07QQjwdSRQFbJHsUBdH22oBfTnT891yMmWW1iFLHZuV2sMivUGnH-EBO29HHVzAXUlOzErqDaVnovMvdPN6_Vi80LpdSWikYbe2zXUV4csBAc6bC1NweP9omNidBk9Vgo-3q2mHw-H6mfFnTONUipbtbV8ifI2MKQ-ZS0ciNomOcNgyYu5mc-ebDFpZU9xx-_nakCOscUm0tHN224MxKNIx-9E7XrS0PlSOauNYqi4AVKP9svW0" + } + ], + "body": { + "mode": "file", + "file": { + "src": "/home/sami/james-project/diffs.txt" + } + }, + "url": { + "raw": "http://{{host}}/upload/{{accountId}}", + "protocol": "http", + "host": [ + "{{host}}" + ], + "path": [ + "upload", + "{{accountId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Users and Domains", + "item": [ + { + "name": "Aliases", + "item": [ + { + "name": "Get all aliases of user", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/aliases/usr&test1$49@cloud.appscode.com", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "aliases", + "usr&test1$49@cloud.appscode.com" + ] + } + }, + "response": [] + }, + { + "name": "Get all aliases", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/aliases", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "aliases" + ] + } + }, + "response": [] + }, + { + "name": "Delete alias", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/aliases/manyalias2@cloud.appscode.com/sources/manyalias@cloud.appscode.com", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "aliases", + "manyalias2@cloud.appscode.com", + "sources", + "manyalias@cloud.appscode.com" + ] + } + }, + "response": [] + }, + { + "name": "Add alias", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/aliases/usr&test1$49@cloud.appscode.com/sources/manyalias@cloud.appscode.com", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "aliases", + "usr&test1$49@cloud.appscode.com", + "sources", + "manyalias@cloud.appscode.com" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Add mydomain", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/domains/cloud.appscode.com", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "domains", + "cloud.appscode.com" + ] + } + }, + "response": [] + }, + { + "name": "Add testuser.acc@cloud.appscode.com", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"password\":\"password\"}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/users/recipient.acc@cloud.appscode.com", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "users", + "recipient.acc@cloud.appscode.com" + ] + } + }, + "response": [] + }, + { + "name": "Add recipient.acc@cloud.appscode.com", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"password\":\"password\"}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/users/recipient.acc@cloud.appscode.com", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "users", + "recipient.acc@cloud.appscode.com" + ] + } + }, + "response": [] + }, + { + "name": "List Users", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Connection", + "value": "close", + "type": "text" + } + ], + "url": { + "raw": "http://{{host}}:{{port}}/users", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "users" + ] + } + }, + "response": [] + }, + { + "name": "List Domains", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/domains", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "domains" + ] + } + }, + "response": [] + }, + { + "name": "username change", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/users/testuser.org@mydomain/rename/testuser1.org@mydomain?action=rename", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "users", + "testuser.org@mydomain", + "rename", + "testuser1.org@mydomain" + ], + "query": [ + { + "key": "action", + "value": "rename" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Groups", + "item": [ + { + "name": "Add user to group", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/cluster&kube-system$cfa342bd-a9f7-4a89-a3b4-b8b1048deb66&meta&ace$2&org@cloud.appscode.com/usr&appscode&1@cloud.appscode.com", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "cluster&kube-system$cfa342bd-a9f7-4a89-a3b4-b8b1048deb66&meta&ace$2&org@cloud.appscode.com", + "usr&appscode&1@cloud.appscode.com" + ] + } + }, + "response": [] + }, + { + "name": "Create group", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/group8.org@mydomain", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "group8.org@mydomain" + ] + } + }, + "response": [] + }, + { + "name": "Create Multiple Groups", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/groups", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups" + ] + } + }, + "response": [] + }, + { + "name": "Delete user from a group", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/g@mydomain/a&b@mydomain", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "g@mydomain", + "a&b@mydomain" + ] + } + }, + "response": [] + }, + { + "name": "Create multiple groups with members", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{agentToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n {\n \"groupAddr\": \"group1@mydomain\",\n \"memberAddrs\": [\n \"member1@mydomain\"\n ]\n },\n {\n \"groupAddr\": \"a@cloud.appscode.com\",\n \"memberAddrs\": [\n \"member2@mydomain\",\n \"member3@mydomain\"\n ]\n }\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/add-groups", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "add-groups" + ] + } + }, + "response": [] + }, + { + "name": "List groups", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/groups", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups" + ] + } + }, + "response": [] + }, + { + "name": "List members of a group", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/ns&demo$972c661f-0680-4e35-9c41-57f4a7a26788.cluster&kube-system$92398ede-e882-46ee-9783-6414dbeb7a23&meta&ace$2&org@cloud.appscode.com", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "ns&demo$972c661f-0680-4e35-9c41-57f4a7a26788.cluster&kube-system$92398ede-e882-46ee-9783-6414dbeb7a23&meta&ace$2&org@cloud.appscode.com" + ] + } + }, + "response": [] + }, + { + "name": "Delete multiple groups", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n \"kube-system$744e45d0-4b9f-48e1-b532-b85bbcabe227&cluster.x&type-grp&nm-test123&id-1&typ-user@cloud.appscode.com\",\n \"monitoring$8630730e-3e13-485f-aac3-86a31024ffa6&ns.kube-system$744e45d0-4b9f-48e1-b532-b85bbcabe227&cluster.x&type-acc&nm-test123&id-1&typ-user@cloud.appscode.com\"\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/address/groups", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups" + ] + } + }, + "response": [] + }, + { + "name": "Check group existence", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n \"kube-system$744e45d0-4b9f-48e1-b532-b85bbcabe227&cluster.x&type-grp&nm-test123&id-1&typ-user@cloud.appscode.com\",\n \"group1.org@mydomain\",\n \"group3.org@mydomain\",\n \"kube-system$14d58583-4e05-4343-b4bd-ff6e513d7605&cluster.x&type-grp&name-yyyyyy&ownerid-1@cloud.appscode.com\"\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/isExist", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "isExist" + ] + } + }, + "response": [] + } + ] + } + ] + }, + { + "name": "JMAP", + "item": [ + { + "name": "session", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{agentToken}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"capabilities\": {\n \"urn:apache:james:params:jmap:delegation\": {},\n \"urn:ietf:params:jmap:submission\": {\n \"maxDelayedSend\": 0,\n \"submissionExtensions\": {}\n },\n \"urn:ietf:params:jmap:websocket\": {\n \"supportsPush\": true,\n \"url\": \"ws://localhost/jmap/ws\"\n },\n \"urn:ietf:params:jmap:core\": {\n \"maxSizeUpload\": 26214400,\n \"maxConcurrentUpload\": 4,\n \"maxSizeRequest\": 10000000,\n \"maxConcurrentRequests\": 4,\n \"maxCallsInRequest\": 16,\n \"maxObjectsInGet\": 500,\n \"maxObjectsInSet\": 500,\n \"collationAlgorithms\": [\n \"i;unicode-casemap\"\n ]\n },\n \"urn:apache:james:params:jmap:mail:shares\": {},\n \"urn:ietf:params:jmap:vacationresponse\": {},\n \"urn:ietf:params:jmap:mail\": {\n \"maxMailboxesPerEmail\": 10000000,\n \"maxMailboxDepth\": null,\n \"maxSizeMailboxName\": 200,\n \"maxSizeAttachmentsPerEmail\": 20000000,\n \"emailQuerySortOptions\": [\n \"receivedAt\",\n \"sentAt\",\n \"size\",\n \"from\",\n \"to\",\n \"subject\"\n ],\n \"mayCreateTopLevelMailbox\": true\n },\n \"urn:ietf:params:jmap:mdn\": {},\n \"urn:apache:james:params:jmap:mail:quota\": {},\n \"urn:ietf:params:jmap:quota\": {},\n \"urn:apache:james:params:jmap:mail:identity:sortorder\": {}\n },\n \"accounts\": {\n \"7d9a406d93da8c7d50ba41caf0a4cf8663c7f9f77cc3798bf270044b048ce2d4\": {\n \"name\": \"agent&agent$dd303481-a15d-4975-8e0b-42cf22d34ffd.cluster&ace$dd303481-a15d-4975-8e0b-42cf22d34ffd@cloud.appscode.com\",\n \"isPersonal\": true,\n \"isReadOnly\": false,\n \"accountCapabilities\": {\n \"urn:apache:james:params:jmap:delegation\": {},\n \"urn:ietf:params:jmap:submission\": {\n \"maxDelayedSend\": 0,\n \"submissionExtensions\": {}\n },\n \"urn:ietf:params:jmap:websocket\": {\n \"supportsPush\": true,\n \"url\": \"ws://localhost/jmap/ws\"\n },\n \"urn:ietf:params:jmap:core\": {\n \"maxSizeUpload\": 26214400,\n \"maxConcurrentUpload\": 4,\n \"maxSizeRequest\": 10000000,\n \"maxConcurrentRequests\": 4,\n \"maxCallsInRequest\": 16,\n \"maxObjectsInGet\": 500,\n \"maxObjectsInSet\": 500,\n \"collationAlgorithms\": [\n \"i;unicode-casemap\"\n ]\n },\n \"urn:apache:james:params:jmap:mail:shares\": {},\n \"urn:ietf:params:jmap:vacationresponse\": {},\n \"urn:ietf:params:jmap:mail\": {\n \"maxMailboxesPerEmail\": 10000000,\n \"maxMailboxDepth\": null,\n \"maxSizeMailboxName\": 200,\n \"maxSizeAttachmentsPerEmail\": 20000000,\n \"emailQuerySortOptions\": [\n \"receivedAt\",\n \"sentAt\",\n \"size\",\n \"from\",\n \"to\",\n \"subject\"\n ],\n \"mayCreateTopLevelMailbox\": true\n },\n \"urn:ietf:params:jmap:mdn\": {},\n \"urn:apache:james:params:jmap:mail:quota\": {},\n \"urn:ietf:params:jmap:quota\": {},\n \"urn:apache:james:params:jmap:mail:identity:sortorder\": {}\n }\n }\n },\n \"primaryAccounts\": {\n \"urn:apache:james:params:jmap:delegation\": \"7d9a406d93da8c7d50ba41caf0a4cf8663c7f9f77cc3798bf270044b048ce2d4\",\n \"urn:ietf:params:jmap:submission\": \"7d9a406d93da8c7d50ba41caf0a4cf8663c7f9f77cc3798bf270044b048ce2d4\",\n \"urn:ietf:params:jmap:websocket\": \"7d9a406d93da8c7d50ba41caf0a4cf8663c7f9f77cc3798bf270044b048ce2d4\",\n \"urn:ietf:params:jmap:core\": \"7d9a406d93da8c7d50ba41caf0a4cf8663c7f9f77cc3798bf270044b048ce2d4\",\n \"urn:apache:james:params:jmap:mail:shares\": \"7d9a406d93da8c7d50ba41caf0a4cf8663c7f9f77cc3798bf270044b048ce2d4\",\n \"urn:ietf:params:jmap:vacationresponse\": \"7d9a406d93da8c7d50ba41caf0a4cf8663c7f9f77cc3798bf270044b048ce2d4\",\n \"urn:ietf:params:jmap:mail\": \"7d9a406d93da8c7d50ba41caf0a4cf8663c7f9f77cc3798bf270044b048ce2d4\",\n \"urn:ietf:params:jmap:mdn\": \"7d9a406d93da8c7d50ba41caf0a4cf8663c7f9f77cc3798bf270044b048ce2d4\",\n \"urn:apache:james:params:jmap:mail:quota\": \"7d9a406d93da8c7d50ba41caf0a4cf8663c7f9f77cc3798bf270044b048ce2d4\",\n \"urn:ietf:params:jmap:quota\": \"7d9a406d93da8c7d50ba41caf0a4cf8663c7f9f77cc3798bf270044b048ce2d4\",\n \"urn:apache:james:params:jmap:mail:identity:sortorder\": \"7d9a406d93da8c7d50ba41caf0a4cf8663c7f9f77cc3798bf270044b048ce2d4\"\n },\n \"username\": \"agent&agent$dd303481-a15d-4975-8e0b-42cf22d34ffd.cluster&ace$dd303481-a15d-4975-8e0b-42cf22d34ffd@cloud.appscode.com\",\n \"apiUrl\": \"{protocol}://{domain}/jmap\",\n \"downloadUrl\": \"{protocol}://{domain}/download/{accountId}/{blobId}?type={type}&name={name}\",\n \"uploadUrl\": \"{protocol}://{domain}/upload/{accountId}\",\n \"eventSourceUrl\": \"{protocol}://{domain}/eventSource?types={types}&closeAfter={closeafter}&ping={ping}\",\n \"state\": \"2c9f1b12-b35a-43e6-9af2-0106fb53a943\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap/session", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap", + "session" + ] + } + }, + "response": [] + }, + { + "name": "session Copy", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "password", + "value": "password", + "type": "string" + }, + { + "key": "username", + "value": "test@cloud.appscode.com", + "type": "string" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "url": { + "raw": "http://{{host}}:{{jmapPort}}/.well-known/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + ".well-known", + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Core/echo", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{agentToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\"],\n \"methodCalls\": [\n [ \"Core/echo\", {\n \"accountId\": \"{{accountId}}\",\n \"hello\": true,\n \"high\": 5\n }, \"b3ff\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "PushSubscription/set my response", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"PushSubscription/set\", {\n \"update\": {\n \"3b1249a4-e800-4dba-97e1-6ba60be1ce9b\": {\n \"verificationCode\":\"6e579a03-7e15-4af1-925e-04494312248a\"\n }\n }\n }, \"0\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap/session", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap", + "session" + ] + } + }, + "response": [] + }, + { + "name": "set push subscription", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"PushSubscription/set\", {\n \"create\": {\n \"asdfasd\": {\n \"deviceClientId\": \"a8d8xczx9-ssffea-910\",\n \"url\": \"http://localhost:3333/pushListener\",\n \"types\": [\"Mailbox\", \"Email\", \"EmailDelivery\"]\n }\n }\n }, \"0\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "view push subscriptions", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"PushSubscription/get\", {\n \"ids\": null\n }, \"asdas\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Mailbox/query", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/query\", {\n \"accountId\": \"{{accountId}}\",\n \"filter\": {\n \"operator\": \"OR\",\n \"conditions\": [\n { \"role\": \"Inbox\" },\n { \"role\": \"Drafts\" }\n ]\n }\n }, \"mbQuery\" ],\n\n [ \"Mailbox/query\", {\n \"#accountId\" : {\n \"name\": \"Mailbox/query\",\n \"resultOf\": \"mbQuery\",\n \"path\": \"/accountId\"\n },\n\n \"filter\": {\n \"after\": \"2023-01-01T00:00:00Z\"\n },\n \"sort\": [\n { \"property\": \"receivedAt\", \"isAscending\": false }\n ]\n }, \"1\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Mailbox/get See all mailboxes", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/get\", {\n \"accountId\": \"{{accountId}}\"\n //\"ids\": [\"92fc4880-e2b1-11ee-9f54-f98672181f3c\"]\n }, \"b3ff\"] \n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Mailbox/Set", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/set\", {\n \"accountId\": \"{{accountId}}\",\n \"onDestroyRemoveEmails\": true,\n \"destroy\": [\"fd142670-06dd-11ef-84cf-1f1e29f1b45b\"]\n }, \"b3ff\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "View mailbox changes since last session", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/changes\", {\n \"accountId\": \"{{accountId}}\",\n \"sinceState\": \"fe0c4be1-8ea9-11ee-849d-9fa9bb19403d\"\n //\"filter\": {\"role\": \"Inbox\"}\n }, \"0\" ],\n\n [\"Mailbox/get\", {\n \"#accountId\": {\n \"name\": \"Mailbox/changes\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n \"#ids\" : {\n \"name\": \"Mailbox/changes\",\n \"path\": \"updated/*\",\n \"resultOf\": \"0\"\n }\n }, \"1\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Show unseen threads containing a specific user", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser1.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/query\", {\n \"accountId\": \"652bcce453ce51e5dd2a5c6a4b445d0207abede3b9f91a3611677145ea8dd3bc\",\n \"filter\": {\"role\": \"Sent\"}\n }, \"mbQuery\" ],\n \n [ \"Email/query\", {\n \"accountId\" : \"652bcce453ce51e5dd2a5c6a4b445d0207abede3b9f91a3611677145ea8dd3bc\",\n \"limit\": 3\n }, \"0\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n\n \"properties\": [ \"threadId\" ]\n }, \"1\" ],\n\n [ \"Thread/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/get\",\n \"path\": \"/list/*/threadId\",\n \"resultOf\": \"1\"\n }\n }, \"2\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Thread/get\",\n \"path\": \"/list/*/emailIds\",\n \"resultOf\": \"2\"\n },\n \"properties\": [\"from\"]\n\n // \"properties\": [ \"from\", \"to\", \"receivedAt\", \"subject\", \"preview\", \"messageId\", \"references\" ]\n }, \"3\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Show email (simple)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/query\", {\n \"accountId\": \"{{accountId}}\",\n \"filter\": {\"role\": \"inbox\"}\n }, \"mbQuery\" ],\n \n [ \"Email/query\", {\n \"#accountId\": {\n \"name\": \"Mailbox/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"mbQuery\"\n },\n \"filter\": {\n \"operator\": \"AND\",\n \"conditions\": [\n\n {\"#inMailbox\": {\n \"name\": \"Mailbox/query\",\n \"resultOf\": \"mbQuery\",\n \"path\": \"ids/0\"\n }},\n\n //{\"from\": \"sami@james.appscode.ninja\"}\n //{\"text\": \"searchText\"}//,\n {\"notKeyword\": \"$seen\"}\n ]\n },\n \"sort\": [\n { \"property\": \"receivedAt\", \"isAscending\": false }\n ],\n \"collapseThreads\": true,\n \"calculateTotal\": true,\n \"position\": 0,\n \"limit\": 10\n }, \"0\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n \"properties\": [\"from\"],\n //\"properties\": [ \"from\", \"to\", \"receivedAt\", \"subject\", \"bodyValues\", \"messageId\" ],\n \"fetchAllBodyValues\": true\n }, \"1\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Fetch email body", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n\n [ \"Mailbox/query\", {\n \"accountId\": \"{{accountId}}\",\n //\"accountId\": \"7165989a44d7b25d65e1b2f97794b49118e5c19b42a91ed75db2c28534cf4a22\",//testuser\n \"filter\": {\"role\": \"INBOX\"}\n }, \"mbQuery\" ],\n\n [ \"Email/query\", {\n \"#accountId\": {\n \"name\": \"Mailbox/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"mbQuery\"\n },\n \"filter\": {\n \"operator\": \"AND\",\n \"conditions\": [\n \n {\"#inMailbox\": {\n \"name\": \"Mailbox/query\",\n \"resultOf\": \"mbQuery\",\n \"path\": \"ids/0\"\n }}\n // {\"header\":[\"hehe2\"]}\n //{\"notKeyword\": \"$seen\"}\n ]\n },\n \"sort\": [\n { \"property\": \"receivedAt\", \"isAscending\": false }\n ],\n \"position\": 0,\n \"limit\": 20\n }, \"0\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n // \"ids\": [\"cef5fcd0-940c-11ee-88f8-d7f9baa0a757\"],\n \"properties\": [\"id\", \"inReplyTo\", \"threadId\"],\n \"fetchAllBodyValues\": true,\n \"fetchHTMLBodyValues\": true\n }, \"1\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Fetch email body Copy", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n\n\n [ \"Email/query\", {\n \"accountId\": \"{{accountId}}\"\n \"limit\":2\n }, \"0\" ],\n \n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n // \"ids\": [\"cef5fcd0-940c-11ee-88f8-d7f9baa0a757\"],\n \"properties\": [\"bodyValues\"],\n \"fetchAllBodyValues\": true,\n \"fetchHTMLBodyValues\": true\n }, \"1\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Thread/get", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{adminToken}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [\"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [\n \"Thread/get\",\n {\n \"accountId\": \"{{accountId}}\",\n \"ids\": [\"8859cd50-dc91-11ef-a56c-1be6066b10ed\"] , \n \"sort\": [{ \"property\": \"receivedAt\", \"isAscending\": false }],\n \"collapseThreads\": true,\n \"position\": 0,\n \"limit\": 1\n },\n \"c1\"\n ],\n [\n \"Email/get\",\n {\n \"#accountId\": {\n \"name\": \"Thread/get\",\n \"path\": \"/accountId\",\n \"resultOf\": \"c1\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Thread/get\",\n \"path\": \"/list/*/emailIds\",\n \"resultOf\": \"c1\"\n },\n // \"ids\": [\"cef5fcd0-940c-11ee-88f8-d7f9baa0a757\"],\n \"properties\": [\"id\", \"inReplyTo\", \"threadId\"],\n \"fetchAllBodyValues\": true,\n \"fetchHTMLBodyValues\": true\n },\n \"c2\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Send Email", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "password", + "value": "password", + "type": "string" + }, + { + "key": "username", + "value": "recipient.acc@cloud.appscode.com", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\", \"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n\n [ \"Email/set\", \n { \n \"accountId\": \"{{accountId}}\",\n \n \"create\": {\n \"draft\": {\n \"from\": [{\"email\": \"recipient.acc@cloud.appscode.com\"}],\n \"to\": [{\"email\": \"recipient.acc@cloud.appscode.com\"}],\n \"subject\": \"THIS IS THE SUBJECT\",\n \"keywords\": {\"$draft\": true},\n \"mailboxIds\": {\"{{draft-mailboxId}}\": true},\n \"bodyValues\": {\"body\": {\"value\": \"asdfgh\", \"charset\": \"utf-8\"}},\n \"textBody\": [{\"partId\": \"body\", \"type\": \"text/plain\"}],\n \"header:hehe\":\" asdxd\",\n \"header:hehe2\":\" asdxd\"\n }\n }\n }, \n \"0\"\n ],\n\n [\n \"EmailSubmission/set\",\n {\n \"#accountId\": {\n \"name\": \"Email/set\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"create\": {\n \"sendIt\": {\n \"emailId\": \"#draft\"\n //\"identityId\": \"79646383-8b23-38d9-8cae-a2214844dd93\"\n }\n },\n\n //move from draft to sent mailbox\n \"onSuccessUpdateEmail\": {\n \"#sendIt\":{\n \"mailboxIds/{{draft-mailboxId}}\": null,\n \"mailboxIds/{{sent-mailboxId}}\": true,\n \"keywords/$seen\": true,\n \"keywords/$draft\": null\n }\n }\n },\n \"1\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Send Email (Attachment text test)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\", \"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n [ \"Email/set\", \n { \n \"accountId\": \"{{accountId}}\",\n \"create\": {\n \"draft\": {\n \"attachments\":[{\n \"blobId\": \"uploads-543f5ac0-8f5e-11ee-849d-9fa9bb19403d\",\n \"type\": \"text/plain\",\n \"size\": 14,\n \"partId\": 3,\n \"name\": \"toUpload3.txt\",\n \"disposition\": \"attachment\"\n }],\n \"hasAttachment\": true,\n \"from\": [{\"email\": \"sami@james.appscode.ninja\"}],\n \"to\": [{\"email\": \"testuser@mydomain\"}],\n \"subject\": \"THIS IS THE SUBJECT\",\n \"keywords\": {\"$draft\": true},\n \"mailboxIds\": {\"2f9e8650-8919-11ee-849d-9fa9bb19403d\": true},\n \"bodyValues\": {\"body\": {\"value\": \"THIS IS THE BODY\", \"charset\": \"utf-8\"}},\n \"textBody\": [{\"partId\": \"body\", \"type\": \"text/plain\"}]\n }\n }\n }, \n \"0\"\n ],\n\n [\n \"EmailSubmission/set\",\n {\n \"#accountId\": {\n \"name\": \"Email/set\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"create\": {\n \"sendIt\": {\n \"emailId\": \"#draft\"\n //\"identityId\": \"79646383-8b23-38d9-8cae-a2214844dd93\"\n }\n },\n\n //move from draft to sent mailbox\n \"onSuccessUpdateEmail\": {\n \"#sendIt\":{\n \"mailboxIds/2f9e8650-8919-11ee-849d-9fa9bb19403d\": null,\n \"mailboxIds/2f9a8eb0-8919-11ee-849d-9fa9bb19403d\": true,\n \"keywords/$seen\": true,\n \"keywords/$draft\": null\n }\n }\n },\n \"1\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Reply to thread", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\", \"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n [ \"Email/set\", \n { \n \"accountId\": \"{{accountId}}\",\n\n \"create\": {\n \"draft\": { \n \"inReplyTo\": [\n \"067297df-cffe-474a-a0c4-4f136550070c@mydomain\"\n ],\n \"references\": [\n \"067297df-cffe-474a-a0c4-4f136550070c@mydomain\"\n ], \n \"from\": [{\"email\": \"testuser.org@mydomain\"}],\n \"to\": [{\"email\": \"testuser.org@mydomain\"}],\n \"subject\": \"Re: sdfgsdfg\",\n \"keywords\": {\"$draft\": true},\n \"mailboxIds\": {\"3c122440-abbb-11ee-8dc7-5d9a8fe25dcd\": true},\n \"bodyValues\": {\"body\": {\"value\": \"THIS IS THE BODY 2\", \"charset\": \"utf-8\"}},\n \"textBody\": [{\"partId\": \"body\", \"type\": \"text/plain\"}]\n }\n }\n }, \n \"0\"\n ],\n\n [\n \"EmailSubmission/set\",\n {\n \"#accountId\": {\n \"name\": \"Email/set\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"create\": {\n \"sendIt\": {\n \"emailId\": \"#draft\"\n //\"identityId\": \"79646383-8b23-38d9-8cae-a2214844dd93\"\n }\n },\n\n //move from draft to sent mailbox\n \"onSuccessUpdateEmail\": {\n \"#sendIt\":{\n \"mailboxIds/3c0ccd10-abbb-11ee-8dc7-5d9a8fe25dcd\": true,\n \"mailboxIds/3c122440-abbb-11ee-8dc7-5d9a8fe25dcd\": null,\n \"keywords/$seen\": true,\n \"keywords/$draft\": null\n }\n }\n },\n \"1\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "queryChanges", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n\n [ \"Email/changes\", {\n \"accountId\" : \"{{accountId}}\",\n \"sinceState\" : \"98504b99-0381-11ef-944f-19e222f5e43e\"\n }, \"1\" ],\n\n [ \"Email/set\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"1\",\n \"path\": \"accountId\"\n },\n\n \"#destroy\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"1\",\n \"path\": \"ids\"\n }\n }, \"2\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Get Identity", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "username", + "value": "testuser.org@mydomain", + "type": "string" + }, + { + "key": "password", + "value": "password", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\",\"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n [ \"Identity/get\", {\n \"accountId\": \"{{accountId}}\",\n \"ids\":null\n }, \"1\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Destroy All PushSubscriptions", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"PushSubscription/get\", {\n \"ids\": null\n }, \"asdas\" ],\n\n [ \"PushSubscription/set\", {\n \"#destroy\": {\n \"name\": \"PushSubscription/get\",\n \"path\": \"list/*/id\",\n \"resultOf\": \"asdas\"\n }\n }, \"0\"\n\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Destroy All Emails (Verify)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-server-admin-token}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n\n [ \"Email/query\", {\n \"accountId\" : \"{{accountId}}\"\n }, \"0\" ],\n\n [\"Email/get\",{\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"0\",\n \"path\": \"accountId\"\n },\n \n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n // \"ids\": [\"cef5fcd0-940c-11ee-88f8-d7f9baa0a757\"],\n \"properties\": [\"id\"]\n },\"1\" ],\n\n [ \"Email/set\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"0\",\n \"path\": \"accountId\"\n },\n\n \"#destroy\": {\n \"name\": \"Email/get\",\n \"resultOf\": \"1\",\n \"path\": \"list/*/id\"\n }\n }, \"2\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Destroy All Emails (Blind)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n\n [ \"Email/query\", {\n \"accountId\" : \"{{accountId}}\"\n }, \"0\" ],\n\n [ \"Email/set\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"0\",\n \"path\": \"accountId\"\n },\n\n \"#destroy\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"0\",\n \"path\": \"ids\"\n }\n }, \"2\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + } + ] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "pm.request.headers.add({ key: \"Connection\", value: \"close\" });" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "host", + "value": "james.appscode.ninja" + }, + { + "key": "port", + "value": "8000" + }, + { + "key": "adminToken", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTg0Mjk2NTIsInBlcm1pc3Npb25zIjp7InBlcm0uYWRkcmVzcy5ncm91cHMuKi4qIjpbIlBVVCIsIkRFTEVURSJdfSwic3ViIjoiYWdlbnQkMmViNGZiMDUtNTQzOC00MGUyLTkxY2YtMmI3MjU3ZjEyMzQxXHUwMDI2YWdlbnQuZnJvbnQtZW5kLWxpbm9kZSQyZWI0ZmIwNS01NDM4LTQwZTItOTFjZi0yYjcyNTdmMTIzNDFcdTAwMjZjbHVzdGVyLnhcdTAwMjZ0eXBlLWFjY0BjbG91ZC5hcHBzY29kZS5jb20iLCJ0eXBlIjoiYWdlbnQifQ.HNF2hRuLGVn6ugbwiIEg9huvvTm11clCz9GDmhtcHcur4zhqQfQmA0POQ0NgK4K2aL1P-g2G9V-aT5DW6L4QwkTMNAoQKc2c_R0U0xcOGd39OTYVpsngZj1LRdvgT_OOqCybKf8J0R1hu5HLG7sSazoZTiUwCHwtXNhub0PDv5hXUXjXUKw9X6bn9p5nxdBpj5PwFj9tNepGKAYHJZF1wDB6GtnXwuwPDVqXeswe9MFVr_TW1f86sQC4UGhXz-IdKPLo5SDEUfGZ3hfGL_q4OKJJtrt4WQ5mke-mWP3n1bfkD3Bhdb4nHipwQ1-sEgGluuKSxPqTfsVYlXUyOa6iNhUii7r2PZZuIVBOXMOWkk-euqqz87e6VvVX8-_L2pbKrmJcfOY5HJZVX2JoJhzSHCkYlkW_R_NxrNHoijfN4lBaEhLg5EyKZczWzXdvxD8EIaX0T4xjuDBsuss_6PMOJamGES6emCoWYxmBd5CX7_ggbf-5PE5D9WJkKSTqCsFCNf7tjo2_QQUsqfzn9kUTBuQ6_GICbHsx-I1-Y77JgKwq27cFK5fgLK-IcbdlpZpc1SjH9LIGMKmQr75pga8EnbeafHqttqYR6a0x-_fHMAst0KINgJf0mhhokS_EzB0lMk0qbbx9CQ2sn7jHzz6I-RkxuUNNehrXKjpQdbsjrQY", + "type": "string" + }, + { + "key": "agentToken", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImFkbWluIjp0cnVlLCJleHAiOjE5NDYyMzkwMjIsInBlcm1pc3Npb24iOnsicGVybS5hcGkudjEuZ3JvdXAiOiJ1cGRhdGUifX0.gkaY3kljuaOufmkXv-UOUY1HoK3G3d5-2aLlUuxG0V-53sUlxb7r97GIR5Upw9kDjnt0SV6fTTPfHIuh9iY46pneCwKUHB15palNOcZNZlGDkq6-ipgVWnppErwD5rOqCIh4ad08GmeAU8_2VJubZkw1rNJMu7zjfGoGvUHVuz38FxWu70CQcDGslHKAeFTMGpaRcY2GRuJNfbkpMpnhtXu9Wmqn_xK026wi6zEZXJ6--i-Yz4oPihGWyH2dqzWG9DSBt-L6ZD6pZGFEk_towrnuBs4GCozA9fnvwpA2IYkINS-pdWe9rbS1RfIql-XPkn5nSU4tk68Mn5KgTCdravnRqx_wOcVa-tO-AnxiZFLtZAqUjDbLa3E6I66cGsNxckfzu2etgIPNfSFeyfZYYIcm3fGwBavzNfmrDybIBDcPPH4esDsV5JOD_Xh_XgIhIuBJaWqLhzinDD-2BE8GIUYR6_YrxtqNaO9G4K9rOPe1fdKwUYsgZKO72RsRS8h70wrr-cEW1GnXbYkQqcniSx07MQDVAkrIW_l3uk7DnTuoujX_gZqSmhob8U9qiiDAkR5Pt53qxvzkX5OLNIhbrtnD_maclcEIZOkzzWnUivRIwfZ4P-_c94sMquLrEeX-2R7nWBhwMNm-rdpZ_JpfWDcLQAbxya7WjeSMpN9a2-o", + "type": "string" + }, + { + "key": "jmapPort", + "value": "80", + "type": "string" + }, + { + "key": "accountId", + "value": "ad2fdd6ab1ed7f3c1325b7921bcda0cef3b0de491d0b7c011bc842514448cab6", + "type": "string" + }, + { + "key": "draft-mailboxId", + "value": "0a1c24a0-2a0e-11ef-b253-95058fa091b3", + "type": "string" + }, + { + "key": "sent-mailboxId", + "value": "0a13e740-2a0e-11ef-b253-95058fa091b3", + "type": "string" + }, + { + "key": "b3host", + "value": "192.168.68.101", + "type": "string" + }, + { + "key": "b3token", + "value": "cc3fc1d2c51d10146c7c13f68682229b398ef84c", + "type": "string" + }, + { + "key": "clusterID", + "value": "643489f2-daec-45ad-a875-05a4d3b1e057", + "type": "string" + }, + { + "key": "inbox-server-admin-token", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE5MjI0ODk4MTksInBlcm1pc3Npb25zIjp7InBlcm0uYWRkcmVzcy5ncm91cHMuKi4qIjpbIlBVVCIsIkRFTEVURSJdfSwic3ViIjoidG1wdXNlcjNAbXlkb21haW4iLCJ0eXBlIjoiYWRtaW4ifQ.DncyebffiyxBqITBH5vcurco0L3_83ktsluGeMUIZGcTVplMUGKzwlqC3rgVlHcjrJY6CQyLepeTSATGbE3bDbNSYkIaIFpJFSlonAVg1vdR-qWltzkovICJA9Q2of_57VgAvNH9N83oEFMNAwC-83Al4vgd5QuB-VZRIONWVbo84YzdEcbvjbMIROJ9WDAzTrjHmbSQq49HyC1FsTuETN7s3XQgTviKreoklKVM3SCpOqfzZlKk511MdU-Ayg_jzs0Eq3ZiIV2fSm9yiQv13o13iTkeZPeZQkywXEjBi6c6pzbcEaxKuGNC5cu901W6-AB_iGNFcVjr-uw_eph8rg", + "type": "string" + }, + { + "key": "tmpuser2", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE5MjI0ODk4MTksInBlcm1pc3Npb25zIjp7InBlcm0uYWRkcmVzcy5ncm91cHMuKi4qIjpbIlBVVCIsIkRFTEVURSJdfSwic3ViIjoidG1wdXNlcjJAbXlkb21haW4iLCJ0eXBlIjoiYWRtaW4ifQ.lZvjgAQ845rAMR23_xWknhohwZCNRCb42mYA9jMUqaIUl-4ejfaG8PPLA6xnu5Ory4P-0H4ULDpqt0YkE9P0kRGthITw0m6xZ8siThUJRyglZKAIVnkobh3CsZGawZ-zoAOU48D9culn-TtWcLBEs4pkCZW7okLIL9o4jzsF0GkBAn42NejO3fGtkTkj7n4L1z2lihS-4Yy6BlE1XDBO7lTr6d8WyDfekeMwzR_wm5hJAJGM8WqTSXjrNjtEwVW2SBUov9oRp7r6gXSK12wQyy03plaLo5dxHtZSlaRhV9FJwat_AZkDKAWxB6UobuZojiL_jU4UkZXVHsuyyGr3Mw", + "type": "string" + } + ] +} \ No newline at end of file diff --git a/backends-common/cassandra/apache-james-backends-cassandra.iml b/backends-common/cassandra/apache-james-backends-cassandra.iml new file mode 100644 index 00000000000..9e3449c9d8f --- /dev/null +++ b/backends-common/cassandra/apache-james-backends-cassandra.iml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/event-sourcing/event-store-memory/pom.xml b/event-sourcing/event-store-memory/pom.xml index 7b7a6824262..064f197d1c4 100644 --- a/event-sourcing/event-store-memory/pom.xml +++ b/event-sourcing/event-store-memory/pom.xml @@ -91,5 +91,4 @@ - - \ No newline at end of file + diff --git a/examples/custom-healthcheck/pom.xml b/examples/custom-healthcheck/pom.xml index 3ca8981a633..db4cdf6a54e 100644 --- a/examples/custom-healthcheck/pom.xml +++ b/examples/custom-healthcheck/pom.xml @@ -18,16 +18,16 @@ under the License. --> - - examples - org.apache.james.examples - 3.9.0-SNAPSHOT - - 4.0.0 + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + - custom-healthcheck - Apache James :: Examples :: Custom HealthCheck - Example of how to extend James by adding your own healthcheck + custom-healthcheck + Apache James :: Examples :: Custom HealthCheck + Example of how to extend James by adding your own healthcheck @@ -58,4 +58,4 @@ - \ No newline at end of file + diff --git a/examples/custom-healthcheck/pom.xml.bak b/examples/custom-healthcheck/pom.xml.bak new file mode 100644 index 00000000000..49ff11cf304 --- /dev/null +++ b/examples/custom-healthcheck/pom.xml.bak @@ -0,0 +1,61 @@ + + + + + examples + org.apache.james.examples + 3.9.0-SNAPSHOT + + 4.0.0 + + custom-healthcheck + Apache James :: Examples :: Custom HealthCheck + Example of how to extend James by adding your own healthcheck + + + + ${james.groupId} + james-core + ${project.version} + provided + + + io.projectreactor + reactor-core + 3.5.8 + provided + + + + + custom-healthcheck + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + + + \ No newline at end of file diff --git a/examples/custom-imap/pom.xml b/examples/custom-imap/pom.xml index 89dd28e4709..8f133e28edc 100644 --- a/examples/custom-imap/pom.xml +++ b/examples/custom-imap/pom.xml @@ -12,69 +12,68 @@ 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 + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIOgNS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> - - 4.0.0 - - org.apache.james.examples - examples - 3.9.0-SNAPSHOT - + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + - custom-imap - Apache James :: Examples :: Custom IMAP - Example of how to extend James existing IMAP implementation by adding your own commands + custom-imap + Apache James :: Examples :: Custom IMAP + Example of how to extend James existing IMAP implementation by adding your own commands - - - ${james.groupId} - james-server-guice-imap - ${james.baseVersion} - provided - - - ${james.groupId} - james-server-guice-common - test-jar - ${james.baseVersion} - test - - - ${james.groupId} - james-server-memory-app - ${project.version} - test - - - ${james.groupId} - testing-base - ${james.baseVersion} - test - - - ${james.groupId} - james-server-testing - ${james.baseVersion} - test - - - ${james.protocols.groupId} - protocols-imap - ${james.baseVersion} - provided - - - com.google.inject - guice - 6.0.0 - provided - - + + + ${james.groupId} + james-server-guice-imap + ${james.baseVersion} + provided + + + ${james.groupId} + james-server-guice-common + ${james.baseVersion} + test-jar + test + + + ${james.groupId} + james-server-memory-app + ${project.version} + test + + + ${james.groupId} + testing-base + ${james.baseVersion} + test + + + ${james.groupId} + james-server-testing + ${james.baseVersion} + test + + + ${james.protocols.groupId} + protocols-imap + ${james.baseVersion} + provided + + + com.google.inject + guice + 6.0.0 + provided + + @@ -111,4 +110,4 @@ - \ No newline at end of file + diff --git a/examples/custom-imap/pom.xml.bak b/examples/custom-imap/pom.xml.bak new file mode 100644 index 00000000000..51d785d1aec --- /dev/null +++ b/examples/custom-imap/pom.xml.bak @@ -0,0 +1,114 @@ + + + + + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + + + custom-imap + Apache James :: Examples :: Custom IMAP + Example of how to extend James existing IMAP implementation by adding your own commands + + + + ${james.groupId} + james-server-guice-imap + ${james.baseVersion} + provided + + + ${james.groupId} + james-server-guice-common + test-jar + ${james.baseVersion} + test + + + ${james.groupId} + james-server-memory-app + ${project.version} + test + + + ${james.groupId} + testing-base + ${james.baseVersion} + test + + + ${james.groupId} + james-server-testing + ${james.baseVersion} + test + + + ${james.protocols.groupId} + protocols-imap + ${james.baseVersion} + provided + + + com.google.inject + guice + 6.0.0 + provided + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + maven-assembly-plugin + + + + fully.qualified.MainClass + + + + jar-with-dependencies + + custom-imap + + + + make-assembly + package + + single + + + + + + + \ No newline at end of file diff --git a/examples/custom-james-assembly/pom.xml b/examples/custom-james-assembly/pom.xml index 0af69e9bf0f..592bfc94ce0 100644 --- a/examples/custom-james-assembly/pom.xml +++ b/examples/custom-james-assembly/pom.xml @@ -18,25 +18,25 @@ under the License. --> - 4.0.0 - - org.apache.james.examples - examples - 3.9.0-SNAPSHOT - + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + - custom-james-assembly + custom-james-assembly - Apache James :: Examples :: Custom James server assembly - Assemble your own James server tailored to your needs. + Apache James :: Examples :: Custom James server assembly + Assemble your own James server tailored to your needs. - - - ${james.groupId} - james-server-memory-app - ${project.version} - - + + + ${james.groupId} + james-server-memory-app + ${project.version} + + @@ -95,4 +95,4 @@ - \ No newline at end of file + diff --git a/examples/custom-james-assembly/pom.xml.bak b/examples/custom-james-assembly/pom.xml.bak new file mode 100644 index 00000000000..374806e268e --- /dev/null +++ b/examples/custom-james-assembly/pom.xml.bak @@ -0,0 +1,98 @@ + + + + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + + + custom-james-assembly + + Apache James :: Examples :: Custom James server assembly + Assemble your own James server tailored to your needs. + + + + ${james.groupId} + james-server-memory-app + ${project.version} + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + com.google.cloud.tools + jib-maven-plugin + 3.3.2 + + + eclipse-temurin:11-jre-jammy + + + apache/james + + custom-latest + + + + org.apache.james.examples.CustomJamesServerMain + + 25 + 143 + + /root + + -Dlogback.configurationFile=/root/conf/logback.xml + -Dworking.directory=/root/ + + USE_CURRENT_TIMESTAMP + + + + + sample-configuration + /root/conf + + + + + + + + buildTar + + package + + + + + + \ No newline at end of file diff --git a/examples/custom-mailets/src/main/java/org/apache/james/examples/custom/mailets/IsDelayedForMoreThan.java b/examples/custom-mailets/src/main/java/org/apache/james/examples/custom/mailets/IsDelayedForMoreThan.java index c1c0b99fc48..a56c3a39c73 100644 --- a/examples/custom-mailets/src/main/java/org/apache/james/examples/custom/mailets/IsDelayedForMoreThan.java +++ b/examples/custom-mailets/src/main/java/org/apache/james/examples/custom/mailets/IsDelayedForMoreThan.java @@ -52,10 +52,10 @@ public IsDelayedForMoreThan() { public Collection match(Mail mail) throws MessagingException { Date sentDate = mail.getMessage().getSentDate(); - if (clock.instant().isAfter(sentDate.toInstant().plusMillis(maxDelay.toMillis()))) { + //if (clock.instant().isAfter(sentDate.toInstant().plusMillis(maxDelay.toMillis()))) { return ImmutableList.copyOf(mail.getRecipients()); - } - return ImmutableList.of(); + //} + //return ImmutableList.of(); } @Override diff --git a/examples/custom-smtp-command/pom.xml b/examples/custom-smtp-command/pom.xml index 15a6c2c415d..e89c654e897 100644 --- a/examples/custom-smtp-command/pom.xml +++ b/examples/custom-smtp-command/pom.xml @@ -18,26 +18,26 @@ under the License. --> - 4.0.0 - - org.apache.james.examples - examples - 3.9.0-SNAPSHOT - + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + - custom-smtp-command + custom-smtp-command - Apache James :: Examples :: Custom SMTP Command - Example of how to extend James existing SMTP implementation by adding your own commands + Apache James :: Examples :: Custom SMTP Command + Example of how to extend James existing SMTP implementation by adding your own commands - - - ${james.groupId} - james-server-protocols-smtp - ${project.version} - provided - - + + + ${james.groupId} + james-server-protocols-smtp + ${project.version} + provided + + custom-smtp-command @@ -52,4 +52,4 @@ - \ No newline at end of file + diff --git a/examples/custom-smtp-command/pom.xml.bak b/examples/custom-smtp-command/pom.xml.bak new file mode 100644 index 00000000000..d337b142de9 --- /dev/null +++ b/examples/custom-smtp-command/pom.xml.bak @@ -0,0 +1,55 @@ + + + + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + + + custom-smtp-command + + Apache James :: Examples :: Custom SMTP Command + Example of how to extend James existing SMTP implementation by adding your own commands + + + + ${james.groupId} + james-server-protocols-smtp + ${project.version} + provided + + + + + custom-smtp-command + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + + \ No newline at end of file diff --git a/examples/custom-smtp-hooks/pom.xml b/examples/custom-smtp-hooks/pom.xml index 892475a48e4..1bf84dd8ce4 100644 --- a/examples/custom-smtp-hooks/pom.xml +++ b/examples/custom-smtp-hooks/pom.xml @@ -18,26 +18,26 @@ under the License. --> - 4.0.0 - - org.apache.james.examples - examples - 3.9.0-SNAPSHOT - + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + - custom-smtp-hooks + custom-smtp-hooks - Apache James :: Examples :: Custom SMTP Hooks - Example of how to extend James existing SMTP implementation + Apache James :: Examples :: Custom SMTP Hooks + Example of how to extend James existing SMTP implementation - - - ${james.groupId} - james-server-protocols-smtp - ${project.version} - provided - - + + + ${james.groupId} + james-server-protocols-smtp + ${project.version} + provided + + custom-smtp-hooks @@ -52,4 +52,4 @@ - \ No newline at end of file + diff --git a/examples/custom-smtp-hooks/pom.xml.bak b/examples/custom-smtp-hooks/pom.xml.bak new file mode 100644 index 00000000000..77f18d29745 --- /dev/null +++ b/examples/custom-smtp-hooks/pom.xml.bak @@ -0,0 +1,55 @@ + + + + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + + + custom-smtp-hooks + + Apache James :: Examples :: Custom SMTP Hooks + Example of how to extend James existing SMTP implementation + + + + ${james.groupId} + james-server-protocols-smtp + ${project.version} + provided + + + + + custom-smtp-hooks + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + + \ No newline at end of file diff --git a/examples/custom-webadmin-route/pom.xml b/examples/custom-webadmin-route/pom.xml index bf0c4db9672..9bd801d26ac 100644 --- a/examples/custom-webadmin-route/pom.xml +++ b/examples/custom-webadmin-route/pom.xml @@ -18,26 +18,26 @@ under the License. --> - 4.0.0 - - org.apache.james.examples - examples - 3.9.0-SNAPSHOT - + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + - custom-webadmin-route + custom-webadmin-route - Apache James :: Examples :: Custom WebAdmin route - Example of how to extend James by adding your own webadmin routes + Apache James :: Examples :: Custom WebAdmin route + Example of how to extend James by adding your own webadmin routes - - - ${james.groupId} - james-server-webadmin-core - ${project.version} - provided - - + + + ${james.groupId} + james-server-webadmin-core + ${project.version} + provided + + custom-webadmin-route @@ -52,4 +52,4 @@ - \ No newline at end of file + diff --git a/examples/custom-webadmin-route/pom.xml.bak b/examples/custom-webadmin-route/pom.xml.bak new file mode 100644 index 00000000000..126a093528d --- /dev/null +++ b/examples/custom-webadmin-route/pom.xml.bak @@ -0,0 +1,55 @@ + + + + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + + + custom-webadmin-route + + Apache James :: Examples :: Custom WebAdmin route + Example of how to extend James by adding your own webadmin routes + + + + ${james.groupId} + james-server-webadmin-core + ${project.version} + provided + + + + + custom-webadmin-route + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + + \ No newline at end of file diff --git a/examples/metrics-graphite/pom.xml b/examples/metrics-graphite/pom.xml index f303780d9b5..c72c17ce006 100644 --- a/examples/metrics-graphite/pom.xml +++ b/examples/metrics-graphite/pom.xml @@ -18,40 +18,40 @@ under the License. --> - 4.0.0 - - org.apache.james.examples - examples - 3.9.0-SNAPSHOT - + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + - metrics-graphite + metrics-graphite - - - io.dropwizard.metrics - metrics-graphite - 4.2.19 - - - com.google.inject - guice - 6.0.0 - provided - - - org.apache.james - james-server-guice-configuration - ${james.baseVersion} - provided - - - org.apache.james - james-server-lifecycle-api - ${james.baseVersion} - provided - - + + + io.dropwizard.metrics + metrics-graphite + 4.2.19 + + + com.google.inject + guice + 6.0.0 + provided + + + org.apache.james + james-server-guice-configuration + ${james.baseVersion} + provided + + + org.apache.james + james-server-lifecycle-api + ${james.baseVersion} + provided + + @@ -89,4 +89,4 @@ - \ No newline at end of file + diff --git a/examples/metrics-graphite/pom.xml.bak b/examples/metrics-graphite/pom.xml.bak new file mode 100644 index 00000000000..5119148668f --- /dev/null +++ b/examples/metrics-graphite/pom.xml.bak @@ -0,0 +1,92 @@ + + + + 4.0.0 + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + + + metrics-graphite + + + + io.dropwizard.metrics + metrics-graphite + 4.2.19 + + + com.google.inject + guice + 6.0.0 + provided + + + org.apache.james + james-server-guice-configuration + ${james.baseVersion} + provided + + + org.apache.james + james-server-lifecycle-api + ${james.baseVersion} + provided + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + maven-assembly-plugin + + + + fully.qualified.MainClass + + + + jar-with-dependencies + + metrics-graphite + + + + make-assembly + package + + single + + + + + + + \ No newline at end of file diff --git a/examples/pom.xml b/examples/pom.xml index 5d4e60e0d63..32d6dccbcd7 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -23,7 +23,7 @@ org.apache apache 23 - + org.apache.james.examples diff --git a/examples/pom.xml.bak b/examples/pom.xml.bak new file mode 100644 index 00000000000..b0e605d3fa5 --- /dev/null +++ b/examples/pom.xml.bak @@ -0,0 +1,78 @@ + + + + 4.0.0 + + org.apache + apache + 23 + + + + org.apache.james.examples + examples + 3.9.0-SNAPSHOT + pom + Apache James :: Examples + + + org.apache.james + ${project.version} + ${james.groupId}.protocols + 1.11 + 1.11 + + + + custom-james-assembly + custom-listeners + custom-mailets + custom-smtp-command + custom-smtp-hooks + custom-webadmin-route + metrics-graphite + custom-healthcheck + custom-imap + + + + + + org.jacoco + jacoco-maven-plugin + + + jacoco-report + + report-aggregate + + none + + + **/jacoco.exec + + ${basedir}/target/jacoco + + + + + + + diff --git a/mailbox/jpa/derby.log b/mailbox/jpa/derby.log new file mode 100644 index 00000000000..f4d73450d94 --- /dev/null +++ b/mailbox/jpa/derby.log @@ -0,0 +1,13 @@ +---------------------------------------------------------------- +Wed Aug 07 13:25:47 BDT 2024: +Booting Derby version The Apache Software Foundation - Apache Derby - 10.14.2.0 - (1828579): instance a816c00e-0191-2bba-c8ae-00001c3271e8 +on database directory memory:/home/sami/go/src/github.com/ops-center/james-project/mailbox/jpa/mailboxintegrationtesting with class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4e0e2f2a +Loaded from file:/home/sami/.m2/repository/org/apache/derby/derby/10.14.2.0/derby-10.14.2.0.jar +java.vendor=Oracle Corporation +java.runtime.version=21.0.2+13-LTS-58 +user.dir=/home/sami/go/src/github.com/ops-center/james-project/mailbox/jpa +os.name=Linux +os.arch=amd64 +os.version=6.5.0-45-generic +derby.system.home=null +Database Class Loader started - derby.database.classpath='' diff --git a/mailbox/spring/derby.log b/mailbox/spring/derby.log new file mode 100644 index 00000000000..b10f03a7e15 --- /dev/null +++ b/mailbox/spring/derby.log @@ -0,0 +1,13 @@ +---------------------------------------------------------------- +Wed Aug 07 13:35:40 BDT 2024: +Booting Derby version The Apache Software Foundation - Apache Derby - 10.14.2.0 - (1828579): instance a816c00e-0191-2bc3-d7ab-000014adab40 +on database directory /home/sami/go/src/github.com/ops-center/james-project/mailbox/var/store/derby with class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4e0e2f2a +Loaded from file:/home/sami/.m2/repository/org/apache/derby/derby/10.14.2.0/derby-10.14.2.0.jar +java.vendor=Oracle Corporation +java.runtime.version=21.0.2+13-LTS-58 +user.dir=/home/sami/go/src/github.com/ops-center/james-project/mailbox/spring +os.name=Linux +os.arch=amd64 +os.version=6.5.0-45-generic +derby.system.home=null +Database Class Loader started - derby.database.classpath='' diff --git a/mailbox/var/store/derby/README_DO_NOT_TOUCH_FILES.txt b/mailbox/var/store/derby/README_DO_NOT_TOUCH_FILES.txt new file mode 100644 index 00000000000..a4bc1452989 --- /dev/null +++ b/mailbox/var/store/derby/README_DO_NOT_TOUCH_FILES.txt @@ -0,0 +1,9 @@ + +# ************************************************************************* +# *** DO NOT TOUCH FILES IN THIS DIRECTORY! *** +# *** FILES IN THIS DIRECTORY AND SUBDIRECTORIES CONSTITUTE A DERBY *** +# *** DATABASE, WHICH INCLUDES THE DATA (USER AND SYSTEM) AND THE *** +# *** FILES NECESSARY FOR DATABASE RECOVERY. *** +# *** EDITING, ADDING, OR DELETING ANY OF THESE FILES MAY CAUSE DATA *** +# *** CORRUPTION AND LEAVE THE DATABASE IN A NON-RECOVERABLE STATE. *** +# ************************************************************************* \ No newline at end of file diff --git a/mailbox/var/store/derby/db.lck b/mailbox/var/store/derby/db.lck new file mode 100644 index 00000000000..db0ceb39abf Binary files /dev/null and b/mailbox/var/store/derby/db.lck differ diff --git a/mailbox/var/store/derby/dbex.lck b/mailbox/var/store/derby/dbex.lck new file mode 100644 index 00000000000..720d64f4baa Binary files /dev/null and b/mailbox/var/store/derby/dbex.lck differ diff --git a/mailbox/var/store/derby/log/README_DO_NOT_TOUCH_FILES.txt b/mailbox/var/store/derby/log/README_DO_NOT_TOUCH_FILES.txt new file mode 100644 index 00000000000..56df292f65e --- /dev/null +++ b/mailbox/var/store/derby/log/README_DO_NOT_TOUCH_FILES.txt @@ -0,0 +1,8 @@ + +# ************************************************************************* +# *** DO NOT TOUCH FILES IN THIS DIRECTORY! *** +# *** FILES IN THIS DIRECTORY ARE USED BY THE DERBY DATABASE RECOVERY *** +# *** SYSTEM. EDITING, ADDING, OR DELETING FILES IN THIS DIRECTORY *** +# *** WILL CAUSE THE DERBY RECOVERY SYSTEM TO FAIL, LEADING TO *** +# *** NON-RECOVERABLE CORRUPT DATABASES. *** +# ************************************************************************* \ No newline at end of file diff --git a/mailbox/var/store/derby/log/log.ctrl b/mailbox/var/store/derby/log/log.ctrl new file mode 100644 index 00000000000..c23d2871bf1 Binary files /dev/null and b/mailbox/var/store/derby/log/log.ctrl differ diff --git a/mailbox/var/store/derby/log/log1.dat b/mailbox/var/store/derby/log/log1.dat new file mode 100644 index 00000000000..ffc18bdaf80 Binary files /dev/null and b/mailbox/var/store/derby/log/log1.dat differ diff --git a/mailbox/var/store/derby/log/logmirror.ctrl b/mailbox/var/store/derby/log/logmirror.ctrl new file mode 100644 index 00000000000..c23d2871bf1 Binary files /dev/null and b/mailbox/var/store/derby/log/logmirror.ctrl differ diff --git a/mailbox/var/store/derby/seg0/README_DO_NOT_TOUCH_FILES.txt b/mailbox/var/store/derby/seg0/README_DO_NOT_TOUCH_FILES.txt new file mode 100644 index 00000000000..2bdad061274 --- /dev/null +++ b/mailbox/var/store/derby/seg0/README_DO_NOT_TOUCH_FILES.txt @@ -0,0 +1,8 @@ + +# ************************************************************************* +# *** DO NOT TOUCH FILES IN THIS DIRECTORY! *** +# *** FILES IN THIS DIRECTORY ARE USED BY THE DERBY DATABASE TO STORE *** +# *** USER AND SYSTEM DATA. EDITING, ADDING, OR DELETING FILES IN THIS *** +# *** DIRECTORY WILL CORRUPT THE ASSOCIATED DERBY DATABASE AND MAKE *** +# *** IT NON-RECOVERABLE. *** +# ************************************************************************* \ No newline at end of file diff --git a/mailbox/var/store/derby/seg0/c10.dat b/mailbox/var/store/derby/seg0/c10.dat new file mode 100644 index 00000000000..7b9eccbd023 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c10.dat differ diff --git a/mailbox/var/store/derby/seg0/c101.dat b/mailbox/var/store/derby/seg0/c101.dat new file mode 100644 index 00000000000..11181781228 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c101.dat differ diff --git a/mailbox/var/store/derby/seg0/c111.dat b/mailbox/var/store/derby/seg0/c111.dat new file mode 100644 index 00000000000..71b1f8d3f96 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c111.dat differ diff --git a/mailbox/var/store/derby/seg0/c121.dat b/mailbox/var/store/derby/seg0/c121.dat new file mode 100644 index 00000000000..fbf18b9c97f Binary files /dev/null and b/mailbox/var/store/derby/seg0/c121.dat differ diff --git a/mailbox/var/store/derby/seg0/c130.dat b/mailbox/var/store/derby/seg0/c130.dat new file mode 100644 index 00000000000..7b2a6548baa Binary files /dev/null and b/mailbox/var/store/derby/seg0/c130.dat differ diff --git a/mailbox/var/store/derby/seg0/c141.dat b/mailbox/var/store/derby/seg0/c141.dat new file mode 100644 index 00000000000..3d983c2400e Binary files /dev/null and b/mailbox/var/store/derby/seg0/c141.dat differ diff --git a/mailbox/var/store/derby/seg0/c150.dat b/mailbox/var/store/derby/seg0/c150.dat new file mode 100644 index 00000000000..e2ea5767cbe Binary files /dev/null and b/mailbox/var/store/derby/seg0/c150.dat differ diff --git a/mailbox/var/store/derby/seg0/c161.dat b/mailbox/var/store/derby/seg0/c161.dat new file mode 100644 index 00000000000..12e29f850f7 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c161.dat differ diff --git a/mailbox/var/store/derby/seg0/c171.dat b/mailbox/var/store/derby/seg0/c171.dat new file mode 100644 index 00000000000..55d40959a49 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c171.dat differ diff --git a/mailbox/var/store/derby/seg0/c180.dat b/mailbox/var/store/derby/seg0/c180.dat new file mode 100644 index 00000000000..b1f4888a4bf Binary files /dev/null and b/mailbox/var/store/derby/seg0/c180.dat differ diff --git a/mailbox/var/store/derby/seg0/c191.dat b/mailbox/var/store/derby/seg0/c191.dat new file mode 100644 index 00000000000..5e31e3bed2c Binary files /dev/null and b/mailbox/var/store/derby/seg0/c191.dat differ diff --git a/mailbox/var/store/derby/seg0/c1a1.dat b/mailbox/var/store/derby/seg0/c1a1.dat new file mode 100644 index 00000000000..d4e624f1d8d Binary files /dev/null and b/mailbox/var/store/derby/seg0/c1a1.dat differ diff --git a/mailbox/var/store/derby/seg0/c1b1.dat b/mailbox/var/store/derby/seg0/c1b1.dat new file mode 100644 index 00000000000..d869ab92592 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c1b1.dat differ diff --git a/mailbox/var/store/derby/seg0/c1c0.dat b/mailbox/var/store/derby/seg0/c1c0.dat new file mode 100644 index 00000000000..c5b91e2c3fe Binary files /dev/null and b/mailbox/var/store/derby/seg0/c1c0.dat differ diff --git a/mailbox/var/store/derby/seg0/c1d1.dat b/mailbox/var/store/derby/seg0/c1d1.dat new file mode 100644 index 00000000000..451f02f45f2 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c1d1.dat differ diff --git a/mailbox/var/store/derby/seg0/c1e0.dat b/mailbox/var/store/derby/seg0/c1e0.dat new file mode 100644 index 00000000000..761408d3b34 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c1e0.dat differ diff --git a/mailbox/var/store/derby/seg0/c1f1.dat b/mailbox/var/store/derby/seg0/c1f1.dat new file mode 100644 index 00000000000..78d701f4555 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c1f1.dat differ diff --git a/mailbox/var/store/derby/seg0/c20.dat b/mailbox/var/store/derby/seg0/c20.dat new file mode 100644 index 00000000000..903d8891c4c Binary files /dev/null and b/mailbox/var/store/derby/seg0/c20.dat differ diff --git a/mailbox/var/store/derby/seg0/c200.dat b/mailbox/var/store/derby/seg0/c200.dat new file mode 100644 index 00000000000..c3a7808dd76 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c200.dat differ diff --git a/mailbox/var/store/derby/seg0/c211.dat b/mailbox/var/store/derby/seg0/c211.dat new file mode 100644 index 00000000000..54e1586958a Binary files /dev/null and b/mailbox/var/store/derby/seg0/c211.dat differ diff --git a/mailbox/var/store/derby/seg0/c221.dat b/mailbox/var/store/derby/seg0/c221.dat new file mode 100644 index 00000000000..59900bc0127 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c221.dat differ diff --git a/mailbox/var/store/derby/seg0/c230.dat b/mailbox/var/store/derby/seg0/c230.dat new file mode 100644 index 00000000000..9e5c24bd238 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c230.dat differ diff --git a/mailbox/var/store/derby/seg0/c241.dat b/mailbox/var/store/derby/seg0/c241.dat new file mode 100644 index 00000000000..809ad2bb606 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c241.dat differ diff --git a/mailbox/var/store/derby/seg0/c251.dat b/mailbox/var/store/derby/seg0/c251.dat new file mode 100644 index 00000000000..f2a385a2eb6 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c251.dat differ diff --git a/mailbox/var/store/derby/seg0/c260.dat b/mailbox/var/store/derby/seg0/c260.dat new file mode 100644 index 00000000000..25f81fde784 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c260.dat differ diff --git a/mailbox/var/store/derby/seg0/c271.dat b/mailbox/var/store/derby/seg0/c271.dat new file mode 100644 index 00000000000..51cde573e72 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c271.dat differ diff --git a/mailbox/var/store/derby/seg0/c281.dat b/mailbox/var/store/derby/seg0/c281.dat new file mode 100644 index 00000000000..cfed875dfce Binary files /dev/null and b/mailbox/var/store/derby/seg0/c281.dat differ diff --git a/mailbox/var/store/derby/seg0/c290.dat b/mailbox/var/store/derby/seg0/c290.dat new file mode 100644 index 00000000000..a85589e545d Binary files /dev/null and b/mailbox/var/store/derby/seg0/c290.dat differ diff --git a/mailbox/var/store/derby/seg0/c2a1.dat b/mailbox/var/store/derby/seg0/c2a1.dat new file mode 100644 index 00000000000..8e2ed6afe90 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c2a1.dat differ diff --git a/mailbox/var/store/derby/seg0/c2b1.dat b/mailbox/var/store/derby/seg0/c2b1.dat new file mode 100644 index 00000000000..2a296924771 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c2b1.dat differ diff --git a/mailbox/var/store/derby/seg0/c2c1.dat b/mailbox/var/store/derby/seg0/c2c1.dat new file mode 100644 index 00000000000..5511575f62c Binary files /dev/null and b/mailbox/var/store/derby/seg0/c2c1.dat differ diff --git a/mailbox/var/store/derby/seg0/c2d0.dat b/mailbox/var/store/derby/seg0/c2d0.dat new file mode 100644 index 00000000000..4adc6e4470f Binary files /dev/null and b/mailbox/var/store/derby/seg0/c2d0.dat differ diff --git a/mailbox/var/store/derby/seg0/c2e1.dat b/mailbox/var/store/derby/seg0/c2e1.dat new file mode 100644 index 00000000000..b37b9b25423 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c2e1.dat differ diff --git a/mailbox/var/store/derby/seg0/c2f0.dat b/mailbox/var/store/derby/seg0/c2f0.dat new file mode 100644 index 00000000000..d854b4b482d Binary files /dev/null and b/mailbox/var/store/derby/seg0/c2f0.dat differ diff --git a/mailbox/var/store/derby/seg0/c300.dat b/mailbox/var/store/derby/seg0/c300.dat new file mode 100644 index 00000000000..2053e0105b4 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c300.dat differ diff --git a/mailbox/var/store/derby/seg0/c31.dat b/mailbox/var/store/derby/seg0/c31.dat new file mode 100644 index 00000000000..7f7c87fda08 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c31.dat differ diff --git a/mailbox/var/store/derby/seg0/c311.dat b/mailbox/var/store/derby/seg0/c311.dat new file mode 100644 index 00000000000..f60c260f85b Binary files /dev/null and b/mailbox/var/store/derby/seg0/c311.dat differ diff --git a/mailbox/var/store/derby/seg0/c321.dat b/mailbox/var/store/derby/seg0/c321.dat new file mode 100644 index 00000000000..a9d745366de Binary files /dev/null and b/mailbox/var/store/derby/seg0/c321.dat differ diff --git a/mailbox/var/store/derby/seg0/c331.dat b/mailbox/var/store/derby/seg0/c331.dat new file mode 100644 index 00000000000..85ee72b3136 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c331.dat differ diff --git a/mailbox/var/store/derby/seg0/c340.dat b/mailbox/var/store/derby/seg0/c340.dat new file mode 100644 index 00000000000..d99b11a3f2d Binary files /dev/null and b/mailbox/var/store/derby/seg0/c340.dat differ diff --git a/mailbox/var/store/derby/seg0/c351.dat b/mailbox/var/store/derby/seg0/c351.dat new file mode 100644 index 00000000000..f822f4cb0c6 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c351.dat differ diff --git a/mailbox/var/store/derby/seg0/c361.dat b/mailbox/var/store/derby/seg0/c361.dat new file mode 100644 index 00000000000..b5c8f259d0d Binary files /dev/null and b/mailbox/var/store/derby/seg0/c361.dat differ diff --git a/mailbox/var/store/derby/seg0/c371.dat b/mailbox/var/store/derby/seg0/c371.dat new file mode 100644 index 00000000000..ad11f01b25b Binary files /dev/null and b/mailbox/var/store/derby/seg0/c371.dat differ diff --git a/mailbox/var/store/derby/seg0/c380.dat b/mailbox/var/store/derby/seg0/c380.dat new file mode 100644 index 00000000000..55864d89441 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c380.dat differ diff --git a/mailbox/var/store/derby/seg0/c391.dat b/mailbox/var/store/derby/seg0/c391.dat new file mode 100644 index 00000000000..1993fa219bd Binary files /dev/null and b/mailbox/var/store/derby/seg0/c391.dat differ diff --git a/mailbox/var/store/derby/seg0/c3a1.dat b/mailbox/var/store/derby/seg0/c3a1.dat new file mode 100644 index 00000000000..e8369d52892 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c3a1.dat differ diff --git a/mailbox/var/store/derby/seg0/c3b1.dat b/mailbox/var/store/derby/seg0/c3b1.dat new file mode 100644 index 00000000000..5ac55ea308b Binary files /dev/null and b/mailbox/var/store/derby/seg0/c3b1.dat differ diff --git a/mailbox/var/store/derby/seg0/c3c0.dat b/mailbox/var/store/derby/seg0/c3c0.dat new file mode 100644 index 00000000000..4d061cf0609 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c3c0.dat differ diff --git a/mailbox/var/store/derby/seg0/c3d1.dat b/mailbox/var/store/derby/seg0/c3d1.dat new file mode 100644 index 00000000000..45c9fa244b0 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c3d1.dat differ diff --git a/mailbox/var/store/derby/seg0/c3e1.dat b/mailbox/var/store/derby/seg0/c3e1.dat new file mode 100644 index 00000000000..48f53e682fa Binary files /dev/null and b/mailbox/var/store/derby/seg0/c3e1.dat differ diff --git a/mailbox/var/store/derby/seg0/c3f1.dat b/mailbox/var/store/derby/seg0/c3f1.dat new file mode 100644 index 00000000000..08acdcee31e Binary files /dev/null and b/mailbox/var/store/derby/seg0/c3f1.dat differ diff --git a/mailbox/var/store/derby/seg0/c400.dat b/mailbox/var/store/derby/seg0/c400.dat new file mode 100644 index 00000000000..1e8976f89fb Binary files /dev/null and b/mailbox/var/store/derby/seg0/c400.dat differ diff --git a/mailbox/var/store/derby/seg0/c41.dat b/mailbox/var/store/derby/seg0/c41.dat new file mode 100644 index 00000000000..f3509780234 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c41.dat differ diff --git a/mailbox/var/store/derby/seg0/c411.dat b/mailbox/var/store/derby/seg0/c411.dat new file mode 100644 index 00000000000..8aba2fb6bff Binary files /dev/null and b/mailbox/var/store/derby/seg0/c411.dat differ diff --git a/mailbox/var/store/derby/seg0/c421.dat b/mailbox/var/store/derby/seg0/c421.dat new file mode 100644 index 00000000000..65775ee7bfb Binary files /dev/null and b/mailbox/var/store/derby/seg0/c421.dat differ diff --git a/mailbox/var/store/derby/seg0/c430.dat b/mailbox/var/store/derby/seg0/c430.dat new file mode 100644 index 00000000000..55c948db349 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c430.dat differ diff --git a/mailbox/var/store/derby/seg0/c441.dat b/mailbox/var/store/derby/seg0/c441.dat new file mode 100644 index 00000000000..3948b2a3c5a Binary files /dev/null and b/mailbox/var/store/derby/seg0/c441.dat differ diff --git a/mailbox/var/store/derby/seg0/c451.dat b/mailbox/var/store/derby/seg0/c451.dat new file mode 100644 index 00000000000..fe1ab73e129 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c451.dat differ diff --git a/mailbox/var/store/derby/seg0/c461.dat b/mailbox/var/store/derby/seg0/c461.dat new file mode 100644 index 00000000000..e6d98541fb7 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c461.dat differ diff --git a/mailbox/var/store/derby/seg0/c470.dat b/mailbox/var/store/derby/seg0/c470.dat new file mode 100644 index 00000000000..c9f2eb1cae7 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c470.dat differ diff --git a/mailbox/var/store/derby/seg0/c481.dat b/mailbox/var/store/derby/seg0/c481.dat new file mode 100644 index 00000000000..397b291728d Binary files /dev/null and b/mailbox/var/store/derby/seg0/c481.dat differ diff --git a/mailbox/var/store/derby/seg0/c490.dat b/mailbox/var/store/derby/seg0/c490.dat new file mode 100644 index 00000000000..4ad73511655 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c490.dat differ diff --git a/mailbox/var/store/derby/seg0/c4a1.dat b/mailbox/var/store/derby/seg0/c4a1.dat new file mode 100644 index 00000000000..f5d481b6fe0 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c4a1.dat differ diff --git a/mailbox/var/store/derby/seg0/c4b0.dat b/mailbox/var/store/derby/seg0/c4b0.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c4b0.dat differ diff --git a/mailbox/var/store/derby/seg0/c4c1.dat b/mailbox/var/store/derby/seg0/c4c1.dat new file mode 100644 index 00000000000..6e1de5e605c Binary files /dev/null and b/mailbox/var/store/derby/seg0/c4c1.dat differ diff --git a/mailbox/var/store/derby/seg0/c4d0.dat b/mailbox/var/store/derby/seg0/c4d0.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c4d0.dat differ diff --git a/mailbox/var/store/derby/seg0/c4e1.dat b/mailbox/var/store/derby/seg0/c4e1.dat new file mode 100644 index 00000000000..ec17cefc60d Binary files /dev/null and b/mailbox/var/store/derby/seg0/c4e1.dat differ diff --git a/mailbox/var/store/derby/seg0/c4f0.dat b/mailbox/var/store/derby/seg0/c4f0.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c4f0.dat differ diff --git a/mailbox/var/store/derby/seg0/c501.dat b/mailbox/var/store/derby/seg0/c501.dat new file mode 100644 index 00000000000..19429ffecb2 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c501.dat differ diff --git a/mailbox/var/store/derby/seg0/c51.dat b/mailbox/var/store/derby/seg0/c51.dat new file mode 100644 index 00000000000..9d7ca9b3f3e Binary files /dev/null and b/mailbox/var/store/derby/seg0/c51.dat differ diff --git a/mailbox/var/store/derby/seg0/c510.dat b/mailbox/var/store/derby/seg0/c510.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c510.dat differ diff --git a/mailbox/var/store/derby/seg0/c521.dat b/mailbox/var/store/derby/seg0/c521.dat new file mode 100644 index 00000000000..12ec83f822d Binary files /dev/null and b/mailbox/var/store/derby/seg0/c521.dat differ diff --git a/mailbox/var/store/derby/seg0/c530.dat b/mailbox/var/store/derby/seg0/c530.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c530.dat differ diff --git a/mailbox/var/store/derby/seg0/c541.dat b/mailbox/var/store/derby/seg0/c541.dat new file mode 100644 index 00000000000..d3b17fcf28b Binary files /dev/null and b/mailbox/var/store/derby/seg0/c541.dat differ diff --git a/mailbox/var/store/derby/seg0/c550.dat b/mailbox/var/store/derby/seg0/c550.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c550.dat differ diff --git a/mailbox/var/store/derby/seg0/c561.dat b/mailbox/var/store/derby/seg0/c561.dat new file mode 100644 index 00000000000..3277d4fbde3 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c561.dat differ diff --git a/mailbox/var/store/derby/seg0/c570.dat b/mailbox/var/store/derby/seg0/c570.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c570.dat differ diff --git a/mailbox/var/store/derby/seg0/c581.dat b/mailbox/var/store/derby/seg0/c581.dat new file mode 100644 index 00000000000..ffc2eef3446 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c581.dat differ diff --git a/mailbox/var/store/derby/seg0/c590.dat b/mailbox/var/store/derby/seg0/c590.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c590.dat differ diff --git a/mailbox/var/store/derby/seg0/c5a1.dat b/mailbox/var/store/derby/seg0/c5a1.dat new file mode 100644 index 00000000000..dd2c2a830ce Binary files /dev/null and b/mailbox/var/store/derby/seg0/c5a1.dat differ diff --git a/mailbox/var/store/derby/seg0/c5b0.dat b/mailbox/var/store/derby/seg0/c5b0.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c5b0.dat differ diff --git a/mailbox/var/store/derby/seg0/c5c1.dat b/mailbox/var/store/derby/seg0/c5c1.dat new file mode 100644 index 00000000000..97a09286435 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c5c1.dat differ diff --git a/mailbox/var/store/derby/seg0/c5d0.dat b/mailbox/var/store/derby/seg0/c5d0.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c5d0.dat differ diff --git a/mailbox/var/store/derby/seg0/c5e1.dat b/mailbox/var/store/derby/seg0/c5e1.dat new file mode 100644 index 00000000000..a69f2c510b6 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c5e1.dat differ diff --git a/mailbox/var/store/derby/seg0/c5f0.dat b/mailbox/var/store/derby/seg0/c5f0.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c5f0.dat differ diff --git a/mailbox/var/store/derby/seg0/c60.dat b/mailbox/var/store/derby/seg0/c60.dat new file mode 100644 index 00000000000..e8e794beea9 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c60.dat differ diff --git a/mailbox/var/store/derby/seg0/c601.dat b/mailbox/var/store/derby/seg0/c601.dat new file mode 100644 index 00000000000..1453ba6d52a Binary files /dev/null and b/mailbox/var/store/derby/seg0/c601.dat differ diff --git a/mailbox/var/store/derby/seg0/c610.dat b/mailbox/var/store/derby/seg0/c610.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c610.dat differ diff --git a/mailbox/var/store/derby/seg0/c621.dat b/mailbox/var/store/derby/seg0/c621.dat new file mode 100644 index 00000000000..604730ec787 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c621.dat differ diff --git a/mailbox/var/store/derby/seg0/c631.dat b/mailbox/var/store/derby/seg0/c631.dat new file mode 100644 index 00000000000..adc4421622c Binary files /dev/null and b/mailbox/var/store/derby/seg0/c631.dat differ diff --git a/mailbox/var/store/derby/seg0/c640.dat b/mailbox/var/store/derby/seg0/c640.dat new file mode 100644 index 00000000000..6b1f5d86597 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c640.dat differ diff --git a/mailbox/var/store/derby/seg0/c651.dat b/mailbox/var/store/derby/seg0/c651.dat new file mode 100644 index 00000000000..64116da3e7c Binary files /dev/null and b/mailbox/var/store/derby/seg0/c651.dat differ diff --git a/mailbox/var/store/derby/seg0/c661.dat b/mailbox/var/store/derby/seg0/c661.dat new file mode 100644 index 00000000000..4f4abf96e9b Binary files /dev/null and b/mailbox/var/store/derby/seg0/c661.dat differ diff --git a/mailbox/var/store/derby/seg0/c671.dat b/mailbox/var/store/derby/seg0/c671.dat new file mode 100644 index 00000000000..25e0b57e2e8 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c671.dat differ diff --git a/mailbox/var/store/derby/seg0/c681.dat b/mailbox/var/store/derby/seg0/c681.dat new file mode 100644 index 00000000000..d711d686ed5 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c681.dat differ diff --git a/mailbox/var/store/derby/seg0/c691.dat b/mailbox/var/store/derby/seg0/c691.dat new file mode 100644 index 00000000000..e838ad52854 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c691.dat differ diff --git a/mailbox/var/store/derby/seg0/c6a1.dat b/mailbox/var/store/derby/seg0/c6a1.dat new file mode 100644 index 00000000000..233b966457f Binary files /dev/null and b/mailbox/var/store/derby/seg0/c6a1.dat differ diff --git a/mailbox/var/store/derby/seg0/c6b1.dat b/mailbox/var/store/derby/seg0/c6b1.dat new file mode 100644 index 00000000000..a6301513932 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c6b1.dat differ diff --git a/mailbox/var/store/derby/seg0/c6c1.dat b/mailbox/var/store/derby/seg0/c6c1.dat new file mode 100644 index 00000000000..e163b53079e Binary files /dev/null and b/mailbox/var/store/derby/seg0/c6c1.dat differ diff --git a/mailbox/var/store/derby/seg0/c6d1.dat b/mailbox/var/store/derby/seg0/c6d1.dat new file mode 100644 index 00000000000..70310b765b7 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c6d1.dat differ diff --git a/mailbox/var/store/derby/seg0/c71.dat b/mailbox/var/store/derby/seg0/c71.dat new file mode 100644 index 00000000000..c0b1303cf68 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c71.dat differ diff --git a/mailbox/var/store/derby/seg0/c81.dat b/mailbox/var/store/derby/seg0/c81.dat new file mode 100644 index 00000000000..799f89699ca Binary files /dev/null and b/mailbox/var/store/derby/seg0/c81.dat differ diff --git a/mailbox/var/store/derby/seg0/c90.dat b/mailbox/var/store/derby/seg0/c90.dat new file mode 100644 index 00000000000..e4a151dd990 Binary files /dev/null and b/mailbox/var/store/derby/seg0/c90.dat differ diff --git a/mailbox/var/store/derby/seg0/ca1.dat b/mailbox/var/store/derby/seg0/ca1.dat new file mode 100644 index 00000000000..667fa2de3fe Binary files /dev/null and b/mailbox/var/store/derby/seg0/ca1.dat differ diff --git a/mailbox/var/store/derby/seg0/cb1.dat b/mailbox/var/store/derby/seg0/cb1.dat new file mode 100644 index 00000000000..98991887ff5 Binary files /dev/null and b/mailbox/var/store/derby/seg0/cb1.dat differ diff --git a/mailbox/var/store/derby/seg0/cc0.dat b/mailbox/var/store/derby/seg0/cc0.dat new file mode 100644 index 00000000000..226872006d7 Binary files /dev/null and b/mailbox/var/store/derby/seg0/cc0.dat differ diff --git a/mailbox/var/store/derby/seg0/cd1.dat b/mailbox/var/store/derby/seg0/cd1.dat new file mode 100644 index 00000000000..d919a1b0e32 Binary files /dev/null and b/mailbox/var/store/derby/seg0/cd1.dat differ diff --git a/mailbox/var/store/derby/seg0/ce1.dat b/mailbox/var/store/derby/seg0/ce1.dat new file mode 100644 index 00000000000..299e0c4095c Binary files /dev/null and b/mailbox/var/store/derby/seg0/ce1.dat differ diff --git a/mailbox/var/store/derby/seg0/cf0.dat b/mailbox/var/store/derby/seg0/cf0.dat new file mode 100644 index 00000000000..fb40ee42191 Binary files /dev/null and b/mailbox/var/store/derby/seg0/cf0.dat differ diff --git a/mailbox/var/store/derby/service.properties b/mailbox/var/store/derby/service.properties new file mode 100644 index 00000000000..39bdfc88ec9 --- /dev/null +++ b/mailbox/var/store/derby/service.properties @@ -0,0 +1,23 @@ +#/home/sami/go/src/github.com/ops-center/james-project/mailbox/var/store/derby +# ******************************************************************** +# *** Please do NOT edit this file. *** +# *** CHANGING THE CONTENT OF THIS FILE MAY CAUSE DATA CORRUPTION. *** +# ******************************************************************** +#Wed Aug 07 13:35:41 BDT 2024 +SyscolumnsIdentifier=144 +SyscolumnsIndex1Identifier=161 +SyscolumnsIndex2Identifier=177 +SysconglomeratesIdentifier=32 +SysconglomeratesIndex1Identifier=49 +SysconglomeratesIndex2Identifier=65 +SysconglomeratesIndex3Identifier=81 +SysschemasIdentifier=192 +SysschemasIndex1Identifier=209 +SysschemasIndex2Identifier=225 +SystablesIdentifier=96 +SystablesIndex1Identifier=113 +SystablesIndex2Identifier=129 +derby.serviceLocale=en_US +derby.serviceProtocol=org.apache.derby.database.Database +derby.storage.propertiesId=16 +#--- last line, don't put anything after this line --- diff --git a/mailbox/var/store/lucene/write.lock b/mailbox/var/store/lucene/write.lock new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mailet/amqp/pom.xml b/mailet/amqp/pom.xml index ad2bca1bf0d..df8a78af041 100644 --- a/mailet/amqp/pom.xml +++ b/mailet/amqp/pom.xml @@ -34,7 +34,6 @@ Provides a mailet forwarding mail attributes over AMQP 2021 - ${james.groupId} @@ -141,4 +140,4 @@ - \ No newline at end of file + diff --git a/mpt/impl/imap-mailbox/jpa/derby.log b/mpt/impl/imap-mailbox/jpa/derby.log new file mode 100644 index 00000000000..0fe14d28384 --- /dev/null +++ b/mpt/impl/imap-mailbox/jpa/derby.log @@ -0,0 +1,3263 @@ +---------------------------------------------------------------- +Wed Aug 07 13:39:16 BDT 2024: +Booting Derby version The Apache Software Foundation - Apache Derby - 10.14.2.0 - (1828579): instance a816c00e-0191-2bc7-1bf4-0000128deab0 +on database directory memory:/home/sami/go/src/github.com/ops-center/james-project/mpt/impl/imap-mailbox/jpa/mailboxintegrationtesting with class loader jdk.internal.loader.ClassLoaders$AppClassLoader@4e0e2f2a +Loaded from file:/home/sami/.m2/repository/org/apache/derby/derby/10.14.2.0/derby-10.14.2.0.jar +java.vendor=Oracle Corporation +java.runtime.version=21.0.2+13-LTS-58 +user.dir=/home/sami/go/src/github.com/ops-center/james-project/mpt/impl/imap-mailbox/jpa +os.name=Linux +os.arch=amd64 +os.version=6.5.0-45-generic +derby.system.home=null +Database Class Loader started - derby.database.classpath='' +Wed Aug 07 13:39:48 BDT 2024 Thread[#58,boundedElastic-5,5,main] (XID = 4400), (SESSIONID = 7), (DATABASE = memory:mailboxintegrationtesting), (DRDAID = null), Cleanup action starting +Wed Aug 07 13:39:48 BDT 2024 Thread[#58,boundedElastic-5,5,main] (XID = 4400), (SESSIONID = 7), (DATABASE = memory:mailboxintegrationtesting), (DRDAID = null), Failed Statement is: SELECT t0.CURRENTQUOTA_MESSAGECOUNT, t0.CURRENTQUOTA_SIZE FROM APP.JAMES_QUOTA_CURRENTQUOTA t0 WHERE t0.CURRENTQUOTA_QUOTAROOT = ? with 1 parameters begin parameter #1: #private&imapuser :end parameter +ERROR 08000: Connection closed by unknown interrupt. + at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) + at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) + at org.apache.derby.iapi.util.InterruptStatus.setInterrupted(Unknown Source) + at org.apache.derby.iapi.util.InterruptStatus.throwIf(Unknown Source) + at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.checkCancellationFlag(Unknown Source) + at org.apache.derby.impl.sql.execute.TableScanResultSet.getNextRowCore(Unknown Source) + at org.apache.derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowCore(Unknown Source) + at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(Unknown Source) + at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(Unknown Source) + at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown Source) + at org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source) + at org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + at org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + at org.apache.openjpa.lib.jdbc.DelegatingResultSet.next(DelegatingResultSet.java:113) + at org.apache.openjpa.jdbc.sql.ResultSetResult.nextInternal(ResultSetResult.java:236) + at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.nextInternal(SelectImpl.java:2608) + at org.apache.openjpa.jdbc.sql.AbstractResult.next(AbstractResult.java:185) + at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.isEmptyResult(JDBCStoreManager.java:516) + at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:377) + at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:325) + at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:123) + at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:59) + at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1118) + at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1076) + at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:992) + at org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:246) + at org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:582) + at org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.retrieveUserQuota(JpaCurrentQuotaManager.java:129) + at org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.lambda$getCurrentQuotas$5(JpaCurrentQuotaManager.java:76) + at reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:137) + at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) + at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) + at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) + at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) + at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) + at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onSubscribe(FluxDoFinally.java:107) + at reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:205) + at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) + at reactor.core.publisher.FluxFromMonoOperator.subscribe(FluxFromMonoOperator.java:77) + at reactor.core.publisher.FluxUsing.subscribe(FluxUsing.java:114) + at reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) + at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57) + at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:80) + at reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) + at reactor.core.publisher.Mono.subscribe(Mono.java:4496) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335) + at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201) + at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + at reactor.core.publisher.FluxArray$ArraySubscription.slowPath(FluxArray.java:126) + at reactor.core.publisher.FluxArray$ArraySubscription.request(FluxArray.java:99) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + at reactor.core.publisher.FluxMerge.subscribe(FluxMerge.java:73) + at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:264) + at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) + at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) + at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) + at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.onNext(FluxSubscribeOn.java:151) + at reactor.core.publisher.FluxUsing$UsingFuseableSubscriber.onNext(FluxUsing.java:353) + at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + at reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:252) + at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) + at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +--------------- +Stack traces for all live threads: +Thread name=boundedElastic-3 id=56 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=jvm-path-locker-4 id=57 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Reference Handler id=9 priority=10 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.2/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.2/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread name=Notification Thread id=28 priority=9 state=RUNNABLE isdaemon=true + +Thread name=surefire-forkedjvm-stream-flusher id=29 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=jvm-path-locker-10 id=63 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=gradle-enterprise-test-client-gradle-enterprise-test-listener id=44 priority=5 state=WAITING isdaemon=false + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:420) + app//com.gradle.maven.scan.extension.test.listener.obfuscated.k.a.a(SourceFile:130) + app//com.gradle.maven.scan.extension.test.listener.obfuscated.k.a.b(SourceFile:93) + app//com.gradle.maven.scan.extension.test.listener.obfuscated.k.a$$Lambda/0x00007d2d2810cd98.run(Unknown Source) + java.base@21.0.2/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-evictor-2 id=52 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-5 id=58 priority=5 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.2/java.lang.Thread.getAllStackTraces(Thread.java:2521) + app//org.apache.derby.iapi.error.ThreadDump.getStackDumpString(Unknown Source) + java.base@21.0.2/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder) + java.base@21.0.2/java.lang.invoke.LambdaForm$MH/0x00007d2d28000400.invoke(LambdaForm$MH) + java.base@21.0.2/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.2/java.lang.reflect.Method.invoke(Method.java:580) + app//org.apache.derby.iapi.error.ExceptionUtil$1.run(Unknown Source) + java.base@21.0.2/java.security.AccessController.executePrivileged(AccessController.java:809) + java.base@21.0.2/java.security.AccessController.doPrivileged(AccessController.java:571) + app//org.apache.derby.iapi.error.ExceptionUtil.dumpThreads(Unknown Source) + app//org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(Unknown Source) + app//org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(Unknown Source) + app//org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source) + app//org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + app//org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + app//org.apache.openjpa.lib.jdbc.DelegatingResultSet.next(DelegatingResultSet.java:113) + app//org.apache.openjpa.jdbc.sql.ResultSetResult.nextInternal(ResultSetResult.java:236) + app//org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.nextInternal(SelectImpl.java:2608) + app//org.apache.openjpa.jdbc.sql.AbstractResult.next(AbstractResult.java:185) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.isEmptyResult(JDBCStoreManager.java:516) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:377) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:325) + app//org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:123) + app//org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:59) + app//org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1118) + app//org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1076) + app//org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:992) + app//org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:246) + app//org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:582) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.retrieveUserQuota(JpaCurrentQuotaManager.java:129) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.lambda$getCurrentQuotas$5(JpaCurrentQuotaManager.java:76) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager$$Lambda/0x00007d2d28554a30.call(Unknown Source) + app//reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:137) + app//reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) + app//reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) + app//reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) + app//reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) + app//reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) + app//reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onSubscribe(FluxDoFinally.java:107) + app//reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:205) + app//reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) + app//reactor.core.publisher.FluxFromMonoOperator.subscribe(FluxFromMonoOperator.java:77) + app//reactor.core.publisher.FluxUsing.subscribe(FluxUsing.java:114) + app//reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) + app//reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57) + app//reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:80) + app//reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4496) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + app//reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335) + app//reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + app//reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201) + app//reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + app//reactor.core.publisher.FluxArray$ArraySubscription.slowPath(FluxArray.java:126) + app//reactor.core.publisher.FluxArray$ArraySubscription.request(FluxArray.java:99) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + app//reactor.core.publisher.FluxMerge.subscribe(FluxMerge.java:73) + app//reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:264) + app//reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) + app//reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) + app//reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) + app//reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.onNext(FluxSubscribeOn.java:151) + app//reactor.core.publisher.FluxUsing$UsingFuseableSubscriber.onNext(FluxUsing.java:353) + app//reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + app//reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + app//reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + app//reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:252) + app//reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) + app//reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) + java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=main id=1 priority=5 state=WAITING isdaemon=false + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:221) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099) + java.base@21.0.2/java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230) + app//reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:90) + app//reactor.core.publisher.Mono.block(Mono.java:1728) + app//org.apache.james.imap.api.process.ImapProcessor.process(ImapProcessor.java:49) + app//org.apache.james.imap.processor.DefaultProcessor.process(DefaultProcessor.java:150) + app//org.apache.james.imap.main.AbstractImapRequestHandler.doProcessRequest(AbstractImapRequestHandler.java:57) + app//org.apache.james.imap.decode.main.ImapRequestStreamHandler.handleRequest(ImapRequestStreamHandler.java:81) + app//org.apache.james.mpt.host.JamesImapHostSystem$Session.readLine(JamesImapHostSystem.java:146) + app//org.apache.james.mpt.protocol.ProtocolSession$ServerResponse.readLine(ProtocolSession.java:380) + app//org.apache.james.mpt.protocol.ProtocolSession$ServerResponse.checkResponse(ProtocolSession.java:349) + app//org.apache.james.mpt.protocol.ProtocolSession$ServerResponse.testProtocol(ProtocolSession.java:340) + app//org.apache.james.mpt.protocol.ProtocolSession.runSessions(ProtocolSession.java:105) + app//org.apache.james.mpt.script.GenericSimpleScriptedTestProtocol.runSessions(GenericSimpleScriptedTestProtocol.java:178) + app//org.apache.james.mpt.script.GenericSimpleScriptedTestProtocol.run(GenericSimpleScriptedTestProtocol.java:131) + app//org.apache.james.mpt.imapmailbox.suite.Rename.testRenameHierarchyIT(Rename.java:88) + java.base@21.0.2/java.lang.invoke.LambdaForm$DMH/0x00007d2d28408400.invokeVirtual(LambdaForm$DMH) + java.base@21.0.2/java.lang.invoke.LambdaForm$MH/0x00007d2d2849c400.invoke(LambdaForm$MH) + java.base@21.0.2/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.2/java.lang.reflect.Method.invoke(Method.java:580) + app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727) + app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) + app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156) + app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) + app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00007d2d280a92e8.apply(Unknown Source) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda/0x00007d2d280a96f8.apply(Unknown Source) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda/0x00007d2d28132f20.apply(Unknown Source) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00007d2d2849b110.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00007d2d28125148.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00007d2d28124f28.invoke(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00007d2d28124b10.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x00007d2d28125c38.accept(Unknown Source) + java.base@21.0.2/java.util.ArrayList.forEach(ArrayList.java:1596) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00007d2d28125148.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00007d2d28124f28.invoke(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00007d2d28124b10.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x00007d2d28125c38.accept(Unknown Source) + java.base@21.0.2/java.util.ArrayList.forEach(ArrayList.java:1596) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00007d2d28125148.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00007d2d28124f28.invoke(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00007d2d28124b10.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) + app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) + app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda/0x00007d2d280bcf78.accept(Unknown Source) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54) + app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) + app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) + app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) + app//org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:56) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.lambda$execute$1(JUnitPlatformProvider.java:191) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00007d2d2803c240.accept(Unknown Source) + java.base@21.0.2/java.util.Iterator.forEachRemaining(Iterator.java:133) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:186) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:148) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:118) + app//org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) + app//org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) + app//org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) + app//org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) + +Thread name=Finalizer id=10 priority=8 state=WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + java.base@21.0.2/java.lang.Object.wait(Object.java:339) + java.base@21.0.2/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.2/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.2/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread name=surefire-forkedjvm-command-thread id=42 priority=5 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.io.FileInputStream.readBytes(Native Method) + java.base@21.0.2/java.io.FileInputStream.read(FileInputStream.java:287) + java.base@21.0.2/java.io.BufferedInputStream.read1(BufferedInputStream.java:345) + java.base@21.0.2/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) + java.base@21.0.2/java.io.BufferedInputStream.read(BufferedInputStream.java:399) + java.base@21.0.2/java.io.BufferedInputStream.fill(BufferedInputStream.java:291) + java.base@21.0.2/java.io.BufferedInputStream.read1(BufferedInputStream.java:347) + java.base@21.0.2/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) + java.base@21.0.2/java.io.BufferedInputStream.read(BufferedInputStream.java:399) + app//org.apache.maven.surefire.api.util.internal.Channels$3.readImpl(Channels.java:169) + app//org.apache.maven.surefire.api.util.internal.AbstractNoninterruptibleReadableChannel.read(AbstractNoninterruptibleReadableChannel.java:50) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.read(AbstractStreamDecoder.java:430) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.read(AbstractStreamDecoder.java:419) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.readMessageType(AbstractStreamDecoder.java:116) + app//org.apache.maven.surefire.booter.stream.CommandDecoder.decode(CommandDecoder.java:77) + app//org.apache.maven.surefire.booter.spi.CommandChannelDecoder.decode(CommandChannelDecoder.java:60) + app//org.apache.maven.surefire.booter.CommandReader$CommandRunnable.run(CommandReader.java:290) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=derby.rawStoreDaemon id=49 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + app//org.apache.derby.impl.services.daemon.BasicDaemon.rest(Unknown Source) + app//org.apache.derby.impl.services.daemon.BasicDaemon.run(Unknown Source) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Common-Cleaner id=26 priority=8 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1847) + java.base@21.0.2/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.2/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.2/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread name=boundedElastic-evictor-3 id=54 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=blocking-call-wrapper-7 id=60 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Signal Dispatcher id=11 priority=9 state=RUNNABLE isdaemon=true + +Thread name=boundedElastic-2 id=55 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-8 id=61 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Timer-0 id=46 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + java.base@21.0.2/java.lang.Object.wait(Object.java:339) + java.base@21.0.2/java.util.TimerThread.mainLoop(Timer.java:537) + java.base@21.0.2/java.util.TimerThread.run(Timer.java:516) + +Thread name=boundedElastic-evictor-1 id=51 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=blocking-call-wrapper-1 id=53 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-9 id=62 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-6 id=59 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + + +--------------- + +Cleanup action completed +che.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:992) + at org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:246) + at org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:582) + at org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.retrieveUserQuota(JpaCurrentQuotaManager.java:129) + at org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.lambda$getCurrentQuotas$5(JpaCurrentQuotaManager.java:76) + at reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:137) + at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) + at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) + at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) + at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) + at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) + at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onSubscribe(FluxDoFinally.java:107) + at reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:205) + at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) + at reactor.core.publisher.FluxFromMonoOperator.subscribe(FluxFromMonoOperator.java:77) + at reactor.core.publisher.FluxUsing.subscribe(FluxUsing.java:114) + at reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) + at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57) + at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:80) + at reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) + at reactor.core.publisher.Mono.subscribe(Mono.java:4496) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335) + at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201) + at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + at reactor.core.publisher.FluxArray$ArraySubscription.slowPath(FluxArray.java:126) + at reactor.core.publisher.FluxArray$ArraySubscription.request(FluxArray.java:99) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + at reactor.core.publisher.FluxMerge.subscribe(FluxMerge.java:73) + at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:264) + at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) + at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) + at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) + at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.onNext(FluxSubscribeOn.java:151) + at reactor.core.publisher.FluxUsing$UsingFuseableSubscriber.onNext(FluxUsing.java:353) + at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + at reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:252) + at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) + at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +--------------- +Stack traces for all live threads: +Thread name=boundedElastic-2 id=55 priority=5 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.2/java.lang.Thread.getAllStackTraces(Thread.java:2521) + app//org.apache.derby.iapi.error.ThreadDump.getStackDumpString(Unknown Source) + java.base@21.0.2/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder) + java.base@21.0.2/java.lang.invoke.LambdaForm$MH/0x0000700ec0000400.invoke(LambdaForm$MH) + java.base@21.0.2/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.2/java.lang.reflect.Method.invoke(Method.java:580) + app//org.apache.derby.iapi.error.ExceptionUtil$1.run(Unknown Source) + java.base@21.0.2/java.security.AccessController.executePrivileged(AccessController.java:809) + java.base@21.0.2/java.security.AccessController.doPrivileged(AccessController.java:571) + app//org.apache.derby.iapi.error.ExceptionUtil.dumpThreads(Unknown Source) + app//org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(Unknown Source) + app//org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(Unknown Source) + app//org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source) + app//org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + app//org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + app//org.apache.openjpa.lib.jdbc.DelegatingResultSet.next(DelegatingResultSet.java:113) + app//org.apache.openjpa.jdbc.sql.ResultSetResult.nextInternal(ResultSetResult.java:236) + app//org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.nextInternal(SelectImpl.java:2608) + app//org.apache.openjpa.jdbc.sql.AbstractResult.next(AbstractResult.java:185) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.isEmptyResult(JDBCStoreManager.java:516) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:377) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:325) + app//org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:123) + app//org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:59) + app//org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1118) + app//org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1076) + app//org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:992) + app//org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:246) + app//org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:582) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.retrieveUserQuota(JpaCurrentQuotaManager.java:129) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.lambda$getCurrentQuotas$5(JpaCurrentQuotaManager.java:76) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager$$Lambda/0x0000700ec0539428.call(Unknown Source) + app//reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:137) + app//reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) + app//reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) + app//reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) + app//reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) + app//reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) + app//reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onSubscribe(FluxDoFinally.java:107) + app//reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:205) + app//reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) + app//reactor.core.publisher.FluxFromMonoOperator.subscribe(FluxFromMonoOperator.java:77) + app//reactor.core.publisher.FluxUsing.subscribe(FluxUsing.java:114) + app//reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) + app//reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57) + app//reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:80) + app//reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4496) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + app//reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335) + app//reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + app//reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201) + app//reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + app//reactor.core.publisher.FluxArray$ArraySubscription.slowPath(FluxArray.java:126) + app//reactor.core.publisher.FluxArray$ArraySubscription.request(FluxArray.java:99) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + app//reactor.core.publisher.FluxMerge.subscribe(FluxMerge.java:73) + app//reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:264) + app//reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) + app//reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) + app//reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) + app//reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.onNext(FluxSubscribeOn.java:151) + app//reactor.core.publisher.FluxUsing$UsingFuseableSubscriber.onNext(FluxUsing.java:353) + app//reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + app//reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + app//reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + app//reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:252) + app//reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) + app//reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) + java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=surefire-forkedjvm-stream-flusher id=29 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Finalizer id=10 priority=8 state=WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + java.base@21.0.2/java.lang.Object.wait(Object.java:339) + java.base@21.0.2/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.2/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.2/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread name=surefire-forkedjvm-command-thread id=42 priority=5 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.io.FileInputStream.readBytes(Native Method) + java.base@21.0.2/java.io.FileInputStream.read(FileInputStream.java:287) + java.base@21.0.2/java.io.BufferedInputStream.read1(BufferedInputStream.java:345) + java.base@21.0.2/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) + java.base@21.0.2/java.io.BufferedInputStream.read(BufferedInputStream.java:399) + java.base@21.0.2/java.io.BufferedInputStream.fill(BufferedInputStream.java:291) + java.base@21.0.2/java.io.BufferedInputStream.read1(BufferedInputStream.java:347) + java.base@21.0.2/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) + java.base@21.0.2/java.io.BufferedInputStream.read(BufferedInputStream.java:399) + app//org.apache.maven.surefire.api.util.internal.Channels$3.readImpl(Channels.java:169) + app//org.apache.maven.surefire.api.util.internal.AbstractNoninterruptibleReadableChannel.read(AbstractNoninterruptibleReadableChannel.java:50) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.read(AbstractStreamDecoder.java:430) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.read(AbstractStreamDecoder.java:419) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.readMessageType(AbstractStreamDecoder.java:116) + app//org.apache.maven.surefire.booter.stream.CommandDecoder.decode(CommandDecoder.java:77) + app//org.apache.maven.surefire.booter.spi.CommandChannelDecoder.decode(CommandChannelDecoder.java:60) + app//org.apache.maven.surefire.booter.CommandReader$CommandRunnable.run(CommandReader.java:290) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Timer-0 id=46 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + java.base@21.0.2/java.lang.Object.wait(Object.java:339) + java.base@21.0.2/java.util.TimerThread.mainLoop(Timer.java:537) + java.base@21.0.2/java.util.TimerThread.run(Timer.java:516) + +Thread name=boundedElastic-evictor-1 id=51 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.utWed Aug 07 13:39:46 BDT 2024 Thread[#78,boundedElastic-9,5,main] (XID = 3174), (SESSIONID = 11), (DATABASE = memory:mailboxintegrationtesting), (DRDAID = null), Cleanup action starting +Wed Aug 07 13:39:46 BDT 2024 Thread[#78,boundedElastic-9,5,main] (XID = 3174), (SESSIONID = 11), (DATABASE = memory:mailboxintegrationtesting), (DRDAID = null), Failed Statement is: SELECT t0.CURRENTQUOTA_MESSAGECOUNT, t0.CURRENTQUOTA_SIZE FROM APP.JAMES_QUOTA_CURRENTQUOTA t0 WHERE t0.CURRENTQUOTA_QUOTAROOT = ? with 1 parameters begin parameter #1: #private&imapuser :end parameter +ERROR 08000: Connection closed by unknown interrupt. + at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) + at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) + at org.apache.derby.iapi.util.InterruptStatus.setInterrupted(Unknown Source) + at org.apache.derby.iapi.util.InterruptStatus.throwIf(Unknown Source) + at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.checkCancellationFlag(Unknown Source) + at org.apache.derby.impl.sql.execute.TableScanResultSet.getNextRowCore(Unknown Source) + at org.apache.derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowCore(Unknown Source) + at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(Unknown Source) + at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(Unknown Source) + at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown Source) + at org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source) + at org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + at org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + at org.apache.openjpa.lib.jdbc.DelegatingResultSet.next(DelegatingResultSet.java:113) + at org.apache.openjpa.jdbc.sql.ResultSetResult.nextInternal(ResultSetResult.java:236) + at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.nextInternal(SelectImpl.java:2608) + at org.apache.openjpa.jdbc.sql.AbstractResult.next(AbstractResult.java:185) + at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.isEmptyResult(JDBCStoreManager.java:516) + at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:377) + at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:325) + at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:123) + at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:59) + at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1118) + at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1076) + at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:992) + at org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:246) + at org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:582) + at org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.retrieveUserQuota(JpaCurrentQuotaManager.java:129) + at org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.lambda$getCurrentQuotas$5(JpaCurrentQuotaManager.java:76) + at reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:137) + at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) + at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) + at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) + at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) + at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) + at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onSubscribe(FluxDoFinally.java:107) + at reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:205) + at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) + at reactor.core.publisher.FluxFromMonoOperator.subscribe(FluxFromMonoOperator.java:77) + at reactor.core.publisher.FluxUsing.subscribe(FluxUsing.java:114) + at reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) + at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57) + at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:80) + at reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) + at reactor.core.publisher.Mono.subscribe(Mono.java:4496) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335) + at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201) + at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + at reactor.core.publisher.FluxArray$ArraySubscription.slowPath(FluxArray.java:126) + at reactor.core.publisher.FluxArray$ArraySubscription.request(FluxArray.java:99) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + at reactor.core.publisher.FluxMerge.subscribe(FluxMerge.java:73) + at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:264) + at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) + at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) + at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) + at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.onNext(FluxSubscribeOn.java:151) + at reactor.core.publisher.FluxUsing$UsingFuseableSubscriber.onNext(FluxUsing.java:353) + at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + at reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:252) + at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) + at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +--------------- +Stack traces for all live threads: +Thread name=parallel-13 id=73 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-3 id=56 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-6 id=66 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-9 id=69 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-8 id=68 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-evictor-2 id=52 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-6 id=59 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Notification Thread id=28 priority=9 state=RUNNABLE isdaemon=true + +Thread name=parallel-2 id=62 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-9 id=78 priority=5 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.2/java.lang.Thread.getAllStackTraces(Thread.java:2521) + app//org.apache.derby.iapi.error.ThreadDump.getStackDumpString(Unknown Source) + java.base@21.0.2/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder) + java.base@21.0.2/java.lang.invoke.LambdaForm$MH/0x0000715af4000400.invoke(LambdaForm$MH) + java.base@21.0.2/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.2/java.lang.reflect.Method.invoke(Method.java:580) + app//org.apache.derby.iapi.error.ExceptionUtil$1.run(Unknown Source) + java.base@21.0.2/java.security.AccessController.executePrivileged(AccessController.java:809) + java.base@21.0.2/java.security.AccessController.doPrivileged(AccessController.java:571) + app//org.apache.derby.iapi.error.ExceptionUtil.dumpThreads(Unknown Source) + app//org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(Unknown Source) + app//org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(Unknown Source) + app//org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source) + app//org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + app//org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + app//org.apache.openjpa.lib.jdbc.DelegatingResultSet.next(DelegatingResultSet.java:113) + app//org.apache.openjpa.jdbc.sql.ResultSetResult.nextInternal(ResultSetResult.java:236) + app//org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.nextInternal(SelectImpl.java:2608) + app//org.apache.openjpa.jdbc.sql.AbstractResult.next(AbstractResult.java:185) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.isEmptyResult(JDBCStoreManager.java:516) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:377) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:325) + app//org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:123) + app//org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:59) + app//org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1118) + app//org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1076) + app//org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:992) + app//org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:246) + app//org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:582) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.retrieveUserQuota(JpaCurrentQuotaManager.java:129) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.lambda$getCurrentQuotas$5(JpaCurrentQuotaManager.java:76) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager$$Lambda/0x0000715af4544078.call(Unknown Source) + app//reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:137) + app//reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) + app//reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) + app//reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) + app//reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) + app//reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) + app//reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onSubscribe(FluxDoFinally.java:107) + app//reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:205) + app//reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) + app//reactor.core.publisher.FluxFromMonoOperator.subscribe(FluxFromMonoOperator.java:77) + app//reactor.core.publisher.FluxUsing.subscribe(FluxUsing.java:114) + app//reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) + app//reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57) + app//reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:80) + app//reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4496) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + app//reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335) + app//reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + app//reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201) + app//reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + app//reactor.core.publisher.FluxArray$ArraySubscription.slowPath(FluxArray.java:126) + app//reactor.core.publisher.FluxArray$ArraySubscription.request(FluxArray.java:99) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + app//reactor.core.publisher.FluxMerge.subscribe(FluxMerge.java:73) + app//reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:264) + app//reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) + app//reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) + app//reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) + app//reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.onNext(FluxSubscribeOn.java:151) + app//reactor.core.publisher.FluxUsing$UsingFuseableSubscriber.onNext(FluxUsing.java:353) + app//reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + app//reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + app//reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + app//reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:252) + app//reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) + app//reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) + java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=surefire-forkedjvm-command-thread id=42 priority=5 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.io.FileInputStream.readBytes(Native Method) + java.base@21.0.2/java.io.FileInputStream.read(FileInputStream.java:287) + java.base@21.0.2/java.io.BufferedInputStream.read1(BufferedInputStream.java:345) + java.base@21.0.2/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) + java.base@21.0.2/java.io.BufferedInputStream.read(BufferedInputStream.java:399) + java.base@21.0.2/java.io.BufferedInputStream.fill(BufferedInputStream.java:291) + java.base@21.0.2/java.io.BufferedInputStream.read1(BufferedInputStream.java:347) + java.base@21.0.2/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) + java.base@21.0.2/java.io.BufferedInputStream.read(BufferedInputStream.java:399) + app//org.apache.maven.surefire.api.util.internal.Channels$3.readImpl(Channels.java:169) + app//org.apache.maven.surefire.api.util.internal.AbstractNoninterruptibleReadableChannel.read(AbstractNoninterruptibleReadableChannel.java:50) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.read(AbstractStreamDecoder.java:430) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.read(AbstractStreamDecoder.java:419) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.readMessageType(AbstractStreamDecoder.java:116) + app//org.apache.maven.surefire.booter.stream.CommandDecoder.decode(CommandDecoder.java:77) + app//org.apache.maven.surefire.booter.spi.CommandChannelDecoder.decode(CommandChannelDecoder.java:60) + app//org.apache.maven.surefire.booter.CommandReader$CommandRunnable.run(CommandReader.java:290) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Signal Dispatcher id=11 priority=9 state=RUNNABLE isdaemon=true + +Thread name=Reference Handler id=9 priority=10 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.2/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.2/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread name=parallel-4 id=64 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-12 id=72 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=surefire-forkedjvm-stream-flusher id=29 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-evictor-3 id=54 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-7 id=67 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-2 id=55 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-11 id=71 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-3 id=63 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=gradle-enterprise-test-client-gradle-enterprise-test-listener id=44 priority=5 state=WAITING isdaemon=false + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:420) + app//com.gradle.maven.scan.extension.test.listener.obfuscated.k.a.a(SourceFile:130) + app//com.gradle.maven.scan.extension.test.listener.obfuscated.k.a.b(SourceFile:93) + app//com.gradle.maven.scan.extension.test.listener.obfuscated.k.a$$Lambda/0x0000715af4108d98.run(Unknown Source) + java.base@21.0.2/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Common-Cleaner id=26 priority=8 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1847) + java.base@21.0.2/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.2/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.2/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread name=boundedElastic-8 id=77 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=blocking-call-wrapper-1 id=53 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-16 id=76 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Finalizer id=10 priority=8 state=WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + java.base@21.0.2/java.lang.Object.wait(Object.java:339) + java.base@21.0.2/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.2/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.2/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread name=parallel-14 id=74 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=jvm-path-locker-4 id=57 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-1 id=61 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-15 id=75 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=main id=1 priority=5 state=WAITING isdaemon=false + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:221) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099) + java.base@21.0.2/java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230) + app//reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:90) + app//reactor.core.publisher.Mono.block(Mono.java:1728) + app//org.apache.james.imap.api.process.ImapProcessor.process(ImapProcessor.java:49) + app//org.apache.james.imap.processor.DefaultProcessor.process(DefaultProcessor.java:150) + app//org.apache.james.imap.main.AbstractImapRequestHandler.doProcessRequest(AbstractImapRequestHandler.java:57) + app//org.apache.james.imap.decode.main.ImapRequestStreamHandler.handleRequest(ImapRequestStreamHandler.java:81) + app//org.apache.james.mpt.host.JamesImapHostSystem$Session.readLine(JamesImapHostSystem.java:146) + app//org.apache.james.mpt.protocol.ProtocolSession$ServerResponse.readLine(ProtocolSession.java:380) + app//org.apache.james.mpt.protocol.ProtocolSession$ServerResponse.checkResponse(ProtocolSession.java:349) + app//org.apache.james.mpt.protocol.ProtocolSession$ServerResponse.testProtocol(ProtocolSession.java:340) + app//org.apache.james.mpt.protocol.ProtocolSession.runSessions(ProtocolSession.java:105) + app//org.apache.james.mpt.script.GenericSimpleScriptedTestProtocol.runSessions(GenericSimpleScriptedTestProtocol.java:176) + app//org.apache.james.mpt.script.GenericSimpleScriptedTestProtocol.run(GenericSimpleScriptedTestProtocol.java:131) + app//org.apache.james.mpt.imapmailbox.suite.AuthenticatedState.testSubscribeITALY(AuthenticatedState.java:232) + java.base@21.0.2/java.lang.invoke.LambdaForm$DMH/0x0000715af4400c00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.2/java.lang.invoke.LambdaForm$MH/0x0000715af449c400.invoke(LambdaForm$MH) + java.base@21.0.2/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.2/java.lang.reflect.Method.invoke(Method.java:580) + app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727) + app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) + app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156) + app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) + app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x0000715af40a90c8.apply(Unknown Source) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda/0x0000715af40a94d8.apply(Unknown Source) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda/0x0000715af4133388.apply(Unknown Source) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x0000715af449fc10.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124f30.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124d10.invoke(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af41248f8.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x0000715af4125a20.accept(Unknown Source) + java.base@21.0.2/java.util.ArrayList.forEach(ArrayList.java:1596) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124f30.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124d10.invoke(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af41248f8.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x0000715af4125a20.accept(Unknown Source) + java.base@21.0.2/java.util.ArrayList.forEach(ArrayList.java:1596) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124f30.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124d10.invoke(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af41248f8.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) + app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) + app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda/0x0000715af40bcb00.accept(Unknown Source) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54) + app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) + app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) + app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) + app//org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:56) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.lambda$execute$1(JUnitPlatformProvider.java:191) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x0000715af403c240.accept(Unknown Source) + java.base@21.0.2/java.util.Iterator.forEachRemaining(Iterator.java:133) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:186) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:148) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:118) + app//org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) + app//org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) + app//org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) + app//org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) + +Thread name=derby.rawStoreDaemon id=49 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + app//org.apache.derby.impl.services.daemon.BasicDaemon.rest(Unknown Source) + app//org.apache.derby.impl.services.daemon.BasicDaemon.run(Unknown Source) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=blocking-call-wrapper-10 id=79 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:221) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099) + java.base@21.0.2/java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230) + app//reactor.core.publisher.BlockingOptionalMonoSubscriber.blockingGet(BlockingOptionalMonoSubscriber.java:111) + app//reactor.core.publisher.Mono.blockOptional(Mono.java:1778) + app//org.apache.james.mailbox.store.MailboxReactorUtils.blockOptional(MailboxReactorUtils.java:48) + app//org.apache.james.mailbox.store.StoreMailboxManager.createMailbox(StoreMailboxManager.java:335) + app//org.apache.james.imap.processor.AbstractAuthProcessor.provisionMailbox(AbstractAuthProcessor.java:205) + app//org.apache.james.imap.processor.AbstractAuthProcessor.provisionInbox(AbstractAuthProcessor.java:188) + app//org.apache.james.imap.processor.AbstractAuthProcessor.doAuth(AbstractAuthProcessor.java:91) + app//org.apache.james.imap.processor.LoginProcessor.processRequest(LoginProcessor.java:59) + app//org.apache.james.imap.processor.LoginProcessor.processRequest(LoginProcessor.java:43) + app//org.apache.james.imap.processor.AbstractMailboxProcessor.lambda$processRequestReactive$13(AbstractMailboxProcessor.java:358) + app//org.apache.james.imap.processor.AbstractMailboxProcessor$$Lambda/0x0000715af44ffc28.run(Unknown Source) + app//reactor.core.publisher.MonoRunnable.subscribe(MonoRunnable.java:49) + app//reactor.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:126) + app//reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84) + app//reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37) + java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Timer-0 id=46 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + java.base@21.0.2/java.lang.Object.wait(Object.java:339) + java.base@21.0.2/java.util.TimerThread.mainLoop(Timer.java:537) + java.base@21.0.2/java.util.TimerThread.run(Timer.java:516) + +Thread name=boundedElastic-5 id=58 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-10 id=70 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-evictor-1 id=51 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=jvm-path-locker-7 id=60 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-5 id=65 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + + +--------------- + +Cleanup action completed +Wed Aug 07 13:39:47 BDT 2024 Thread[#59,boundedElastic-6,5,main] (XID = 3565), (SESSIONID = 7), (DATABASE = memory:mailboxintegrationtesting), (DRDAID = null), Cleanup action starting +Wed Aug 07 13:39:47 BDT 2024 Thread[#59,boundedElastic-6,5,main] (XID = 3565), (SESSIONID = 7), (DATABASE = memory:mailboxintegrationtesting), (DRDAID = null), Failed Statement is: SELECT t0.CURRENTQUOTA_MESSAGECOUNT, t0.CURRENTQUOTA_SIZE FROM APP.JAMES_QUOTA_CURRENTQUOTA t0 WHERE t0.CURRENTQUOTA_QUOTAROOT = ? with 1 parameters begin parameter #1: #private&imapuser :end parameter +ERROR 08000: Connection closed by unknown interrupt. + at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) + at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) + at org.apache.derby.iapi.util.InterruptStatus.setInterrupted(Unknown Source) + at org.apache.derby.iapi.util.InterruptStatus.throwIf(Unknown Source) + at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.checkCancellationFlag(Unknown Source) + at org.apache.derby.impl.sql.execute.TableScanResultSet.getNextRowCore(Unknown Source) + at org.apache.derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowCore(Unknown Source) + at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(Unknown Source) + at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(Unknown Source) + at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown Source) + at org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source) + at org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + at org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + at org.apache.openjpa.lib.jdbc.DelegatingResultSet.next(DelegatingResultSet.java:113) + at org.apache.openjpa.jdbc.sql.ResultSetResult.nextInternal(ResultSetResult.java:236) + at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.nextInternal(SelectImpl.java:2608) + at org.apache.openjpa.jdbc.sql.AbstractResult.next(AbstractResult.java:185) + at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.isEmptyResult(JDBCStoreManager.java:516) + at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:377) + at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:325) + at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:123) + at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:59) + at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1118) + at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1076) + at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:992) + at org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:246) + at org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:582) + at org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.retrieveUserQuota(JpaCurrentQuotaManager.java:129) + at org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.lambda$getCurrentQuotas$5(JpaCurrentQuotaManager.java:76) + at reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:137) + at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) + at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) + at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) + at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) + at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) + at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onSubscribe(FluxDoFinally.java:107) + at reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:205) + at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) + at reactor.core.publisher.FluxFromMonoOperator.subscribe(FluxFromMonoOperator.java:77) + at reactor.core.publisher.FluxUsing.subscribe(FluxUsing.java:114) + at reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) + at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57) + at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:80) + at reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) + at reactor.core.publisher.Mono.subscribe(Mono.java:4496) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335) + at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201) + at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + at reactor.core.publisher.FluxArray$ArraySubscription.slowPath(FluxArray.java:126) + at reactor.core.publisher.FluxArray$ArraySubscription.request(FluxArray.java:99) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + at reactor.core.publisher.FluxMerge.subscribe(FluxMerge.java:73) + at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:264) + at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) + at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) + at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) + at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.onNext(FluxSubscribeOn.java:151) + at reactor.core.publisher.FluxUsing$UsingFuseableSubscriber.onNext(FluxUsing.java:353) + at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + at reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:252) + at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) + at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +--------------- +Stack traces for all live threads: +Thread name=parallel-13 id=73 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-3 id=56 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-6 id=66 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-9 id=69 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-8 id=68 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-evictor-2 id=52 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-6 id=59 priority=5 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.2/java.lang.Thread.getAllStackTraces(Thread.java:2521) + app//org.apache.derby.iapi.error.ThreadDump.getStackDumpString(Unknown Source) + java.base@21.0.2/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder) + java.base@21.0.2/java.lang.invoke.LambdaForm$MH/0x0000715af4000400.invoke(LambdaForm$MH) + java.base@21.0.2/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.2/java.lang.reflect.Method.invoke(Method.java:580) + app//org.apache.derby.iapi.error.ExceptionUtil$1.run(Unknown Source) + java.base@21.0.2/java.security.AccessController.executePrivileged(AccessController.java:809) + java.base@21.0.2/java.security.AccessController.doPrivileged(AccessController.java:571) + app//org.apache.derby.iapi.error.ExceptionUtil.dumpThreads(Unknown Source) + app//org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(Unknown Source) + app//org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(Unknown Source) + app//org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source) + app//org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + app//org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + app//org.apache.openjpa.lib.jdbc.DelegatingResultSet.next(DelegatingResultSet.java:113) + app//org.apache.openjpa.jdbc.sql.ResultSetResult.nextInternal(ResultSetResult.java:236) + app//org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.nextInternal(SelectImpl.java:2608) + app//org.apache.openjpa.jdbc.sql.AbstractResult.next(AbstractResult.java:185) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.isEmptyResult(JDBCStoreManager.java:516) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:377) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:325) + app//org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:123) + app//org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:59) + app//org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1118) + app//org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1076) + app//org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:992) + app//org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:246) + app//org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:582) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.retrieveUserQuota(JpaCurrentQuotaManager.java:129) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.lambda$getCurrentQuotas$5(JpaCurrentQuotaManager.java:76) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager$$Lambda/0x0000715af4544078.call(Unknown Source) + app//reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:137) + app//reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) + app//reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) + app//reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) + app//reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) + app//reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) + app//reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onSubscribe(FluxDoFinally.java:107) + app//reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:205) + app//reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) + app//reactor.core.publisher.FluxFromMonoOperator.subscribe(FluxFromMonoOperator.java:77) + app//reactor.core.publisher.FluxUsing.subscribe(FluxUsing.java:114) + app//reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) + app//reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57) + app//reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:80) + app//reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4496) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + app//reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335) + app//reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + app//reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201) + app//reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + app//reactor.core.publisher.FluxArray$ArraySubscription.slowPath(FluxArray.java:126) + app//reactor.core.publisher.FluxArray$ArraySubscription.request(FluxArray.java:99) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + app//reactor.core.publisher.FluxMerge.subscribe(FluxMerge.java:73) + app//reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:264) + app//reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) + app//reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) + app//reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) + app//reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.onNext(FluxSubscribeOn.java:151) + app//reactor.core.publisher.FluxUsing$UsingFuseableSubscriber.onNext(FluxUsing.java:353) + app//reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + app//reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + app//reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + app//reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:252) + app//reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) + app//reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) + java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Notification Thread id=28 priority=9 state=RUNNABLE isdaemon=true + +Thread name=parallel-2 id=62 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-9 id=78 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=surefire-forkedjvm-command-thread id=42 priority=5 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.io.FileInputStream.readBytes(Native Method) + java.base@21.0.2/java.io.FileInputStream.read(FileInputStream.java:287) + java.base@21.0.2/java.io.BufferedInputStream.read1(BufferedInputStream.java:345) + java.base@21.0.2/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) + java.base@21.0.2/java.io.BufferedInputStream.read(BufferedInputStream.java:399) + java.base@21.0.2/java.io.BufferedInputStream.fill(BufferedInputStream.java:291) + java.base@21.0.2/java.io.BufferedInputStream.read1(BufferedInputStream.java:347) + java.base@21.0.2/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) + java.base@21.0.2/java.io.BufferedInputStream.read(BufferedInputStream.java:399) + app//org.apache.maven.surefire.api.util.internal.Channels$3.readImpl(Channels.java:169) + app//org.apache.maven.surefire.api.util.internal.AbstractNoninterruptibleReadableChannel.read(AbstractNoninterruptibleReadableChannel.java:50) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.read(AbstractStreamDecoder.java:430) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.read(AbstractStreamDecoder.java:419) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.readMessageType(AbstractStreamDecoder.java:116) + app//org.apache.maven.surefire.booter.stream.CommandDecoder.decode(CommandDecoder.java:77) + app//org.apache.maven.surefire.booter.spi.CommandChannelDecoder.decode(CommandChannelDecoder.java:60) + app//org.apache.maven.surefire.booter.CommandReader$CommandRunnable.run(CommandReader.java:290) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Signal Dispatcher id=11 priority=9 state=RUNNABLE isdaemon=true + +Thread name=Reference Handler id=9 priority=10 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.2/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.2/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread name=parallel-4 id=64 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-12 id=72 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=surefire-forkedjvm-stream-flusher id=29 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-evictor-3 id=54 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-7 id=67 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-2 id=55 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-11 id=71 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-3 id=63 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=gradle-enterprise-test-client-gradle-enterprise-test-listener id=44 priority=5 state=WAITING isdaemon=false + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:420) + app//com.gradle.maven.scan.extension.test.listener.obfuscated.k.a.a(SourceFile:130) + app//com.gradle.maven.scan.extension.test.listener.obfuscated.k.a.b(SourceFile:93) + app//com.gradle.maven.scan.extension.test.listener.obfuscated.k.a$$Lambda/0x0000715af4108d98.run(Unknown Source) + java.base@21.0.2/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Common-Cleaner id=26 priority=8 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1847) + java.base@21.0.2/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.2/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.2/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread name=boundedElastic-8 id=77 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=blocking-call-wrapper-1 id=53 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-16 id=76 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Finalizer id=10 priority=8 state=WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + java.base@21.0.2/java.lang.Object.wait(Object.java:339) + java.base@21.0.2/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.2/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.2/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread name=parallel-14 id=74 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=jvm-path-locker-4 id=57 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-1 id=61 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-15 id=75 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=main id=1 priority=5 state=WAITING isdaemon=false + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:221) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099) + java.base@21.0.2/java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230) + app//reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:90) + app//reactor.core.publisher.Mono.block(Mono.java:1728) + app//org.apache.james.imap.api.process.ImapProcessor.process(ImapProcessor.java:49) + app//org.apache.james.imap.processor.DefaultProcessor.process(DefaultProcessor.java:150) + app//org.apache.james.imap.main.AbstractImapRequestHandler.doProcessRequest(AbstractImapRequestHandler.java:57) + app//org.apache.james.imap.decode.main.ImapRequestStreamHandler.handleRequest(ImapRequestStreamHandler.java:81) + app//org.apache.james.mpt.host.JamesImapHostSystem$Session.readLine(JamesImapHostSystem.java:146) + app//org.apache.james.mpt.protocol.ProtocolSession$ServerResponse.readLine(ProtocolSession.java:380) + app//org.apache.james.mpt.protocol.ProtocolSession$ServerResponse.checkResponse(ProtocolSession.java:349) + app//org.apache.james.mpt.protocol.ProtocolSession$ServerResponse.testProtocol(ProtocolSession.java:340) + app//org.apache.james.mpt.protocol.ProtocolSession.runSessions(ProtocolSession.java:105) + app//org.apache.james.mpt.script.GenericSimpleScriptedTestProtocol.runSessions(GenericSimpleScriptedTestProtocol.java:176) + app//org.apache.james.mpt.script.GenericSimpleScriptedTestProtocol.run(GenericSimpleScriptedTestProtocol.java:131) + app//org.apache.james.mpt.imapmailbox.suite.AuthenticatedState.testListMailboxesITALY(AuthenticatedState.java:218) + java.base@21.0.2/java.lang.invoke.LambdaForm$DMH/0x0000715af4400c00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.2/java.lang.invoke.LambdaForm$MH/0x0000715af449c400.invoke(LambdaForm$MH) + java.base@21.0.2/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.2/java.lang.reflect.Method.invoke(Method.java:580) + app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727) + app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) + app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156) + app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) + app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x0000715af40a90c8.apply(Unknown Source) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda/0x0000715af40a94d8.apply(Unknown Source) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda/0x0000715af4133388.apply(Unknown Source) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x0000715af449fc10.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124f30.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124d10.invoke(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af41248f8.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x0000715af4125a20.accept(Unknown Source) + java.base@21.0.2/java.util.ArrayList.forEach(ArrayList.java:1596) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124f30.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124d10.invoke(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af41248f8.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x0000715af4125a20.accept(Unknown Source) + java.base@21.0.2/java.util.ArrayList.forEach(ArrayList.java:1596) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124f30.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124d10.invoke(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af41248f8.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) + app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) + app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda/0x0000715af40bcb00.accept(Unknown Source) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54) + app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) + app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) + app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) + app//org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:56) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.lambda$execute$1(JUnitPlatformProvider.java:191) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x0000715af403c240.accept(Unknown Source) + java.base@21.0.2/java.util.Iterator.forEachRemaining(Iterator.java:133) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:186) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:148) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:118) + app//org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) + app//org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) + app//org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) + app//org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) + +Thread name=derby.rawStoreDaemon id=49 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + app//org.apache.derby.impl.services.daemon.BasicDaemon.rest(Unknown Source) + app//org.apache.derby.impl.services.daemon.BasicDaemon.run(Unknown Source) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=blocking-call-wrapper-10 id=79 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:221) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099) + java.base@21.0.2/java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230) + app//reactor.core.publisher.BlockingOptionalMonoSubscriber.blockingGet(BlockingOptionalMonoSubscriber.java:111) + app//reactor.core.publisher.Mono.blockOptional(Mono.java:1778) + app//org.apache.james.mailbox.store.MailboxReactorUtils.blockOptional(MailboxReactorUtils.java:48) + app//org.apache.james.mailbox.store.StoreMailboxManager.createMailbox(StoreMailboxManager.java:335) + app//org.apache.james.imap.processor.AbstractAuthProcessor.provisionMailbox(AbstractAuthProcessor.java:205) + app//org.apache.james.imap.processor.AbstractAuthProcessor.provisionInbox(AbstractAuthProcessor.java:188) + app//org.apache.james.imap.processor.AbstractAuthProcessor.doAuth(AbstractAuthProcessor.java:91) + app//org.apache.james.imap.processor.LoginProcessor.processRequest(LoginProcessor.java:59) + app//org.apache.james.imap.processor.LoginProcessor.processRequest(LoginProcessor.java:43) + app//org.apache.james.imap.processor.AbstractMailboxProcessor.lambda$processRequestReactive$13(AbstractMailboxProcessor.java:358) + app//org.apache.james.imap.processor.AbstractMailboxProcessor$$Lambda/0x0000715af44ffc28.run(Unknown Source) + app//reactor.core.publisher.MonoRunnable.subscribe(MonoRunnable.java:49) + app//reactor.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:126) + app//reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84) + app//reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37) + java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Timer-0 id=46 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + java.base@21.0.2/java.lang.Object.wait(Object.java:339) + java.base@21.0.2/java.util.TimerThread.mainLoop(Timer.java:537) + java.base@21.0.2/java.util.TimerThread.run(Timer.java:516) + +Thread name=boundedElastic-5 id=58 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-10 id=70 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-evictor-1 id=51 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=jvm-path-locker-7 id=60 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-5 id=65 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + + +--------------- + +Cleanup action completed +Wed Aug 07 13:39:49 BDT 2024 Thread[#56,boundedElastic-3,5,main] (XID = 4523), (SESSIONID = 15), (DATABASE = memory:mailboxintegrationtesting), (DRDAID = null), Cleanup action starting +Wed Aug 07 13:39:49 BDT 2024 Thread[#56,boundedElastic-3,5,main] (XID = 4523), (SESSIONID = 15), (DATABASE = memory:mailboxintegrationtesting), (DRDAID = null), Failed Statement is: SELECT t0.CURRENTQUOTA_MESSAGECOUNT, t0.CURRENTQUOTA_SIZE FROM APP.JAMES_QUOTA_CURRENTQUOTA t0 WHERE t0.CURRENTQUOTA_QUOTAROOT = ? with 1 parameters begin parameter #1: #private&imapuser :end parameter +ERROR 08000: Connection closed by unknown interrupt. + at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) + at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) + at org.apache.derby.iapi.util.InterruptStatus.setInterrupted(Unknown Source) + at org.apache.derby.iapi.util.InterruptStatus.throwIf(Unknown Source) + at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.checkCancellationFlag(Unknown Source) + at org.apache.derby.impl.sql.execute.TableScanResultSet.getNextRowCore(Unknown Source) + at org.apache.derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowCore(Unknown Source) + at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(Unknown Source) + at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(Unknown Source) + at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown Source) + at org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source) + at org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + at org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + at org.apache.openjpa.lib.jdbc.DelegatingResultSet.next(DelegatingResultSet.java:113) + at org.apache.openjpa.jdbc.sql.ResultSetResult.nextInternal(ResultSetResult.java:236) + at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.nextInternal(SelectImpl.java:2608) + at org.apache.openjpa.jdbc.sql.AbstractResult.next(AbstractResult.java:185) + at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.isEmptyResult(JDBCStoreManager.java:516) + at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:377) + at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:325) + at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:123) + at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:59) + at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1118) + at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1076) + at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:992) + at org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:246) + at org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:582) + at org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.retrieveUserQuota(JpaCurrentQuotaManager.java:129) + at org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.lambda$getCurrentQuotas$5(JpaCurrentQuotaManager.java:76) + at reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:137) + at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) + at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) + at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) + at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) + at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) + at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onSubscribe(FluxDoFinally.java:107) + at reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:205) + at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) + at reactor.core.publisher.FluxFromMonoOperator.subscribe(FluxFromMonoOperator.java:77) + at reactor.core.publisher.FluxUsing.subscribe(FluxUsing.java:114) + at reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) + at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57) + at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:80) + at reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) + at reactor.core.publisher.Mono.subscribe(Mono.java:4496) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335) + at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201) + at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83) + at reactor.core.publisher.Mono.subscribe(Mono.java:4512) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + at reactor.core.publisher.FluxArray$ArraySubscription.slowPath(FluxArray.java:126) + at reactor.core.publisher.FluxArray$ArraySubscription.request(FluxArray.java:99) + at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + at reactor.core.publisher.FluxMerge.subscribe(FluxMerge.java:73) + at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:264) + at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) + at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) + at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) + at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.onNext(FluxSubscribeOn.java:151) + at reactor.core.publisher.FluxUsing$UsingFuseableSubscriber.onNext(FluxUsing.java:353) + at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + at reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:252) + at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) + at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) +--------------- +Stack traces for all live threads: +Thread name=parallel-13 id=73 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-3 id=56 priority=5 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.2/java.lang.Thread.getAllStackTraces(Thread.java:2521) + app//org.apache.derby.iapi.error.ThreadDump.getStackDumpString(Unknown Source) + java.base@21.0.2/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder) + java.base@21.0.2/java.lang.invoke.LambdaForm$MH/0x0000715af4000400.invoke(LambdaForm$MH) + java.base@21.0.2/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.2/java.lang.reflect.Method.invoke(Method.java:580) + app//org.apache.derby.iapi.error.ExceptionUtil$1.run(Unknown Source) + java.base@21.0.2/java.security.AccessController.executePrivileged(AccessController.java:809) + java.base@21.0.2/java.security.AccessController.doPrivileged(AccessController.java:571) + app//org.apache.derby.iapi.error.ExceptionUtil.dumpThreads(Unknown Source) + app//org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(Unknown Source) + app//org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(Unknown Source) + app//org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown Source) + app//org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source) + app//org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + app//org.apache.commons.dbcp2.DelegatingResultSet.next(DelegatingResultSet.java:1160) + app//org.apache.openjpa.lib.jdbc.DelegatingResultSet.next(DelegatingResultSet.java:113) + app//org.apache.openjpa.jdbc.sql.ResultSetResult.nextInternal(ResultSetResult.java:236) + app//org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.nextInternal(SelectImpl.java:2608) + app//org.apache.openjpa.jdbc.sql.AbstractResult.next(AbstractResult.java:185) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.isEmptyResult(JDBCStoreManager.java:516) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:377) + app//org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:325) + app//org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:123) + app//org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:59) + app//org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1118) + app//org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1076) + app//org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:992) + app//org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:246) + app//org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:582) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.retrieveUserQuota(JpaCurrentQuotaManager.java:129) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager.lambda$getCurrentQuotas$5(JpaCurrentQuotaManager.java:76) + app//org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager$$Lambda/0x0000715af4544078.call(Unknown Source) + app//reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:137) + app//reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.request(FluxDoFinally.java:140) + app//reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) + app//reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) + app//reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) + app//reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) + app//reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onSubscribe(FluxDoFinally.java:107) + app//reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:205) + app//reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) + app//reactor.core.publisher.FluxFromMonoOperator.subscribe(FluxFromMonoOperator.java:77) + app//reactor.core.publisher.FluxUsing.subscribe(FluxUsing.java:114) + app//reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) + app//reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57) + app//reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:80) + app//reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4496) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + app//reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335) + app//reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + app//reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201) + app//reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430) + app//reactor.core.publisher.FluxArray$ArraySubscription.slowPath(FluxArray.java:126) + app//reactor.core.publisher.FluxArray$ArraySubscription.request(FluxArray.java:99) + app//reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) + app//reactor.core.publisher.FluxMerge.subscribe(FluxMerge.java:73) + app//reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:264) + app//reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) + app//reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) + app//reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) + app//reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.onNext(FluxSubscribeOn.java:151) + app//reactor.core.publisher.FluxUsing$UsingFuseableSubscriber.onNext(FluxUsing.java:353) + app//reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + app//reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + app//reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:293) + app//reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) + app//reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:252) + app//reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) + app//reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) + java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-6 id=66 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-9 id=69 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-8 id=68 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-evictor-2 id=52 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-6 id=59 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Notification Thread id=28 priority=9 state=RUNNABLE isdaemon=true + +Thread name=parallel-2 id=62 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-9 id=78 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=surefire-forkedjvm-command-thread id=42 priority=5 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.io.FileInputStream.readBytes(Native Method) + java.base@21.0.2/java.io.FileInputStream.read(FileInputStream.java:287) + java.base@21.0.2/java.io.BufferedInputStream.read1(BufferedInputStream.java:345) + java.base@21.0.2/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) + java.base@21.0.2/java.io.BufferedInputStream.read(BufferedInputStream.java:399) + java.base@21.0.2/java.io.BufferedInputStream.fill(BufferedInputStream.java:291) + java.base@21.0.2/java.io.BufferedInputStream.read1(BufferedInputStream.java:347) + java.base@21.0.2/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) + java.base@21.0.2/java.io.BufferedInputStream.read(BufferedInputStream.java:399) + app//org.apache.maven.surefire.api.util.internal.Channels$3.readImpl(Channels.java:169) + app//org.apache.maven.surefire.api.util.internal.AbstractNoninterruptibleReadableChannel.read(AbstractNoninterruptibleReadableChannel.java:50) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.read(AbstractStreamDecoder.java:430) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.read(AbstractStreamDecoder.java:419) + app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.readMessageType(AbstractStreamDecoder.java:116) + app//org.apache.maven.surefire.booter.stream.CommandDecoder.decode(CommandDecoder.java:77) + app//org.apache.maven.surefire.booter.spi.CommandChannelDecoder.decode(CommandChannelDecoder.java:60) + app//org.apache.maven.surefire.booter.CommandReader$CommandRunnable.run(CommandReader.java:290) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Signal Dispatcher id=11 priority=9 state=RUNNABLE isdaemon=true + +Thread name=Reference Handler id=9 priority=10 state=RUNNABLE isdaemon=true + java.base@21.0.2/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.2/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.2/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread name=parallel-4 id=64 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-12 id=72 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=surefire-forkedjvm-stream-flusher id=29 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-evictor-3 id=54 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-7 id=67 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-2 id=55 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-11 id=71 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-3 id=63 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=gradle-enterprise-test-client-gradle-enterprise-test-listener id=44 priority=5 state=WAITING isdaemon=false + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:420) + app//com.gradle.maven.scan.extension.test.listener.obfuscated.k.a.a(SourceFile:130) + app//com.gradle.maven.scan.extension.test.listener.obfuscated.k.a.b(SourceFile:93) + app//com.gradle.maven.scan.extension.test.listener.obfuscated.k.a$$Lambda/0x0000715af4108d98.run(Unknown Source) + java.base@21.0.2/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Common-Cleaner id=26 priority=8 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1847) + java.base@21.0.2/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.2/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.2/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread name=boundedElastic-8 id=77 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=blocking-call-wrapper-1 id=53 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-16 id=76 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Finalizer id=10 priority=8 state=WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + java.base@21.0.2/java.lang.Object.wait(Object.java:339) + java.base@21.0.2/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.2/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.2/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.2/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread name=parallel-14 id=74 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=jvm-path-locker-4 id=57 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-1 id=61 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-15 id=75 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=main id=1 priority=5 state=WAITING isdaemon=false + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:221) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099) + java.base@21.0.2/java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230) + app//reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:90) + app//reactor.core.publisher.Mono.block(Mono.java:1728) + app//org.apache.james.imap.api.process.ImapProcessor.process(ImapProcessor.java:49) + app//org.apache.james.imap.processor.DefaultProcessor.process(DefaultProcessor.java:150) + app//org.apache.james.imap.main.AbstractImapRequestHandler.doProcessRequest(AbstractImapRequestHandler.java:57) + app//org.apache.james.imap.decode.main.ImapRequestStreamHandler.handleRequest(ImapRequestStreamHandler.java:81) + app//org.apache.james.mpt.host.JamesImapHostSystem$Session.readLine(JamesImapHostSystem.java:146) + app//org.apache.james.mpt.protocol.ProtocolSession$ServerResponse.readLine(ProtocolSession.java:380) + app//org.apache.james.mpt.protocol.ProtocolSession$ServerResponse.checkResponse(ProtocolSession.java:349) + app//org.apache.james.mpt.protocol.ProtocolSession$ServerResponse.testProtocol(ProtocolSession.java:340) + app//org.apache.james.mpt.protocol.ProtocolSession.runSessions(ProtocolSession.java:105) + app//org.apache.james.mpt.script.GenericSimpleScriptedTestProtocol.runSessions(GenericSimpleScriptedTestProtocol.java:176) + app//org.apache.james.mpt.script.GenericSimpleScriptedTestProtocol.run(GenericSimpleScriptedTestProtocol.java:131) + app//org.apache.james.mpt.imapmailbox.suite.AuthenticatedState.testNamespaceKOREA(AuthenticatedState.java:421) + java.base@21.0.2/java.lang.invoke.LambdaForm$DMH/0x0000715af4400c00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.2/java.lang.invoke.LambdaForm$MH/0x0000715af449c400.invoke(LambdaForm$MH) + java.base@21.0.2/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.2/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.2/java.lang.reflect.Method.invoke(Method.java:580) + app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727) + app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) + app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156) + app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) + app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x0000715af40a90c8.apply(Unknown Source) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda/0x0000715af40a94d8.apply(Unknown Source) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda/0x0000715af4133388.apply(Unknown Source) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) + app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) + app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x0000715af449fc10.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138) + app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124f30.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124d10.invoke(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af41248f8.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x0000715af4125a20.accept(Unknown Source) + java.base@21.0.2/java.util.ArrayList.forEach(ArrayList.java:1596) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124f30.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124d10.invoke(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af41248f8.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x0000715af4125a20.accept(Unknown Source) + java.base@21.0.2/java.util.ArrayList.forEach(ArrayList.java:1596) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124f30.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af4124d10.invoke(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x0000715af41248f8.execute(Unknown Source) + app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) + app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) + app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) + app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) + app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda/0x0000715af40bcb00.accept(Unknown Source) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102) + app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54) + app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) + app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) + app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) + app//org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:56) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.lambda$execute$1(JUnitPlatformProvider.java:191) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x0000715af403c240.accept(Unknown Source) + java.base@21.0.2/java.util.Iterator.forEachRemaining(Iterator.java:133) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:186) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:148) + app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:118) + app//org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) + app//org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) + app//org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) + app//org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) + +Thread name=derby.rawStoreDaemon id=49 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + app//org.apache.derby.impl.services.daemon.BasicDaemon.rest(Unknown Source) + app//org.apache.derby.impl.services.daemon.BasicDaemon.run(Unknown Source) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=blocking-call-wrapper-10 id=79 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:221) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:754) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1099) + java.base@21.0.2/java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230) + app//reactor.core.publisher.BlockingOptionalMonoSubscriber.blockingGet(BlockingOptionalMonoSubscriber.java:111) + app//reactor.core.publisher.Mono.blockOptional(Mono.java:1778) + app//org.apache.james.mailbox.store.MailboxReactorUtils.blockOptional(MailboxReactorUtils.java:48) + app//org.apache.james.mailbox.store.StoreMailboxManager.createMailbox(StoreMailboxManager.java:335) + app//org.apache.james.imap.processor.AbstractAuthProcessor.provisionMailbox(AbstractAuthProcessor.java:205) + app//org.apache.james.imap.processor.AbstractAuthProcessor.provisionInbox(AbstractAuthProcessor.java:188) + app//org.apache.james.imap.processor.AbstractAuthProcessor.doAuth(AbstractAuthProcessor.java:91) + app//org.apache.james.imap.processor.LoginProcessor.processRequest(LoginProcessor.java:59) + app//org.apache.james.imap.processor.LoginProcessor.processRequest(LoginProcessor.java:43) + app//org.apache.james.imap.processor.AbstractMailboxProcessor.lambda$processRequestReactive$13(AbstractMailboxProcessor.java:358) + app//org.apache.james.imap.processor.AbstractMailboxProcessor$$Lambda/0x0000715af44ffc28.run(Unknown Source) + app//reactor.core.publisher.MonoRunnable.subscribe(MonoRunnable.java:49) + app//reactor.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) + app//reactor.core.publisher.Mono.subscribe(Mono.java:4512) + app//reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:126) + app//reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84) + app//reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37) + java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=Timer-0 id=46 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/java.lang.Object.wait0(Native Method) + java.base@21.0.2/java.lang.Object.wait(Object.java:366) + java.base@21.0.2/java.lang.Object.wait(Object.java:339) + java.base@21.0.2/java.util.TimerThread.mainLoop(Timer.java:537) + java.base@21.0.2/java.util.TimerThread.run(Timer.java:516) + +Thread name=boundedElastic-5 id=58 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-10 id=70 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=boundedElastic-evictor-1 id=51 priority=5 state=TIMED_WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=jvm-path-locker-7 id=60 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + +Thread name=parallel-5 id=65 priority=5 state=WAITING isdaemon=true + java.base@21.0.2/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) + java.base@21.0.2/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) + java.base@21.0.2/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170) + java.base@21.0.2/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) + + +--------------- + +Cleanup action completed diff --git a/pom.xml b/pom.xml index 5c06383b9dd..f94ce1d9146 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ org.apache apache 21 - + org.apache.james @@ -82,7 +82,7 @@ Developer - + Serge was the original donator of the James code, which has since been massively improved by people smarter than him. He tries to answer questions on the listserv and make @@ -97,7 +97,7 @@ Developer - + sbrewin @@ -107,7 +107,7 @@ Developer PMC Member - + hilmer @@ -117,7 +117,7 @@ Developer PMC Member - + noel @@ -127,7 +127,7 @@ Developer PMC Member - + danny @@ -139,7 +139,7 @@ Developer PMC Member - + Danny is a member of the Apache Software Foundation and married father of two by night, and by day works as lead technical consultant for the Student Loans @@ -179,7 +179,7 @@ Developer PMC Member - + rdonkin @@ -189,7 +189,7 @@ Developer PMC Member - + niklas @@ -216,7 +216,7 @@ Developer - + olegk @@ -226,7 +226,7 @@ Developer PMC Member - + manolo @@ -236,7 +236,7 @@ Developer PMC Member - + eric @@ -246,7 +246,7 @@ Developer PMC Member - + felixk @@ -265,7 +265,7 @@ PMC Member Developer - + matthieu @@ -275,7 +275,7 @@ PMC Member Developer - + btellier @@ -288,7 +288,7 @@ PMC Member Developer - + aduprat @@ -300,7 +300,7 @@ PMC Member Developer - + rouazana @@ -311,7 +311,7 @@ Developer - + jhelou @@ -321,7 +321,7 @@ PMC Member Developer - + rcordier @@ -617,7 +617,7 @@ This property contains the directory where to deploy when running using "-Psite-reports" profile to avoid accidently overriding the common modules website. Empty by default. --> - + org.apache.james ${james.groupId}.protocols @@ -3533,7 +3533,7 @@ false - + @@ -3549,7 +3549,7 @@ false - + @@ -3565,7 +3565,7 @@ false - + @@ -3579,7 +3579,7 @@ - + @@ -3887,7 +3887,7 @@ maven-surefire-plugin ${maven-surefire-plugin.version} - + unstable diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java index 7709157dc9b..cf90444eb42 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java @@ -31,6 +31,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; + /** * Handler which want to do a recipient check should extend this */ diff --git a/server/apps/cassandra-app/pom.xml b/server/apps/cassandra-app/pom.xml index 5d8a1f987a2..c8500eec471 100644 --- a/server/apps/cassandra-app/pom.xml +++ b/server/apps/cassandra-app/pom.xml @@ -342,14 +342,22 @@ org.apache.james.CassandraJamesServerMain - 80 - 143 - 993 - 25 - 465 - 587 - 4000 - 8000 + 80 + + 143 + + 993 + + 25 + + 465 + + 587 + + 4000 + + 8000 + /root @@ -397,7 +405,8 @@ /usr/bin/james-cli - 755 + 755 + diff --git a/server/apps/distributed-app/JMAP API 9th FEB 24.postman_collection.json b/server/apps/distributed-app/JMAP API 9th FEB 24.postman_collection.json new file mode 100644 index 00000000000..5334d4d7f3f --- /dev/null +++ b/server/apps/distributed-app/JMAP API 9th FEB 24.postman_collection.json @@ -0,0 +1,1453 @@ +{ + "info": { + "_postman_id": "18b618f1-4454-4de2-acce-3f00a90d36db", + "name": "JMAP API", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "30479464" + }, + "item": [ + { + "name": "Add mydomain", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/domains/mydomain", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "domains", + "mydomain" + ] + } + }, + "response": [] + }, + { + "name": "Add testuser.org@mydomain", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "http://{{host}}:{{port}}/users/testuser.org@mydomain", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "users", + "testuser.org@mydomain" + ] + } + }, + "response": [] + }, + { + "name": "Add testuser1.org@mydomain Copy", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "url": { + "raw": "http://{{host}}:{{port}}/users/testuser1.org@mydomain", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "users", + "testuser1.org@mydomain" + ] + } + }, + "response": [] + }, + { + "name": "List Domains", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/domains", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "domains" + ] + } + }, + "response": [] + }, + { + "name": "List Users", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/users", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "users" + ] + } + }, + "response": [] + }, + { + "name": "List groups", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/groups", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups" + ] + } + }, + "response": [] + }, + { + "name": "Add user to group", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/group8.org@mydomain/testuser4.org@mydomain", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "group8.org@mydomain", + "testuser4.org@mydomain" + ] + } + }, + "response": [] + }, + { + "name": "Delete user from a group", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/group2.org@mydomain/testuser.org@mydomain", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "group2.org@mydomain", + "testuser.org@mydomain" + ] + } + }, + "response": [] + }, + { + "name": "Delete multiple groups", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n \"group4.org@mydomain\",\n \"group5.org@mydomain\",\n \"group6.org@mydomain\",\n \"group7.org@mydomain\",\n \"group8.org@mydomain\"\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/address/groups", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups" + ] + } + }, + "response": [] + }, + { + "name": "username change", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/users/testuser.org@mydomain/rename/testuser1.org@mydomain?action=rename", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "users", + "testuser.org@mydomain", + "rename", + "testuser1.org@mydomain" + ], + "query": [ + { + "key": "action", + "value": "rename" + } + ] + } + }, + "response": [] + }, + { + "name": "List members of a group", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/group3.org@mydomain", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "group3.org@mydomain" + ] + } + }, + "response": [] + }, + { + "name": "session", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap/session", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap", + "session" + ] + } + }, + "response": [] + }, + { + "name": "Core/echo", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Core/echo\", {\n \"hello\": true,\n \"high\": 5\n }, \"b3ff\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "PushSubscription/set my response", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"PushSubscription/set\", {\n \"update\": {\n \"3b1249a4-e800-4dba-97e1-6ba60be1ce9b\": {\n \"verificationCode\":\"6e579a03-7e15-4af1-925e-04494312248a\"\n }\n }\n }, \"0\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap/session", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap", + "session" + ] + } + }, + "response": [] + }, + { + "name": "set push subscription", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"PushSubscription/set\", {\n \"create\": {\n \"asdfasd\": {\n \"deviceClientId\": \"a8d8xczx9-ssffea-910\",\n \"url\": \"http://localhost:3333/pushListener\",\n \"types\": [\"Mailbox\", \"Email\", \"EmailDelivery\"]\n }\n }\n }, \"0\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "view push subscriptions", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"PushSubscription/get\", {\n \"ids\": null\n }, \"asdas\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Mailbox/query", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/query\", {\n \"accountId\": \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",\n \"filter\": {\"role\": \"inbox\"}\n }, \"mbQuery\" ],\n\n [ \"Mailbox/query\", {\n \"#accountId\" : {\n \"name\": \"Mailbox/query\",\n \"resultOf\": \"mbQuery\",\n \"path\": \"/accountId\"\n },\n\n \"filter\": {\n \"after\": \"2023-01-01T00:00:00Z\"\n },\n \"sort\": [\n { \"property\": \"receivedAt\", \"isAscending\": false }\n ]\n }, \"1\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Mailbox/get See all mailboxes", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/get\", {\n \"accountId\": \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\"//,\n //\"ids\": [\"2f94c250-8919-11ee-849d-9fa9bb19403d\"]\n }, \"b3ff\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "View mailbox changes since last session", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/changes\", {\n \"accountId\": \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",\n \"sinceState\": \"fe0c4be1-8ea9-11ee-849d-9fa9bb19403d\"\n //\"filter\": {\"role\": \"Inbox\"}\n }, \"0\" ],\n\n [\"Mailbox/get\", {\n \"#accountId\": {\n \"name\": \"Mailbox/changes\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n \"#ids\" : {\n \"name\": \"Mailbox/changes\",\n \"path\": \"updated/*\",\n \"resultOf\": \"0\"\n }\n }, \"1\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Show mails (old)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/query\", {\n \"accountId\": \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",\n \"filter\": {\"role\": \"inbox\"}\n }, \"mbQuery\" ],\n\n [ \"Email/query\", {\n \"accountId\" : \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",\n \"filter\": {\n \"operator\": \"AND\",\n \"conditions\": [\n \n {\"#inMailbox\": {\n \"name\": \"Mailbox/query\",\n \"resultOf\": \"mbQuery\",\n \"path\": \"ids/0\"\n }}//,\n\n //{\"notKeyword\": \"$seen\"}\n ]\n },\n \"sort\": [\n { \"property\": \"receivedAt\", \"isAscending\": false }\n ],\n \"collapseThreads\": true,\n \"calculateTotal\": true,\n \"position\": 0,\n \"limit\": 10\n }, \"0\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n\n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n\n \"properties\": [ \"threadId\" ]\n }, \"1\" ],\n\n [ \"Thread/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/get\",\n \"path\": \"/list/*/threadId\",\n \"resultOf\": \"1\"\n }\n }, \"2\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Thread/get\",\n \"path\": \"/list/*/emailIds\",\n \"resultOf\": \"2\"\n }\n\n //\"properties\": [ \"from\", \"to\", \"receivedAt\", \"subject\", \"preview\", \"inReplyTo\", \"messageId\" ]\n }, \"3\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Show unseen threads containing a specific user", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/query\", {\n \"accountId\": \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",\n \"filter\": {\"role\": \"inbox\"}\n }, \"mbQuery\" ],\n \n [ \"Email/query\", {\n \"accountId\" : \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",\n \"filter\": {\n \"operator\": \"AND\",\n \"conditions\": [\n\n {\"#inMailbox\": {\n \"name\": \"Mailbox/query\",\n \"resultOf\": \"mbQuery\",\n \"path\": \"ids/0\"\n }},\n \n {\"from\": \"sami@james.appscode.ninja\"}\n //{\"text\": \"searchText\"}//,\n //{\"notKeyword\": \"$seen\"}\n ]\n },\n \"sort\": [\n { \"property\": \"receivedAt\", \"isAscending\": false }\n ],\n \"collapseThreads\": true,\n \"calculateTotal\": true,\n \"position\": 0,\n \"limit\": 10\n }, \"0\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n\n \"properties\": [ \"threadId\" ]\n }, \"1\" ],\n\n [ \"Thread/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/get\",\n \"path\": \"/list/*/threadId\",\n \"resultOf\": \"1\"\n }\n }, \"2\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Thread/get\",\n \"path\": \"/list/*/emailIds\",\n \"resultOf\": \"2\"\n },\n \"properties\": [\"from\"]\n\n // \"properties\": [ \"from\", \"to\", \"receivedAt\", \"subject\", \"preview\", \"messageId\", \"references\" ]\n }, \"3\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Show email (simple)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/query\", {\n \"accountId\": \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",\n \"filter\": {\"role\": \"inbox\"}\n }, \"mbQuery\" ],\n \n [ \"Email/query\", {\n \"accountId\" : \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",\n \"filter\": {\n \"operator\": \"AND\",\n \"conditions\": [\n\n {\"#inMailbox\": {\n \"name\": \"Mailbox/query\",\n \"resultOf\": \"mbQuery\",\n \"path\": \"ids/0\"\n }},\n\n //{\"from\": \"sami@james.appscode.ninja\"}\n //{\"text\": \"searchText\"}//,\n {\"notKeyword\": \"$seen\"}\n ]\n },\n \"sort\": [\n { \"property\": \"receivedAt\", \"isAscending\": false }\n ],\n \"collapseThreads\": true,\n \"calculateTotal\": true,\n \"position\": 0,\n \"limit\": 10\n }, \"0\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n \"properties\": [\"from\"],\n //\"properties\": [ \"from\", \"to\", \"receivedAt\", \"subject\", \"bodyValues\", \"messageId\" ],\n \"fetchAllBodyValues\": true\n }, \"1\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Fetch email body", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n\n [ \"Mailbox/query\", {\n \"accountId\": \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",//sami\n //\"accountId\": \"7165989a44d7b25d65e1b2f97794b49118e5c19b42a91ed75db2c28534cf4a22\",//testuser\n \"filter\": {\"role\": \"inbox\"}\n }, \"mbQuery\" ],\n\n [ \"Email/query\", {\n \"#accountId\": {\n \"name\": \"Mailbox/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"mbQuery\"\n },\n \"filter\": {\n \"operator\": \"AND\",\n \"conditions\": [\n \n {\"#inMailbox\": {\n \"name\": \"Mailbox/query\",\n \"resultOf\": \"mbQuery\",\n \"path\": \"ids/0\"\n }}//,\n\n //{\"notKeyword\": \"$seen\"}\n ]\n },\n \"sort\": [\n { \"property\": \"receivedAt\", \"isAscending\": false }\n ],\n \"position\": 0,\n \"limit\": 5\n }, \"0\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n // \"ids\": [\"cef5fcd0-940c-11ee-88f8-d7f9baa0a757\"],\n //\"properties\": [ \"from\", \"to\", \"receivedAt\", \"subject\", \"bodyValues\", \"type\" ],\n \"fetchAllBodyValues\": true,\n \"fetchHTMLBodyValues\": true\n }, \"1\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Send mail over webadmin", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "From: sir3.org@mydomain\nTo: testuser.org+dxdsdfa@mydomain\nMIME-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"XXXXboundary text\"\n\nThis is a multipart message in MIME format.\n\n--XXXXboundary text\nContent-Type: text/plain\n\nSample Body\n\n--XXXXboundary text\nContent-Type: text/plain;\nContent-Disposition: attachment;\n filename=\"test.txt\"\n\nthis is the attachment text\n\n--XXXXboundary text--", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/mail-transfer-service", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "mail-transfer-service" + ] + } + }, + "response": [] + }, + { + "name": "Send Email", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\", \"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n\n [ \"Email/set\", \n { \n \"accountId\": \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",\n \n \"create\": {\n \"draft\": {\n \"from\": [{\"email\": \"testuser.org@mydomain\"}],\n \"to\": [{\"email\": \"testuser.o2rg+asjnjad@mydomain\"}],\n \"subject\": \"THIS IS THE SUBJECT\",\n \"keywords\": {\"$draft\": true},\n \"mailboxIds\": {\"d8714230-b5c5-11ee-9f23-63439c30cca3\": true},\n \"bodyValues\": {\"body\": {\"value\": \"asdfgh\", \"charset\": \"utf-8\"}},\n \"textBody\": [{\"partId\": \"body\", \"type\": \"text/plain\"}]\n }\n }\n }, \n \"0\"\n ],\n\n [\n \"EmailSubmission/set\",\n {\n \"#accountId\": {\n \"name\": \"Email/set\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"create\": {\n \"sendIt\": {\n \"emailId\": \"#draft\"\n //\"identityId\": \"79646383-8b23-38d9-8cae-a2214844dd93\"\n }\n },\n\n //move from draft to sent mailbox\n \"onSuccessUpdateEmail\": {\n \"#sendIt\":{\n \"mailboxIds/d8714230-b5c5-11ee-9f23-63439c30cca3\": null,\n \"mailboxIds/d86c8740-b5c5-11ee-9f23-63439c30cca3\": true,\n \"keywords/$seen\": true,\n \"keywords/$draft\": null\n }\n }\n },\n \"1\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Send Email SIMPLE", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\", \"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n\n [ \"Email/set\", \n { \n \"accountId\": \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",\n \n \"create\": {\n \"draft\": {\n \"from\": [{\"email\": \"testuser.org@mydomain\"}],\n \"to\": [{\"email\": \"testuser.org@mydomain\"}],\n \"subject\": \"jwttest\",\n \"keywords\": {\"$draft\": true},\n \"mailboxIds\": {\"caee8ac0-c653-11ee-8289-0b59569cd6b6\": true},\n \"bodyValues\": {\"body\": {\"value\": \"asdfgh\", \"charset\": \"utf-8\"}},\n \"textBody\": [{\"partId\": \"body\", \"type\": \"text/plain\"}]\n }\n }\n }, \n \"0\"\n ],\n\n [\n \"EmailSubmission/set\",\n {\n \"#accountId\": {\n \"name\": \"Email/set\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"create\": {\n \"sendIt\": {\n \"emailId\": \"#draft\"\n //\"identityId\": \"79646383-8b23-38d9-8cae-a2214844dd93\"\n }\n }\n\n },\n \"1\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Send Email (Attachment text test)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\", \"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n [ \"Email/set\", \n { \n \"accountId\": \"7165989a44d7b25d65e1b2f97794b49118e5c19b42a91ed75db2c28534cf4a22\",\n \"create\": {\n \"draft\": {\n \"attachments\":[{\n \"blobId\": \"uploads-543f5ac0-8f5e-11ee-849d-9fa9bb19403d\",\n \"type\": \"text/plain\",\n \"size\": 14,\n \"partId\": 3,\n \"name\": \"toUpload3.txt\",\n \"disposition\": \"attachment\"\n }],\n \"hasAttachment\": true,\n \"from\": [{\"email\": \"sami@james.appscode.ninja\"}],\n \"to\": [{\"email\": \"testuser@mydomain\"}],\n \"subject\": \"THIS IS THE SUBJECT\",\n \"keywords\": {\"$draft\": true},\n \"mailboxIds\": {\"2f9e8650-8919-11ee-849d-9fa9bb19403d\": true},\n \"bodyValues\": {\"body\": {\"value\": \"THIS IS THE BODY\", \"charset\": \"utf-8\"}},\n \"textBody\": [{\"partId\": \"body\", \"type\": \"text/plain\"}]\n }\n }\n }, \n \"0\"\n ],\n\n [\n \"EmailSubmission/set\",\n {\n \"#accountId\": {\n \"name\": \"Email/set\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"create\": {\n \"sendIt\": {\n \"emailId\": \"#draft\"\n //\"identityId\": \"79646383-8b23-38d9-8cae-a2214844dd93\"\n }\n },\n\n //move from draft to sent mailbox\n \"onSuccessUpdateEmail\": {\n \"#sendIt\":{\n \"mailboxIds/2f9e8650-8919-11ee-849d-9fa9bb19403d\": null,\n \"mailboxIds/2f9a8eb0-8919-11ee-849d-9fa9bb19403d\": true,\n \"keywords/$seen\": true,\n \"keywords/$draft\": null\n }\n }\n },\n \"1\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Reply to thread", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\", \"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n [ \"Email/set\", \n { \n \"accountId\": \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",\n \"create\": {\n \"draft\": { \n \"inReplyTo\": [\n \"067297df-cffe-474a-a0c4-4f136550070c@mydomain\"\n ],\n \"references\": [\n \"067297df-cffe-474a-a0c4-4f136550070c@mydomain\"\n ], \n \"from\": [{\"email\": \"testuser.org@mydomain\"}],\n \"to\": [{\"email\": \"testuser.org@mydomain\"}],\n \"subject\": \"Re: sdfgsdfg\",\n \"keywords\": {\"$draft\": true},\n \"mailboxIds\": {\"3c122440-abbb-11ee-8dc7-5d9a8fe25dcd\": true},\n \"bodyValues\": {\"body\": {\"value\": \"THIS IS THE BODY 2\", \"charset\": \"utf-8\"}},\n \"textBody\": [{\"partId\": \"body\", \"type\": \"text/plain\"}]\n }\n }\n }, \n \"0\"\n ],\n\n [\n \"EmailSubmission/set\",\n {\n \"#accountId\": {\n \"name\": \"Email/set\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"create\": {\n \"sendIt\": {\n \"emailId\": \"#draft\"\n //\"identityId\": \"79646383-8b23-38d9-8cae-a2214844dd93\"\n }\n },\n\n //move from draft to sent mailbox\n \"onSuccessUpdateEmail\": {\n \"#sendIt\":{\n \"mailboxIds/3c0ccd10-abbb-11ee-8dc7-5d9a8fe25dcd\": true,\n \"mailboxIds/3c122440-abbb-11ee-8dc7-5d9a8fe25dcd\": null,\n \"keywords/$seen\": true,\n \"keywords/$draft\": null\n }\n }\n },\n \"1\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "upload test 2", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "image/jpg; charset=utf-8" + }, + { + "key": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0dXNlci5vcmdAbXlkb21haW4iLCJpYXQiOjE2MTYyMzkwMjIsImV4cCI6MTk0NjIzOTAyMn0.SO2fTuxB6qQNZqkhwWAndyqXDpyZMrHZFNdgG5ka7j8dW0G9JqU-rx04wqL-R2T51QCVYnlLBM62AVEltK-85ck10nFHEEFwQSD85v5PpI_qzeTz4NRFDxek-5N2gYdK0XQ6NzMvlSwxyUM2TkNZCupIto9H3MDeuDSs0p6Xmwk3iaGKJcIorIUbImf8xzwfB39ytpOw1j6ggAGjczZH8Ykz2PnHQQX2TU8R_dGbn6euYOqnTiZDWggfbxaS1joJ3PatN0Q-jxfuQGwTdZWeSN-Ocvr55MitQvMKJQaoRMVAOFCPXuhCkMq1szKRaBbhnL1nFjmHBpMJC5VpSeDgKOa-govmuTrnRMDV15n5KeeSWEeE2Km9ibOqzZktlR5EU-lU16h-a0u5ydPfax4HcUnNnVcKFqjSGyMFyBQOOxQWKrSJdHNaA7ZP07QQjwdSRQFbJHsUBdH22oBfTnT891yMmWW1iFLHZuV2sMivUGnH-EBO29HHVzAXUlOzErqDaVnovMvdPN6_Vi80LpdSWikYbe2zXUV4csBAc6bC1NweP9omNidBk9Vgo-3q2mHw-H6mfFnTONUipbtbV8ifI2MKQ-ZS0ciNomOcNgyYu5mc-ebDFpZU9xx-_nakCOscUm0tHN224MxKNIx-9E7XrS0PlSOauNYqi4AVKP9svW0" + } + ], + "body": { + "mode": "file", + "file": { + "src": "/home/sami/cat.jpg" + } + }, + "url": { + "raw": "http://localhost/upload/153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80", + "protocol": "http", + "host": [ + "localhost" + ], + "path": [ + "upload", + "153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80" + ] + } + }, + "response": [] + }, + { + "name": "Upload (easier with curl)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0dXNlci5vcmdAbXlkb21haW4iLCJpYXQiOjE2MTYyMzkwMjIsImV4cCI6MTk0NjIzOTAyMn0.SO2fTuxB6qQNZqkhwWAndyqXDpyZMrHZFNdgG5ka7j8dW0G9JqU-rx04wqL-R2T51QCVYnlLBM62AVEltK-85ck10nFHEEFwQSD85v5PpI_qzeTz4NRFDxek-5N2gYdK0XQ6NzMvlSwxyUM2TkNZCupIto9H3MDeuDSs0p6Xmwk3iaGKJcIorIUbImf8xzwfB39ytpOw1j6ggAGjczZH8Ykz2PnHQQX2TU8R_dGbn6euYOqnTiZDWggfbxaS1joJ3PatN0Q-jxfuQGwTdZWeSN-Ocvr55MitQvMKJQaoRMVAOFCPXuhCkMq1szKRaBbhnL1nFjmHBpMJC5VpSeDgKOa-govmuTrnRMDV15n5KeeSWEeE2Km9ibOqzZktlR5EU-lU16h-a0u5ydPfax4HcUnNnVcKFqjSGyMFyBQOOxQWKrSJdHNaA7ZP07QQjwdSRQFbJHsUBdH22oBfTnT891yMmWW1iFLHZuV2sMivUGnH-EBO29HHVzAXUlOzErqDaVnovMvdPN6_Vi80LpdSWikYbe2zXUV4csBAc6bC1NweP9omNidBk9Vgo-3q2mHw-H6mfFnTONUipbtbV8ifI2MKQ-ZS0ciNomOcNgyYu5mc-ebDFpZU9xx-_nakCOscUm0tHN224MxKNIx-9E7XrS0PlSOauNYqi4AVKP9svW0", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Core/echo\", {\n \"hello\": true,\n \"high\": 5\n }, \"b3ff\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://localhost/upload/153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80", + "protocol": "http", + "host": [ + "localhost" + ], + "path": [ + "upload", + "153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80" + ] + } + }, + "response": [] + }, + { + "name": "Download (easier with curl) sami", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0dXNlci5vcmdAbXlkb21haW4iLCJpYXQiOjE2MTYyMzkwMjIsImV4cCI6MTk0NjIzOTAyMn0.SO2fTuxB6qQNZqkhwWAndyqXDpyZMrHZFNdgG5ka7j8dW0G9JqU-rx04wqL-R2T51QCVYnlLBM62AVEltK-85ck10nFHEEFwQSD85v5PpI_qzeTz4NRFDxek-5N2gYdK0XQ6NzMvlSwxyUM2TkNZCupIto9H3MDeuDSs0p6Xmwk3iaGKJcIorIUbImf8xzwfB39ytpOw1j6ggAGjczZH8Ykz2PnHQQX2TU8R_dGbn6euYOqnTiZDWggfbxaS1joJ3PatN0Q-jxfuQGwTdZWeSN-Ocvr55MitQvMKJQaoRMVAOFCPXuhCkMq1szKRaBbhnL1nFjmHBpMJC5VpSeDgKOa-govmuTrnRMDV15n5KeeSWEeE2Km9ibOqzZktlR5EU-lU16h-a0u5ydPfax4HcUnNnVcKFqjSGyMFyBQOOxQWKrSJdHNaA7ZP07QQjwdSRQFbJHsUBdH22oBfTnT891yMmWW1iFLHZuV2sMivUGnH-EBO29HHVzAXUlOzErqDaVnovMvdPN6_Vi80LpdSWikYbe2zXUV4csBAc6bC1NweP9omNidBk9Vgo-3q2mHw-H6mfFnTONUipbtbV8ifI2MKQ-ZS0ciNomOcNgyYu5mc-ebDFpZU9xx-_nakCOscUm0tHN224MxKNIx-9E7XrS0PlSOauNYqi4AVKP9svW0", + "type": "string" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "url": { + "raw": "http://localhost/download/153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80/uploads-4c2ef740-b115-11ee-8311-9b9e3b5ba63c?type%3Dimage%2Fpng%26name%3Dcat.png", + "protocol": "http", + "host": [ + "localhost" + ], + "path": [ + "download", + "153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80", + "uploads-4c2ef740-b115-11ee-8311-9b9e3b5ba63c" + ], + "query": [ + { + "key": "type%3Dimage%2Fpng%26name%3Dcat.png", + "value": null + } + ] + } + }, + "response": [] + }, + { + "name": "Download (easier with curl) testuser", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "username", + "value": "testuser.org@mydomain", + "type": "string" + }, + { + "key": "password", + "value": "password", + "type": "string" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "url": { + "raw": "http://localhost/download/7165989a44d7b25d65e1b2f97794b49118e5c19b42a91ed75db2c28534cf4a22/b50c5eb0-8f4b-11ee-849d-9fa9bb19403d_4?type=text%2Fplain&name=toUpload2.txt", + "protocol": "http", + "host": [ + "localhost" + ], + "path": [ + "download", + "7165989a44d7b25d65e1b2f97794b49118e5c19b42a91ed75db2c28534cf4a22", + "b50c5eb0-8f4b-11ee-849d-9fa9bb19403d_4" + ], + "query": [ + { + "key": "type", + "value": "text%2Fplain" + }, + { + "key": "name", + "value": "toUpload2.txt" + } + ] + } + }, + "response": [] + }, + { + "name": "Get Identity", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "username", + "value": "testuser.org@mydomain", + "type": "string" + }, + { + "key": "password", + "value": "password", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\",\"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n [ \"Identity/get\", {\n \"accountId\": \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\",\n \"ids\":null\n }, \"1\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://localhost:80/jmap", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "80", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Destroy All Emails", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n\n [ \"Email/query\", {\n \"accountId\" : \"153fb2708466f9285df604835d5a0308f8562bf00b6be9171d4eb29549560b80\"\n }, \"1\" ],\n\n [ \"Email/set\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"1\",\n \"path\": \"accountId\"\n },\n\n \"#destroy\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"1\",\n \"path\": \"ids\"\n }\n }, \"2\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Destroy All PushSubscriptions", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"PushSubscription/get\", {\n \"ids\": null\n }, \"asdas\" ],\n\n [ \"PushSubscription/set\", {\n \"#destroy\": {\n \"name\": \"PushSubscription/get\",\n \"path\": \"list/*/id\",\n \"resultOf\": \"asdas\"\n }\n }, \"0\"\n\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "host", + "value": "james.appscode.ninja" + }, + { + "key": "port", + "value": "8000" + }, + { + "key": "webadminJWT", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImFkbWluIjp0cnVlLCJleHAiOjE5NDYyMzkwMjJ9.Jxb11mtCETJwWtTJlH7wB9tD1H9_SY0ZI8TU4kZ1e4j_hMn1eh-6W2mHOnKqe0X4eDMpQLF1PbpoQzXmu5z-xkBgomisv7yHPEzkxDOlTc8eSuArduixPH3-_CoXazjr-NNO4lhO4yc5_Fu9VT-W1VbpOTtJUmPEuVwAe_UJwDezUkTNWGjWJb7xM-AWwtx_TvccsGVu0ojTV8wgNt_y_KRaYXVqIZhVoQ_8qFXZ9K8skv1Sb1UHoKm3NU0Qbzz3xyZqnh0_boH0zB33OZFZeBgjhiebzvSaIKi8UTLCqKeYnYprChFd452W2TLV3sKMucLjOhhe8qZbLuQPDwoPVxNezLyipZb7MnkxU_V0l-A-KxWQviynK92-JHQFPc789znlMGyKnbvUeMcAOrcP9BhNpIF0W2iM5Nb6Fse2PmUHotVHY6PcpaLhd8tEJQKlzol68Kqtc8uKAb_RH8TWxX8_anP37EAsxwdcX5ZmTlM454Obzd8WotTBmunlQCeYno_rtxFddaeKs71v8QHD4zaCRWEZ5ZPZpIKiFREK8QBkOdv6q9-v0HhoVyxYMoP7Np_cvDtMiicNcGm4HMiFsQv5F8KTX12rMB1G-ko8LY7r0oli_3DQfaU7VSc8_OETb93UgPiEFpYkgy9fVuinpO7LJRCaSVtU6l4gcoKPdjY", + "type": "string" + }, + { + "key": "testuser.org@mydomain", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0dXNlci5vcmdAbXlkb21haW4iLCJpYXQiOjE2MTYyMzkwMjIsImV4cCI6MTk0NjIzOTAyMn0.SO2fTuxB6qQNZqkhwWAndyqXDpyZMrHZFNdgG5ka7j8dW0G9JqU-rx04wqL-R2T51QCVYnlLBM62AVEltK-85ck10nFHEEFwQSD85v5PpI_qzeTz4NRFDxek-5N2gYdK0XQ6NzMvlSwxyUM2TkNZCupIto9H3MDeuDSs0p6Xmwk3iaGKJcIorIUbImf8xzwfB39ytpOw1j6ggAGjczZH8Ykz2PnHQQX2TU8R_dGbn6euYOqnTiZDWggfbxaS1joJ3PatN0Q-jxfuQGwTdZWeSN-Ocvr55MitQvMKJQaoRMVAOFCPXuhCkMq1szKRaBbhnL1nFjmHBpMJC5VpSeDgKOa-govmuTrnRMDV15n5KeeSWEeE2Km9ibOqzZktlR5EU-lU16h-a0u5ydPfax4HcUnNnVcKFqjSGyMFyBQOOxQWKrSJdHNaA7ZP07QQjwdSRQFbJHsUBdH22oBfTnT891yMmWW1iFLHZuV2sMivUGnH-EBO29HHVzAXUlOzErqDaVnovMvdPN6_Vi80LpdSWikYbe2zXUV4csBAc6bC1NweP9omNidBk9Vgo-3q2mHw-H6mfFnTONUipbtbV8ifI2MKQ-ZS0ciNomOcNgyYu5mc-ebDFpZU9xx-_nakCOscUm0tHN224MxKNIx-9E7XrS0PlSOauNYqi4AVKP9svW0" + }, + { + "key": "jmapPort", + "value": "80", + "type": "string" + } + ] +} \ No newline at end of file diff --git a/server/apps/distributed-app/README.adoc b/server/apps/distributed-app/README.adoc index aabd25c12e2..ce99b211a92 100644 --- a/server/apps/distributed-app/README.adoc +++ b/server/apps/distributed-app/README.adoc @@ -4,10 +4,6 @@ * Java 21 SDK -Firstly, create your own user network on Docker for the James environment: - - $ docker network create --driver bridge james - Third party compulsory dependencies: * Cassandra 4.0 @@ -15,22 +11,125 @@ Third party compulsory dependencies: * RabbitMQ-Management 3.8.18 * Zenko Cloudserver or AWS S3 +== Features Added: + +* ++++++Restricted email sending to outside the org. e.g; .@ can only send emails to other users with the same and ++++++ +* Added Gmail style "+ addressing". If your email is @, you can use \+@ anywhere and still get your emails. +The server ignores any string following the "+" character until the "@" character. +(more details: https://eit.ces.ncsu.edu/2023/02/gmail-plus-addressing-the-hidden-feature-that-can-help-you-get-more-out-of-your-inbox/) +* ++++++ Disabled all authentication methods except JWT Authentication (RS256). User creation no longer requires a password. ++++++ + +* Generating a JWT key pair: https://github.com/apache/james-project/blob/master/server/apps/distributed-app/docs/modules/ROOT/pages/configure/jmap.adoc#generating-a-jwt-key-pair +* Added a webadmin route for deleting an entire group. Example cURL command: +----- +$ curl --location --request DELETE 'http://ip:port/address/groups/myGroup@mydomain' +----- +* Added a webadmin route for deleting multiple groups. Example cURL command: +----- +$ curl --location --request DELETE 'http://ip:port/address/groups' --data-raw '[ + "myGroup1@mydomain", + "myGroup2@mydomain" +]' +----- +* Added a webadmin route for creating an empty group. Example cURL command: +----- +$ curl --location --request POST 'http://ip:port/address/groups/myGroup@mydomain' +----- +* Added a webadmin route for adding multiple groups with members. Example cURL command: +----- +$ curl --location --request GET 'http://ip:port/address/groups/add-groups' \ +--data-raw '[ + { + "groupAddr": "group1@mydomain", + "memberAddrs": [ + "member1@mydomain" + ] + }, + { + "groupAddr": "group2@mydomain", + "memberAddrs": [ + "member2@mydomain", + "member3@mydomain" + ] + } +]' +----- +Example response body: +----- +[ + { + "address": "group1@mydomain", + "status": "success", + "reason": "", + "membersInfo": [ + { + "address": "member1@mydomain", + "status": "success", + "reason": "" + } + ] + }, + { + "address": "group2@mydomain", + "status": "success", + "reason": "", + "membersInfo": [ + { + "address": "member2@mydomain", + "status": "success", + "reason": "" + }, + { + "address": "member3@mydomain", + "status": "success", + "reason": "" + } + ] + } +] +----- +* Added a webadmin route for checking groups' existence. Example cURL command: +----- +$ curl --location --request GET 'http://ip:port/address/groups/isExist' \ +--data-raw '[ + "aksda.org@mydomain", + "group1.org@mydomain", +]' +----- +Example response body: +----- +[ + { + "address": "aksda.org@mydomain", + "status": "DoesNotExists", + "reason": "" + }, + { + "address": "group1.org@mydomain", + "status": "Exists", + "reason": "" + }, +] +----- + + [source] ----- -$ docker run -d --network james -p 9042:9042 --name=cassandra cassandra:4.1.5 -$ docker run -d --network james -p 9200:9200 --name=opensearch --env 'discovery.type=single-node' --env 'DISABLE_SECURITY_PLUGIN=true' --env 'DISABLE_INSTALL_DEMO_CONFIG=true' opensearchproject/opensearch:2.14.0 -$ docker run -d --network james -p 5672:5672 -p 15672:15672 --name=rabbitmq rabbitmq:3.13.3-management -$ docker run -d --network james -p 8000:8000 --env 'REMOTE_MANAGEMENT_DISABLE=1' --env 'SCALITY_ACCESS_KEY_ID=accessKey1' --env 'SCALITY_SECRET_ACCESS_KEY=secretKey1' --name=s3 ghcr.io/scality/cloudserver:8cbe2c066b3505b26d339dc67315d1041b8c7f3a ----- -== Docker distribution +== Running the server method 1 +----- -To import the image locally: +$ docker compose -f docker-composeOLD.yml up -[source] ----- -docker image load -i target/jib-image.tar ----- +----- + +== Running the server method 2 +----- + +$ cd server/apps/distributed-app/ + +$ mvn clean install -DskipTests + OR +$ mvn com.github.ekryd.sortpom:sortpom-maven-plugin:sort -Dsort.keepBlankLines -Dsort.predefinedSortOrder=custom_1 -DskipTests clean install Then run it along with its dependency: @@ -61,6 +160,13 @@ Disabled by default, its java agent can easily be enabled: environment: - JAVA_TOOL_OPTIONS=-javaagent:/root/glowroot.jar ---- +======= +$ docker compose -f docker-compose.yml up -d + +$ sudo (which java) -Dworking.directory=. -Dlogback.configurationFile=conf/logback.xml -Djdk.tls.ephemeralDHKeySize=2048 -jar target/james-server-distributed-app.jar --generate-keystore + +----- + The [CLI](https://james.apache.org/server/manage-cli.html) can easily be used: @@ -79,30 +185,35 @@ Note that you can create a domain via an environment variable. This domain will - DOMAIN=domain.tld ---- -== Running without docker - -To run james, you have to create a directory containing required configuration files. - -James requires the configuration to be in a subfolder of working directory that is called -**conf**. A [sample directory](https://github.com/apache/james-project/tree/master/server/apps/distributed-app/sample-configuration) -is provided with some default values you may need to replace, especially compulsory third party software endpoints. - -You will need to update its content to match your needs. - -Once everything is set up, you just have to run the jar with: - -[source] ----- -$ java -Dworking.directory=. -Dlogback.configurationFile=conf/logback.xml -Djdk.tls.ephemeralDHKeySize=2048 -jar james-server-distributed-app.jar --generate-keystore ----- - -In the case of quick start James without manually creating a keystore (e.g. for development), just input the command argument `--generate-keystore` when running, -James will auto-generate keystore file with the default setting that is declared in `jmap.properties` (tls.keystoreURL, tls.secret) - [source] ----- -$ java -Dworking.directory=. -Dlogback.configurationFile=conf/logback.xml -Djdk.tls.ephemeralDHKeySize=2048 -jar james-server-distributed-app.jar --generate-keystore ----- - -Note that binding ports below 1024 requires administrative rights. +== Send emails using telnet + +``` +telnet 127.0.0.1 25 +EHLO spammer.com +MAIL FROM: +RCPT TO: +DATA +Subject: This mail should be blocked + +Is it? +. +quit +``` + +``` +telnet 127.0.0.1 25 +EHLO spammer.com +MAIL FROM: +RCPT TO: +DATA +Subject: This mail should be received + +Is it? +. +quit +``` + +== TODO +1. Have to check is all the images run the by docker-compose needed or not. \ No newline at end of file diff --git a/server/apps/distributed-app/sample-configuration/batchsizes.properties b/server/apps/distributed-app/conf/batchsizes.properties similarity index 100% rename from server/apps/distributed-app/sample-configuration/batchsizes.properties rename to server/apps/distributed-app/conf/batchsizes.properties diff --git a/server/apps/distributed-app/conf/blob.properties b/server/apps/distributed-app/conf/blob.properties new file mode 100644 index 00000000000..2e87b6c193c --- /dev/null +++ b/server/apps/distributed-app/conf/blob.properties @@ -0,0 +1,128 @@ +# ============================================= BlobStore Implementation ================================== +# Read https://james.apache.org/server/config-blobstore.html for further details + +# Choose your BlobStore implementation +# Mandatory, allowed values are: cassandra, s3 +# *WARNING*: JAMES-3591 Cassandra is not made to store large binary content, its use will be suboptimal compared to +# alternatives (namely S3 compatible BlobStores backed by for instance S3, MinIO or Ozone) +implementation=cassandra + +# ========================================= Deduplication ======================================== +# If you choose to enable deduplication, the mails with the same content will be stored only once. +# Warning: Once this feature is enabled, there is no turning back as turning it off will lead to the deletion of all +# the mails sharing the same content once one is deleted. +# Mandatory, Allowed values are: true, false +deduplication.enable=false + +# deduplication.family needs to be incremented every time the deduplication.generation.duration is changed +# Positive integer, defaults to 1 +# deduplication.gc.generation.family=1 + +# Duration of generation. +# Deduplication only takes place within a singe generation. +# Only items two generation old can be garbage collected. (This prevent concurrent insertions issues and +# accounts for a clock skew). +# deduplication.family needs to be incremented everytime this parameter is changed. +# Duration. Default unit: days. Defaults to 30 days. +# deduplication.gc.generation.duration=30days + +# ========================================= Encryption ======================================== +# If you choose to enable encryption, the blob content will be encrypted before storing them in the BlobStore. +# Warning: Once this feature is enabled, there is no turning back as turning it off will lead to all content being +# encrypted. This comes at a performance impact but presents you from leaking data if, for instance the third party +# offering you a S3 service is compromised. +# Optional, Allowed values are: true, false, defaults to false +encryption.aes.enable=false + +# Mandatory (if AES encryption is enabled) salt and password. Salt needs to be an hexadecimal encoded string +#encryption.aes.password=xxx +#encryption.aes.salt=73616c7479 +# Optional, defaults to PBKDF2WithHmacSHA512 +#encryption.aes.private.key.algorithm=PBKDF2WithHmacSHA512 + +# ========================================= Cassandra BlobStore Cache ====================================== +# A cassandra cache can be enabled to reduce latency when reading small blobs frequently +# A dedicated keyspace with a replication factor of one is then used +# Cache eviction policy is TTL based +# Only blobs below a given threshold will be stored. +# To be noted that blobs are stored within a single Cassandra row, hence a low threshold should be used. + +# Enable the cache? Optional and default to false. Must be a boolean. +cache.enable=false + +# Cache eviction policy is TTL based. Optional and defaults to 7 days. Must be a duration. +# Valid units: ms, sec, min, hour, day, week, month, year +# cache.cassandra.ttl=7days + +# Timeout after which this cache should be bypassed. Optional and defaults to 100ms. Can not exceed 1 hour. +# Must be a duration Valid units: ms, sec, min, hour, day, week, month, year +# cache.cassandra.timeout=100ms + +# Maximum size of stored objects expressed in bytes. Must be strictly positive. Defaults to 8192. +# Units: bytes, Kib, MiB, GiB, TiB +# cache.sizeThresholdInBytes=8 KiB + +# ============================================== ObjectStorage ============================================ + +# ========================================= ObjectStorage Buckets ========================================== +# bucket names prefix +# Optional, default no prefix +# objectstorage.bucketPrefix=prod- + +# Default bucket name +# Optional, default is bucketPrefix + `default` +# objectstorage.namespace=james + +# ========================================= ObjectStorage on S3 ============================================= +# Mandatory if you choose s3 storage service, S3 authentication endpoint +objectstorage.s3.endPoint=http://s3.docker.test:8000/ + +# Mandatory if you choose s3 storage service, S3 region +#objectstorage.s3.region=eu-west-1 +objectstorage.s3.region=us-east-1 + +# Mandatory if you choose aws-s3 storage service, access key id configured in S3 +objectstorage.s3.accessKeyId=accessKey1 + +# Mandatory if you choose s3 storage service, secret key configured in S3 +objectstorage.s3.secretKey=secretKey1 + +# Optional if you choose s3 storage service: The trust store file, secret, and algorithm to use +# when connecting to the storage service. If not specified falls back to Java defaults. +#objectstorage.s3.truststore.path= +#objectstorage.s3.truststore.type=JKS +#objectstorage.s3.truststore.secret= +#objectstorage.s3.truststore.algorithm=SunX509 + + +# optional: Object read in memory will be rejected if they exceed the size limit exposed here. Size, exemple `100M`. +# Supported units: K, M, G, defaults to B if no unit is specified. If unspecified, big object won't be prevented +# from being loaded in memory. This settings complements protocol limits. +# objectstorage.s3.in.read.limit=50M + +# ============================================ Blobs Exporting ============================================== +# Read https://james.apache.org/server/config-blob-export.html for further details + +# Choosing blob exporting mechanism, allowed mechanism are: localFile, linshare +# LinShare is a file sharing service, will be explained in the below section +# Optional, default is localFile +blob.export.implementation=localFile + +# ======================================= Local File Blobs Exporting ======================================== +# Optional, directory to store exported blob, directory path follows James file system format +# default is file://var/blobExporting +blob.export.localFile.directory=file://var/blobExporting + +# ======================================= LinShare File Blobs Exporting ======================================== +# LinShare is a sharing service where you can use james, connects to an existing LinShare server and shares files to +# other mail addresses as long as those addresses available in LinShare. For example you can deploy James and LinShare +# sharing the same LDAP repository +# Mandatory if you choose LinShare, url to connect to LinShare service +# blob.export.linshare.url=http://linshare:8080 + +# ======================================= LinShare Configuration BasicAuthentication =================================== +# Authentication is mandatory if you choose LinShare, TechnicalAccount is need to connect to LinShare specific service. +# For Example: It will be formalized to 'Authorization: Basic {Credential of UUID/password}' + +# blob.export.linshare.technical.account.uuid=Technical_Account_UUID +# blob.export.linshare.technical.account.password=password diff --git a/server/apps/distributed-app/sample-configuration/cassandra-driver.conf b/server/apps/distributed-app/conf/cassandra-driver.conf similarity index 100% rename from server/apps/distributed-app/sample-configuration/cassandra-driver.conf rename to server/apps/distributed-app/conf/cassandra-driver.conf diff --git a/server/apps/distributed-app/conf/cassandra.properties b/server/apps/distributed-app/conf/cassandra.properties new file mode 100644 index 00000000000..4846cf3b45c --- /dev/null +++ b/server/apps/distributed-app/conf/cassandra.properties @@ -0,0 +1,44 @@ +# Configuration file for cassandra mailbox +# Read https://james.apache.org/server/config-cassandra.html for further details +# Advanced Cassandra driver option needs to be set via cassandra-driver.conf configuration file + +cassandra.nodes=localhost +cassandra.keyspace.create=true +cassandra.keyspace=apache_james +#cassandra.user=cassandra +#cassandra.password=cassandra +cassandra.replication.factor=1 +cassandra.retryConnection.maxRetries=200 +cassandra.retryConnection.minDelay=5000 + +## These low level tuning options controls performance related options in Cassandra related code +## The default values are documented here. Understand the effects before editing. +# mailbox.read.repair.chance=0.1 +## Maximum probability of running a read repair for the mailbox counters +# mailbox.counters.read.repair.chance.max=0.1 +## Probability of running a mailbox counters read repair for 100 messages. +## Inversely proportional to the count of messages +## Formula: read_repair_chance = min(mailbox.counters.read.repair.chance.max, (100/unseens)*mailbox.counters.read.repair.chance.one.hundred) +# mailbox.counters.read.repair.chance.one.hundred=0.01 +# mailbox.max.retry.acl=1000 +# mailbox.max.retry.modseq=100000 +# mailbox.max.retry.uid=100000 +# mailbox.max.retry.message.flags.update=1000 +# mailbox.max.retry.message.id.flags.update=1000 +# fetch.advance.row.count=1000 +# chunk.size.expunge=100 +# mailbox.blob.part.size=102400 + +# Optional. Allows specifying consistency level ONE for reads in Cassandra BlobStore. +# Falls back to default read consistency level if the blob is missing. +# Defaults to false. +# optimistic.consistency.level.enabled=false + +# Optional. Allows not to use lightweight transactions in CassandraMailRepository. +# If disabled we implement an idempotent behaviour (duplicates are overridden, missing entries upon deletes are ignored). +# Defaults to true. +# mailrepository.strong.consistency=true + +# Optional, default to 0. Defensive value to add to uids and modseqs generated. This can be used as an heuristic to maintain +# consistency even when consensus of Lightweight Transactions is broken, exemple during a disaster recovery process. +# uid.modseq.increment=0 \ No newline at end of file diff --git a/server/apps/distributed-app/conf/deletedMessageVault.properties b/server/apps/distributed-app/conf/deletedMessageVault.properties new file mode 100644 index 00000000000..a6df89a2275 --- /dev/null +++ b/server/apps/distributed-app/conf/deletedMessageVault.properties @@ -0,0 +1,7 @@ +# ============================================= Deleted Messages Vault Configuration ================================== + +enabled=false + +# Retention period for your deleted messages into the vault, after which they expire and can be potentially cleaned up +# Optional, default 1y +# retentionPeriod=1y \ No newline at end of file diff --git a/server/apps/distributed-app/sample-configuration/dnsservice.xml b/server/apps/distributed-app/conf/dnsservice.xml similarity index 100% rename from server/apps/distributed-app/sample-configuration/dnsservice.xml rename to server/apps/distributed-app/conf/dnsservice.xml diff --git a/server/apps/distributed-app/sample-configuration/domainlist.xml b/server/apps/distributed-app/conf/domainlist.xml similarity index 100% rename from server/apps/distributed-app/sample-configuration/domainlist.xml rename to server/apps/distributed-app/conf/domainlist.xml diff --git a/server/apps/distributed-app/conf/extensions.properties b/server/apps/distributed-app/conf/extensions.properties new file mode 100644 index 00000000000..e50a87b29e5 --- /dev/null +++ b/server/apps/distributed-app/conf/extensions.properties @@ -0,0 +1,10 @@ +# This files enables customization of users extensions injections with guice. +# A user can drop some jar-with-dependencies within the ./extensions-jars folder and +# reference classes of these jars in some of James extension mechanisms. + +# This includes mailets, matchers, mailboxListeners, preDeletionHooks, protocolHandlers, webAdmin routes + +# Upon injections, the user can reference additional guice modules, that are going to be used only upon extensions instantiation. + +#List of coma separated (',') fully qualified class names of additional guice modules to be used to instantiate extensions +#guice.extension.module=mailets.MemoryBlacklistModule \ No newline at end of file diff --git a/server/apps/distributed-app/sample-configuration/healthcheck.properties b/server/apps/distributed-app/conf/healthcheck.properties similarity index 100% rename from server/apps/distributed-app/sample-configuration/healthcheck.properties rename to server/apps/distributed-app/conf/healthcheck.properties diff --git a/server/apps/distributed-app/sample-configuration/imapserver.xml b/server/apps/distributed-app/conf/imapserver.xml similarity index 100% rename from server/apps/distributed-app/sample-configuration/imapserver.xml rename to server/apps/distributed-app/conf/imapserver.xml diff --git a/server/apps/distributed-app/conf/jmap.properties b/server/apps/distributed-app/conf/jmap.properties new file mode 100644 index 00000000000..1cae9da13e1 --- /dev/null +++ b/server/apps/distributed-app/conf/jmap.properties @@ -0,0 +1,47 @@ +# Configuration file for JMAP +# Read https://james.apache.org/server/config-jmap.html for further details + +enabled=true +jmap.version.default=rfc-8621 +tls.keystoreURL=file://conf/keystore +tls.secret=james72laBalle + + +jmap.port=80 +url.prefix=http://james.appscode.ninja +websocket.url.prefix=ws://james.appscode.ninja + +email.send.max.size=100M +max.size.attachments.per.mail=100M +# only not work for RabbitMQ mail queue +#delay.sends.enabled=true + +# Alternatively TLS keys can be supplied via PEM files +# tls.privateKey=file://conf/private.nopass.key +# tls.certificates=file://conf/certs.self-signed.csr +# An optional secret might be specified for the private key +# tls.secret=james72laBalle +# view.email.query.enabled=true +#authentication.strategy.draft=BasicAuthenticationStrategy + +# +# If you wish to use OAuth authentication, you should provide a valid JWT public key. +# The following entry specify the link to the URL of the public key file, +# which should be a PEM format file. +# +jwt.publickeypem.url=file://conf/rs256-4096-public.pem +# Should simple Email/query be resolved against a Cassandra projection, or should we resolve them against OpenSearch? +# This enables a higher resilience, but the projection needs to be correctly populated. False by default. +# view.email.query.enabled=true + +# If you want to specify authentication strategies for Jmap draft version +# For custom Authentication Strategy not inside package "org.apache.james.jmap.http", you have to specify its FQDN +# authentication.strategy.draft=AccessTokenAuthenticationStrategy,JWTAuthenticationStrategy,QueryParameterAccessTokenAuthenticationStrategy + +# If you want to specify authentication strategies for Jmap rfc-8621 version +# For custom Authentication Strategy not inside package "org.apache.james.jmap.http", you have to specify its FQDN + +authentication.strategy.rfc8621=JWTAuthenticationStrategy,BasicAuthenticationStrategy + +# Prevent server side request forgery by preventing calls to the private network ranges. Defaults to true, can be disabled for testing. +webpush.prevent.server.side.request.forgery=false \ No newline at end of file diff --git a/server/apps/distributed-app/sample-configuration/jmx.properties b/server/apps/distributed-app/conf/jmx.properties similarity index 100% rename from server/apps/distributed-app/sample-configuration/jmx.properties rename to server/apps/distributed-app/conf/jmx.properties diff --git a/server/apps/distributed-app/conf/jmxremote.access b/server/apps/distributed-app/conf/jmxremote.access new file mode 100644 index 00000000000..a27ef13c3af --- /dev/null +++ b/server/apps/distributed-app/conf/jmxremote.access @@ -0,0 +1 @@ +james-admin readwrite diff --git a/server/apps/distributed-app/conf/jmxremote.password b/server/apps/distributed-app/conf/jmxremote.password new file mode 100644 index 00000000000..e835b646c43 --- /dev/null +++ b/server/apps/distributed-app/conf/jmxremote.password @@ -0,0 +1 @@ +james-admin vsWVNdnSuM diff --git a/server/apps/distributed-app/conf/jvm.properties b/server/apps/distributed-app/conf/jvm.properties new file mode 100644 index 00000000000..a857feaa139 --- /dev/null +++ b/server/apps/distributed-app/conf/jvm.properties @@ -0,0 +1,61 @@ +# ============================================= Extra JVM System Properties =========================================== +# To avoid clutter on the command line, any properties in this file will be added as system properties on server start. + +# Required to locate Cassandra driver configuration +config.file=conf/cassandra-driver.conf + +# Example: If you need an option -Dmy.property=whatever, you can instead add it here as +# my.property=whatever + +# (Optional). String (size, integer + size units, example: `12 KIB`, supported units are bytes KIB MIB GIB TIB). Defaults to 100KIB. +# This governs the threshold MimeMessageInputStreamSource relies on for storing MimeMessage content on disk. +# Below, data is stored in memory. Above data is stored on disk. +# Lower values will lead to longer processing time but will minimize heap memory usage. Modern SSD hardware +# should however support a high throughput. Higher values will lead to faster single mail processing at the cost +# of higher heap usage. +#james.message.memory.threshold=12K + +# Optional. Boolean. Defaults to false. Recommended value is false. +# Should MimeMessageWrapper use a copy of the message in memory? Or should bigger message exceeding james.message.memory.threshold +# be copied to temporary files? +#james.message.usememorycopy=false + +# Mode level of resource leak detection. It is used to detect a resource not be disposed of before it's garbage-collected. +# Example `MimeMessageInputStreamSource` +# Optional. Allowed values are: none, simple, advanced, testing +# - none: Disables resource leak detection. +# - simple: Enables output a simplistic error log if a leak is encountered and would free the resources (default). +# - advanced: Enables output an advanced error log implying the place of allocation of the underlying object and would free resources. +# - testing: Enables output an advanced error log implying the place of allocation of the underlying object and rethrow an error, that action is being taken by the development team. +#james.lifecycle.leak.detection.mode=simple + +# Should we add the host in the MDC logging context for incoming IMAP, SMTP, POP3? Doing so, a DNS resolution +# is attempted for each incoming connection, which can be costly. Remote IP is always added to the logging context. +# Optional. Boolean. Defaults to true. +#james.protocols.mdc.hostname=true + +# Manage netty leak detection level see https://netty.io/wiki/reference-counted-objects.html#leak-detection-levels +# io.netty.leakDetection.level=SIMPLE + +# Should James exit on Startup error? Boolean, defaults to true. This prevents partial startup. +# james.exit.on.startup.error=true + +# Fails explicitly on missing configuration file rather that taking implicit values. Defautls to false. +# james.fail.on.missing.configuration=true + +# JMX, when enable causes RMI to plan System.gc every hour. Set this instead to once every 1000h. +sun.rmi.dgc.server.gcInterval=3600000000 +sun.rmi.dgc.client.gcInterval=3600000000 + +# Automatically generate a JMX password upon start. CLI is able to retrieve this password. Not supported on windows. +james.jmx.credential.generation=true + +# Disable Remote Code Execution feature from JMX +# CF https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.management/share/classes/com/sun/jmx/remote/security/MBeanServerAccessController.java#L646 +jmx.remote.x.mlet.allow.getMBeansFromURL=false + +# Disabling JMAP filters event source increments is necessary during rolling adoption of this change. +# Defaults to true, meaning James will use JMAP filters event source increments, thus transparently and significantly +# improving JMAP filter storage efficiency. Snapshots enable to only build the aggregate from the last few events. +# james.jmap.filters.eventsource.increments.enabled=true +# james.jmap.filters.eventsource.snapshots.enabled=true diff --git a/server/apps/distributed-app/conf/keystore b/server/apps/distributed-app/conf/keystore new file mode 100644 index 00000000000..142cf84b0c5 Binary files /dev/null and b/server/apps/distributed-app/conf/keystore differ diff --git a/server/apps/distributed-app/sample-configuration/listeners.xml b/server/apps/distributed-app/conf/listeners.xml similarity index 100% rename from server/apps/distributed-app/sample-configuration/listeners.xml rename to server/apps/distributed-app/conf/listeners.xml diff --git a/server/apps/distributed-app/sample-configuration/lmtpserver.xml b/server/apps/distributed-app/conf/lmtpserver.xml similarity index 100% rename from server/apps/distributed-app/sample-configuration/lmtpserver.xml rename to server/apps/distributed-app/conf/lmtpserver.xml diff --git a/server/apps/distributed-app/sample-configuration/logback.xml b/server/apps/distributed-app/conf/logback.xml similarity index 100% rename from server/apps/distributed-app/sample-configuration/logback.xml rename to server/apps/distributed-app/conf/logback.xml diff --git a/server/apps/distributed-app/conf/mailetcontainer.xml b/server/apps/distributed-app/conf/mailetcontainer.xml new file mode 100644 index 00000000000..356c9181e23 --- /dev/null +++ b/server/apps/distributed-app/conf/mailetcontainer.xml @@ -0,0 +1,181 @@ + + + + + + + + + + + postmaster + + + + 20 + cassandra://var/mail/error/ + + + + + + + + + + transport + + + + + + + blacklisted + + + cassandra://var/mail/blacklisted/ + + + + + + mailetContainerErrors + + + ignore + + + cassandra://var/mail/error/ + propagate + + + + + + + + + + + + + bcc + ignore + + + rrt-error + + + local-delivery + + + local-address-error + 550 - Requested action not taken: no such user here + + + relay + + + relay-denied + + + + + + ignore + + + ignore + + + + ignore + + + + + + + outgoing + 5000, 100000, 500000 + 3 + 0 + 10 + true + bounces + + + + + + mailetContainerLocalAddressError + + + none + + + cassandra://var/mail/address-error/ + + + + + + mailetContainerRelayDenied + + + none + + + cassandra://var/mail/relay-denied/ + Warning: You are sending an e-mail to a remote server. You must be authenticated to perform such an operation + + + + + + bounces + + + false + + + + + + cassandra://var/mail/rrt-error/ + true + + + + + + + + + + diff --git a/server/apps/distributed-app/sample-configuration/mailrepositorystore.xml b/server/apps/distributed-app/conf/mailrepositorystore.xml similarity index 100% rename from server/apps/distributed-app/sample-configuration/mailrepositorystore.xml rename to server/apps/distributed-app/conf/mailrepositorystore.xml diff --git a/server/apps/distributed-app/sample-configuration/managesieveserver.xml b/server/apps/distributed-app/conf/managesieveserver.xml similarity index 100% rename from server/apps/distributed-app/sample-configuration/managesieveserver.xml rename to server/apps/distributed-app/conf/managesieveserver.xml diff --git a/server/apps/distributed-app/conf/opensearch.properties b/server/apps/distributed-app/conf/opensearch.properties new file mode 100644 index 00000000000..e4554c7ece0 --- /dev/null +++ b/server/apps/distributed-app/conf/opensearch.properties @@ -0,0 +1,100 @@ +# 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. + +# This template file can be used as example for James Server configuration +# DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS + +# Configuration file for OpenSearch +# Read https://james.apache.org/server/config-opensearch.html for further details + +opensearch.masterHost=localhost +opensearch.port=9200 + +# Optional. Only http or https are accepted, default is http +opensearch.hostScheme=https + +# Optional, default is `default` +# Choosing the SSL check strategy when using https scheme +# default: Use the default SSL TrustStore of the system. +# ignore: Ignore SSL Validation check (not recommended). +# override: Override the SSL Context to use a custom TrustStore containing ES server's certificate. +opensearch.hostScheme.https.sslValidationStrategy=ignore + +# Optional. Required when using 'https' scheme and 'override' sslValidationStrategy +# Configure OpenSearch rest client to use this trustStore file to recognize nginx's ssl certificate. +# You need to specify both trustStorePath and trustStorePassword +# opensearch.hostScheme.https.trustStorePath=/file/to/trust/keystore.jks + +# Optional. Required when using 'https' scheme and 'override' sslValidationStrategy +# Configure OpenSearch rest client to use this trustStore file with the specified password. +# You need to specify both trustStorePath and trustStorePassword +# opensearch.hostScheme.https.trustStorePassword=myJKSPassword + +# Optional. default is `default` +# Configure OpenSearch rest client to use host name verifier during SSL handshake +# default: using the default hostname verifier provided by apache http client. +# accept_any_hostname: accept any host (not recommended). +# opensearch.hostScheme.https.hostNameVerifier=default + +# Optional. +# Basic auth username to access opensearch. +# Ignore opensearch.user and opensearch.password to not be using authentication (default behaviour). +# Otherwise, you need to specify both properties. +opensearch.user=admin + +# Optional. +# Basic auth password to access opensearch. +# Ignore opensearch.user and opensearch.password to not be using authentication (default behaviour). +# Otherwise, you need to specify both properties. +opensearch.password=admin + +# You can alternatively provide a list of hosts following this format : +# opensearch.hosts=host1:9200,host2:9200 +# opensearch.clusterName=cluster + +opensearch.nb.shards=5 +opensearch.nb.replica=1 +opensearch.index.waitForActiveShards=1 +opensearch.retryConnection.maxRetries=7 +opensearch.retryConnection.minDelay=3000 +# Index or not attachments (default value: true) +opensearch.indexAttachments=true + +# Search overrides allow resolution of predefined search queries against alternative sources of data +# and allow bypassing opensearch. This is useful to handle most resynchronisation queries that +# are simple enough to be resolved against Cassandra. +# +# Possible values are: +# - `org.apache.james.mailbox.cassandra.search.AllSearchOverride` Some IMAP clients uses SEARCH ALL to fully list messages in +# a mailbox and detect deletions. This is typically done by clients not supporting QRESYNC and from an IMAP perspective +# is considered an optimisation as less data is transmitted compared to a FETCH command. Resolving such requests against +# Cassandra is enabled by this search override and likely desirable. +# - `org.apache.james.mailbox.cassandra.search.UidSearchOverride`. Same as above but restricted by ranges. +# - `org.apache.james.mailbox.cassandra.search.DeletedSearchOverride`. Find deleted messages by looking up in the relevant Cassandra +# table. +# - `org.apache.james.mailbox.cassandra.search.DeletedWithRangeSearchOverride`. Same as above but limited by ranges. +# - `org.apache.james.mailbox.cassandra.search.NotDeletedWithRangeSearchOverride`. List non deleted messages in a given range. +# Lists all messages and filters out deleted message thus this is based on the following heuristic: most messages are not marked as deleted. +# - `org.apache.james.mailbox.cassandra.search.UnseenSearchOverride`. List unseen messages in the corresponding cassandra projection. +# +# Please note that custom overrides can be defined here. +# +# opensearch.search.overrides=org.apache.james.mailbox.cassandra.search.AllSearchOverride,org.apache.james.mailbox.cassandra.search.DeletedSearchOverride, org.apache.james.mailbox.cassandra.search.DeletedWithRangeSearchOverride,org.apache.james.mailbox.cassandra.search.NotDeletedWithRangeSearchOverride,org.apache.james.mailbox.cassandra.search.UidSearchOverride,org.apache.james.mailbox.cassandra.search.UnseenSearchOverride + +# Optional. Default is `false` +# When set to true, James will attempt to reindex from the indexed message when moved. If the message is not found, it will fall back to the old behavior (The message will be indexed from the blobStore source) +# opensearch.message.index.optimize.move=false \ No newline at end of file diff --git a/server/apps/distributed-app/sample-configuration/pop3server.xml b/server/apps/distributed-app/conf/pop3server.xml similarity index 100% rename from server/apps/distributed-app/sample-configuration/pop3server.xml rename to server/apps/distributed-app/conf/pop3server.xml diff --git a/server/apps/distributed-app/sample-configuration/pulsar.properties b/server/apps/distributed-app/conf/pulsar.properties similarity index 100% rename from server/apps/distributed-app/sample-configuration/pulsar.properties rename to server/apps/distributed-app/conf/pulsar.properties diff --git a/server/apps/distributed-app/sample-configuration/queue-pulsar.properties b/server/apps/distributed-app/conf/queue-pulsar.properties similarity index 100% rename from server/apps/distributed-app/sample-configuration/queue-pulsar.properties rename to server/apps/distributed-app/conf/queue-pulsar.properties diff --git a/server/apps/distributed-app/sample-configuration/queue.properties b/server/apps/distributed-app/conf/queue.properties similarity index 100% rename from server/apps/distributed-app/sample-configuration/queue.properties rename to server/apps/distributed-app/conf/queue.properties diff --git a/server/apps/distributed-app/conf/rabbitmq.properties b/server/apps/distributed-app/conf/rabbitmq.properties new file mode 100644 index 00000000000..af2b1793195 --- /dev/null +++ b/server/apps/distributed-app/conf/rabbitmq.properties @@ -0,0 +1,90 @@ +# RabbitMQ configuration + +# Read https://james.apache.org/server/config-rabbitmq.html for further details + +# Mandatory +uri=amqp://localhost:5672 +# If you use a vhost, specify it as well at the end of the URI +# uri=amqp://rabbitmq:5672/vhost + +# Vhost to use for creating queues and exchanges +# Optional, only use this if you have invalid URIs containing characters like '_' +# vhost=vhost1 + +# Optional, default to the host specified as part of the URI. +# Allow creating cluster aware connections. +# hosts=ip1:5672,ip2:5672 + +# RabbitMQ Administration Management +# Mandatory +management.uri=http://localhost:15672 +# Mandatory +management.user=guest +# Mandatory +management.password=guest + +# Configure retries count to retrieve a connection. Exponential backoff is performed between each retries. +# Optional integer, defaults to 10 +#connection.pool.retries=10 +# Configure initial duration (in ms) between two connection retries. Exponential backoff is performed between each retries. +# Optional integer, defaults to 100 +#connection.pool.min.delay.ms=100 +# Configure retries count to retrieve a channel. Exponential backoff is performed between each retries. +# Optional integer, defaults to 3 +#channel.pool.retries=3 +# Configure timeout duration (in ms) to obtain a rabbitmq channel. Defaults to 30 seconds. +# Optional integer, defaults to 30 seconds. +#channel.pool.max.delay.ms=30000 +# Configure the size of the channel pool. +# Optional integer, defaults to 3 +#channel.pool.size=3 + +# Boolean. Whether to activate Quorum queue usage for use cases that benefits from it (work queue). +# Quorum queues enables high availability. +# False (default value) results in the usage of classic queues. +#quorum.queues.enable=true + +# Strictly positive integer. The replication factor to use when creating quorum queues. +#quorum.queues.replication.factor + +# Parameters for the Cassandra administrative view + +# Whether the Cassandra administrative view should be activated. Boolean value defaulting to true. +# Not necessarily needed for MDA deployments, mail queue management adds significant complexity. +# cassandra.view.enabled=true + +# Period of the window. Too large values will lead to wide rows while too little values might lead to many queries. +# Use the number of mail per Cassandra row, along with your expected traffic, to determine this value +# This value can only be decreased to a value dividing the current value +# Optional, default 1h +mailqueue.view.sliceWindow=1h + +# Use to distribute the emails of a given slice within your cassandra cluster +# A good value is 2*cassandraNodeCount +# This parameter can only be increased. +# Optional, default 1 +mailqueue.view.bucketCount=1 + +# Determine the probability to update the browse start pointer +# Too little value will lead to unnecessary reads. Too big value will lead to more expensive browse. +# Choose this parameter so that it get's update one time every one-two sliceWindow +# Optional, default 1000 +mailqueue.view.updateBrowseStartPace=1000 + +# Enables or disables the gauge metric on the mail queue size +# Computing the size of the mail queue is currently implemented on top of browse operation and thus have a linear complexity +# Metrics get exported periodically as configured in opensearch.properties, thus getSize is also called periodically +# Choose to disable it when the mail queue size is getting too big +# Note that this is as well a temporary workaround until we get 'getSize' method better optimized +# Optional, default false +mailqueue.size.metricsEnabled=false + +# Whether to enable task consumption on this node. Tasks are WebAdmin triggered long running jobs. +# Disable with caution (this only makes sense in a distributed setup where other nodes consume tasks). +# Defaults to true. +task.consumption.enabled=true + +# Configure queue ttl (in ms). References: https://www.rabbitmq.com/ttl.html#queue-ttl. +# This is used only on queues used to share notification patterns, are exclusive to a node. If omitted, it will not add the TTL configure when declaring queues. +# Optional integer, defaults is 3600000. +#notification.queue.ttl=3600000 \ No newline at end of file diff --git a/server/apps/distributed-app/sample-configuration/recipientrewritetable.xml b/server/apps/distributed-app/conf/recipientrewritetable.xml similarity index 100% rename from server/apps/distributed-app/sample-configuration/recipientrewritetable.xml rename to server/apps/distributed-app/conf/recipientrewritetable.xml diff --git a/server/apps/distributed-app/conf/rs256-4096-public.pem b/server/apps/distributed-app/conf/rs256-4096-public.pem new file mode 100644 index 00000000000..4f73e56b9ec --- /dev/null +++ b/server/apps/distributed-app/conf/rs256-4096-public.pem @@ -0,0 +1,14 @@ +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAy+4NZ2Sp728kWtYuGf0w +87LyPg2mFAkvHRh/h7hMJ0QW0yRhN6DqsbfFif2klalMkeMwoi7BoqQIeySshSpr +FIMNMcNiypXYzowQMKpGoxZoyfWOrxeFqOrAwazyDtaHaAQN+/15737dTMLi3XNI +2EQmhoYcVWyeq88KzW2YQZE8DqzFwX4Ku7xdaM3jMarWdNhYFMAeyE+ZRbaBXIKs +M66QodoNr1mQRGTlI4q4MwsbVITtv2mcF4R+CHeNtv+ouLoQDYFsdcIzB4vNUilj +b2h93knamAkUZ6IuO9vGt1Phsr/X6shMyI1an1KZw+F6Ow5lWcp8KPWo2dPK10Is +qN3XfXEaIMb4qgDH/S0+ib/ZC0cJf/7KBkihbYN+Ijak5nWOo3DnvjZFbk3dyWYO +n2knL9IhDGkVv3q/ETlODyDwHCC/nXxNZWwYSoHRaofEXZCBhIVqxG0SfFM3wRtc +Xvjzdo+34XVFql6MK+VNIYUFt8jIEzBtM9z4Xg3AbZ7WujKFKIwEuYlD1kMj5y/2 +VdTY3biwx8328eUQu2HlWhc7ESUU0j7EjxHc8EwYiImhhg4Aa+BLDn8TWKg3CZUw +o9Z6NNsUjKf0umIsSJUQvEwm9oJRuZZPmmgoVcbhLtU3/OL8/dzQqjjQEAFDsVLd +3VciFppd9DICczpVAnV4fI8CAwEAAQ== +-----END PUBLIC KEY----- diff --git a/server/apps/distributed-app/sample-configuration/smtpserver.xml b/server/apps/distributed-app/conf/smtpserver.xml similarity index 99% rename from server/apps/distributed-app/sample-configuration/smtpserver.xml rename to server/apps/distributed-app/conf/smtpserver.xml index 5e49f5bd08e..50f590e67db 100644 --- a/server/apps/distributed-app/sample-configuration/smtpserver.xml +++ b/server/apps/distributed-app/conf/smtpserver.xml @@ -157,6 +157,4 @@ - - - + \ No newline at end of file diff --git a/server/apps/distributed-app/sample-configuration/tika.properties b/server/apps/distributed-app/conf/tika.properties similarity index 100% rename from server/apps/distributed-app/sample-configuration/tika.properties rename to server/apps/distributed-app/conf/tika.properties diff --git a/server/apps/distributed-app/conf/usersrepository.xml b/server/apps/distributed-app/conf/usersrepository.xml new file mode 100644 index 00000000000..4b44b8f7a90 --- /dev/null +++ b/server/apps/distributed-app/conf/usersrepository.xml @@ -0,0 +1,55 @@ + + + + + + + PBKDF2-SHA512 + true + true + + + + + + + \ No newline at end of file diff --git a/server/apps/distributed-app/sample-configuration/webadmin.properties b/server/apps/distributed-app/conf/webadmin.properties similarity index 94% rename from server/apps/distributed-app/sample-configuration/webadmin.properties rename to server/apps/distributed-app/conf/webadmin.properties index b97c71829c4..93764fedcc1 100644 --- a/server/apps/distributed-app/sample-configuration/webadmin.properties +++ b/server/apps/distributed-app/conf/webadmin.properties @@ -37,13 +37,13 @@ https.enabled=false #https.trust.password # Defaults to false -#jwt.enabled=true +jwt.enabled=true # ## If you wish to use OAuth authentication, you should provide a valid JWT public key. ## The following entry specify the link to the URL of the public key file, ## which should be a PEM format file. ## -#jwt.publickeypem.url=file://conf/jwt_publickey +jwt.publickeypem.url=file://conf/rs256-4096-public.pem # Defaults to false #cors.enable=true @@ -52,4 +52,4 @@ https.enabled=false # List of fully qualified class names that should be exposed over webadmin # in addition to your product default routes. Routes needs to be located # within the classpath or in the ./extensions-jars folder. -#extensions.routes= \ No newline at end of file +#extensions.routes=mailets.BlackListRoutes \ No newline at end of file diff --git a/server/apps/distributed-app/diffs.txt b/server/apps/distributed-app/diffs.txt new file mode 100644 index 00000000000..f79b6d11c45 --- /dev/null +++ b/server/apps/distributed-app/diffs.txt @@ -0,0 +1,97 @@ +diff '--color=auto' conf/blob.properties docker-configuration/blob.properties +8c8 +< implementation=cassandra +--- +> implementation=s3 +diff '--color=auto' conf/cassandra.properties docker-configuration/cassandra.properties +5c5 +< cassandra.nodes=localhost +--- +> cassandra.nodes=cassandra +diff '--color=auto' conf/extensions.properties docker-configuration/extensions.properties +10c10 +< #guice.extension.module=mailets.MemoryBlacklistModule +\ No newline at end of file +--- +> #guice.extension.module= +\ No newline at end of file +diff '--color=auto' conf/jmap.properties docker-configuration/jmap.properties +32a33 +> +Only in conf/: jmxremote.access +Only in conf/: jmxremote.password +diff '--color=auto' conf/jvm.properties docker-configuration/jvm.properties +5c5 +< config.file=conf/cassandra-driver.conf +--- +> config.file=/root/conf/cassandra-driver.conf +48,61c48 +< sun.rmi.dgc.client.gcInterval=3600000000 +< +< # Automatically generate a JMX password upon start. CLI is able to retrieve this password. Not supported on windows. +< james.jmx.credential.generation=true +< +< # Disable Remote Code Execution feature from JMX +< # CF https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.management/share/classes/com/sun/jmx/remote/security/MBeanServerAccessController.java#L646 +< jmx.remote.x.mlet.allow.getMBeansFromURL=false +< +< # Disabling JMAP filters event source increments is necessary during rolling adoption of this change. +< # Defaults to true, meaning James will use JMAP filters event source increments, thus transparently and significantly +< # improving JMAP filter storage efficiency. Snapshots enable to only build the aggregate from the last few events. +< # james.jmap.filters.eventsource.increments.enabled=true +< # james.jmap.filters.eventsource.snapshots.enabled=true +--- +> sun.rmi.dgc.client.gcInterval=3600000000 +\ No newline at end of file +Only in conf/: keystore +diff '--color=auto' conf/opensearch.properties docker-configuration/opensearch.properties +24c24 +< opensearch.masterHost=localhost +--- +> opensearch.masterHost=opensearch +28c28 +< opensearch.hostScheme=https +--- +> # opensearch.hostScheme=http +35c35 +< opensearch.hostScheme.https.sslValidationStrategy=ignore +--- +> # opensearch.hostScheme.https.sslValidationStrategy=default +57c57 +< opensearch.user=admin +--- +> # opensearch.user=elasticsearch +63c63 +< opensearch.password=admin +--- +> # opensearch.password=secret +diff '--color=auto' conf/rabbitmq.properties docker-configuration/rabbitmq.properties +6c6 +< uri=amqp://localhost:5672 +--- +> uri=amqp://rabbitmq:5672 +20c20 +< management.uri=http://localhost:15672 +--- +> management.uri=http://rabbitmq:15672 +diff '--color=auto' conf/smtpserver.xml docker-configuration/smtpserver.xml +54c54 +< true +--- +> false +104c104 +< true +--- +> false +151c151 +< true +--- +> false +diff '--color=auto' conf/webadmin.properties docker-configuration/webadmin.properties +25,26c25 +< # Use host=0.0.0.0 to listen on all addresses +< host=localhost +--- +> host=0.0.0.0 +30d28 +< diff --git a/server/apps/distributed-app/diffssmtp.txt b/server/apps/distributed-app/diffssmtp.txt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/server/apps/distributed-app/docker-compose.yml b/server/apps/distributed-app/docker-compose.yml index 118c9473bf3..450cfd0f8f2 100644 --- a/server/apps/distributed-app/docker-compose.yml +++ b/server/apps/distributed-app/docker-compose.yml @@ -1,53 +1,17 @@ version: '3' - services: - - james: - depends_on: - cassandra: - condition: service_healthy - opensearch: - condition: service_started - tika: - condition: service_started - rabbitmq: - condition: service_started - s3: - condition: service_started - image: apache/james:distributed-latest - container_name: james - hostname: james.local - command: - - --generate-keystore - networks: - - james - ports: - - "80:80" - - "25:25" - - "110:110" - - "143:143" - - "465:465" - - "587:587" - - "993:993" - - "8000:8000" - opensearch: - image: opensearchproject/opensearch:2.14.0 + image: opensearchproject/opensearch:2.1.0 + ports: + - "9200:9200" environment: - discovery.type=single-node - - DISABLE_INSTALL_DEMO_CONFIG=true - - DISABLE_SECURITY_PLUGIN=true - networks: - james: - aliases: - - elasticsearch - cassandra: image: cassandra:4.1.5 ports: - "9042:9042" healthcheck: - test: [ "CMD", "cqlsh", "-e", "describe keyspaces" ] + test: ["CMD", "cqlsh", "-e", "describe keyspaces"] interval: 3s timeout: 20s retries: 5 @@ -55,12 +19,10 @@ services: - JVM_OPTS=-Dcassandra.skip_wait_for_gossip_to_settle=0 -Dcassandra.initial_token=1 networks: - james - tika: image: apache/tika:2.9.2.1 networks: - james - rabbitmq: image: rabbitmq:3.13.3-management ports: @@ -68,7 +30,6 @@ services: - "15672:15672" networks: - james - s3: image: ghcr.io/scality/cloudserver:8cbe2c066b3505b26d339dc67315d1041b8c7f3a #v8.80.41 container_name: s3.docker.test @@ -80,6 +41,5 @@ services: - REMOTE_MANAGEMENT_DISABLE=1 networks: - james - networks: - james: \ No newline at end of file + james: diff --git a/server/apps/distributed-app/docker-composeOLD.yml b/server/apps/distributed-app/docker-composeOLD.yml new file mode 100644 index 00000000000..b08ef96d972 --- /dev/null +++ b/server/apps/distributed-app/docker-composeOLD.yml @@ -0,0 +1,85 @@ +services: + + james: + depends_on: + cassandra: + condition: service_healthy + opensearch: + condition: service_started + tika: + condition: service_started + rabbitmq: + condition: service_started + s3: + condition: service_started + image: shn27/inbox-server:test-upload + container_name: james + hostname: james.local + # volumes: + # - $PWD/webadmin.properties:/root/conf/webadmin.properties + command: + - --generate-keystore + networks: + - james + ports: + - "80:80" + - "25:25" + - "110:110" + - "143:143" + - "465:465" + - "587:587" + - "993:993" + - "8000:8000" + + opensearch: + image: opensearchproject/opensearch:2.1.0 + environment: + - discovery.type=single-node + - DISABLE_INSTALL_DEMO_CONFIG=true + - DISABLE_SECURITY_PLUGIN=true + networks: + james: + aliases: + - elasticsearch + + cassandra: + image: cassandra:4.1.3 + ports: + - "9042:9042" + healthcheck: + test: [ "CMD", "cqlsh", "-e", "describe keyspaces" ] + interval: 3s + timeout: 20s + retries: 5 + environment: + - JVM_OPTS=-Dcassandra.skip_wait_for_gossip_to_settle=0 -Dcassandra.initial_token=1 + networks: + - james + + tika: + image: apache/tika:2.8.0.0 + networks: + - james + + rabbitmq: + image: rabbitmq:3.12.1-management + ports: + - "5672:5672" + - "15672:15672" + networks: + - james + + s3: + image: zenko/cloudserver + container_name: s3.docker.test + environment: + - SCALITY_ACCESS_KEY_ID=accessKey1 + - SCALITY_SECRET_ACCESS_KEY=secretKey1 + - S3BACKEND=mem + - LOG_LEVEL=trace + - REMOTE_MANAGEMENT_DISABLE=1 + networks: + - james + +networks: + james: \ No newline at end of file diff --git a/server/apps/distributed-app/sample-configuration/blob.properties b/server/apps/distributed-app/docker-configuration/blob.properties similarity index 100% rename from server/apps/distributed-app/sample-configuration/blob.properties rename to server/apps/distributed-app/docker-configuration/blob.properties diff --git a/server/apps/distributed-app/docker-configuration/cassandra-driver.conf b/server/apps/distributed-app/docker-configuration/cassandra-driver.conf new file mode 100644 index 00000000000..af1ba360542 --- /dev/null +++ b/server/apps/distributed-app/docker-configuration/cassandra-driver.conf @@ -0,0 +1,147 @@ +# James reference configuration for the DataStax Java driver for Apache Cassandra®. +# +# Unless you use a custom mechanism to load your configuration (see +# SessionBuilder.withConfigLoader), all the values declared here will be used as defaults. +# +# See https://docs.datastax.com/en/developer/java-driver/4.13/manual/core/configuration/ for +# available options. +# +# Please note that contact point and authentication needs to be set in cassandra.properties for now. +datastax-java-driver { + + basic.request { + timeout = 5 seconds + + consistency = QUORUM + + page-size = 5000 + + serial-consistency = SERIAL + } + + advanced.connection { + connect-timeout = 5 seconds + + init-query-timeout = 5 seconds + + pool { + local.size = 2 + + remote.size = 2 + } + + max-requests-per-connection = 1024 + + max-orphan-requests = 256 + + warn-on-init-error = true + } + + advanced.throttler { + // class = org.apache.james.backends.cassandra.utils.LockLessConcurrencyLimitingRequestThrottler + class = ConcurrencyLimitingRequestThrottler + + max-queue-size = 10000 + + max-concurrent-requests = 192 + } + + advanced.reconnect-on-init = true + + advanced.reconnection-policy { + class = ExponentialReconnectionPolicy + + base-delay = 1 second + max-delay = 60 seconds + } + + advanced.retry-policy { + class = DefaultRetryPolicy + } + + advanced.ssl-engine-factory { + // class = DefaultSslEngineFactory + + // hostname-validation = true + + // truststore-path = /path/to/client.truststore + // truststore-password = password123 + // keystore-path = /path/to/client.keystore + // keystore-password = password123 + } + + advanced.request-tracker { + logs { + slow { + threshold = 2 second + + enabled = true + } + + max-query-length = 500 + } + } + + advanced.metrics { + factory { + class = DefaultMetricsFactory + } + + id-generator { + class = DefaultMetricIdGenerator + prefix = "cassandra" + } + session { + enabled = [ + // bytes-sent, + + // bytes-received + + // connected-nodes, + + // cql-requests, + + // cql-client-timeouts, + + // cql-prepared-cache-size, + + // throttling.delay, + + // throttling.queue-size, + + // throttling.errors, + + ] + + cql-requests { + highest-latency = 10 seconds + + lowest-latency = 1 millisecond + + significant-digits = 3 + + refresh-interval = 5 minutes + } + } + } + + profiles { + # Provides controls on Execution profiles used by James + LWT { + basic.request.consistency = SERIAL + basic.request.serial-consistency = SERIAL + } + CACHING { + basic.request.consistency = LOCAL_ONE + basic.request.serial-consistency = LOCAL_ONE + basic.request.timeout = 100 milliseconds + } + OPTIMISTIC_CONSISTENCY_LEVEL { + basic.request.consistency = LOCAL_ONE + basic.request.serial-consistency = LOCAL_ONE + } + BATCH { + basic.request.timeout = 1 hour + } + } +} diff --git a/server/apps/distributed-app/sample-configuration/cassandra.properties b/server/apps/distributed-app/docker-configuration/cassandra.properties similarity index 100% rename from server/apps/distributed-app/sample-configuration/cassandra.properties rename to server/apps/distributed-app/docker-configuration/cassandra.properties diff --git a/server/apps/distributed-app/sample-configuration/deletedMessageVault.properties b/server/apps/distributed-app/docker-configuration/deletedMessageVault.properties similarity index 94% rename from server/apps/distributed-app/sample-configuration/deletedMessageVault.properties rename to server/apps/distributed-app/docker-configuration/deletedMessageVault.properties index 71b344ad278..0230d5dc3f9 100644 --- a/server/apps/distributed-app/sample-configuration/deletedMessageVault.properties +++ b/server/apps/distributed-app/docker-configuration/deletedMessageVault.properties @@ -12,4 +12,4 @@ enabled=false # Messages restored from the Deleted Messages Vault are placed in a mailbox with this name (default: ``Restored-Messages``). # The mailbox will be created if it does not exist yet. -# restoreLocation=Restored-Messages \ No newline at end of file +# restoreLocation=Restored-Messages diff --git a/server/apps/distributed-app/sample-configuration/droplists.properties b/server/apps/distributed-app/docker-configuration/droplists.properties similarity index 72% rename from server/apps/distributed-app/sample-configuration/droplists.properties rename to server/apps/distributed-app/docker-configuration/droplists.properties index bbc27568cbc..272f5c7db1d 100644 --- a/server/apps/distributed-app/sample-configuration/droplists.properties +++ b/server/apps/distributed-app/docker-configuration/droplists.properties @@ -1,3 +1,3 @@ # Configuration file for DropLists -enabled=false \ No newline at end of file +enabled=false diff --git a/server/apps/distributed-app/sample-configuration/extensions.properties b/server/apps/distributed-app/docker-configuration/extensions.properties similarity index 100% rename from server/apps/distributed-app/sample-configuration/extensions.properties rename to server/apps/distributed-app/docker-configuration/extensions.properties diff --git a/server/apps/distributed-app/sample-configuration/jmap.properties b/server/apps/distributed-app/docker-configuration/jmap.properties similarity index 74% rename from server/apps/distributed-app/sample-configuration/jmap.properties rename to server/apps/distributed-app/docker-configuration/jmap.properties index 73fb3f9abb8..e1453a68e38 100644 --- a/server/apps/distributed-app/sample-configuration/jmap.properties +++ b/server/apps/distributed-app/docker-configuration/jmap.properties @@ -2,10 +2,17 @@ # Read https://james.apache.org/server/config-jmap.html for further details enabled=true - +jmap.version.default=rfc-8621 tls.keystoreURL=file://conf/keystore tls.secret=james72laBalle + +jmap.port=80 +url.prefix=http://james.appscode.ninja +websocket.url.prefix=ws://james.appscode.ninja + +email.send.max.size=100M +max.size.attachments.per.mail=100M # only not work for RabbitMQ mail queue #delay.sends.enabled=true @@ -14,13 +21,15 @@ tls.secret=james72laBalle # tls.certificates=file://conf/certs.self-signed.csr # An optional secret might be specified for the private key # tls.secret=james72laBalle +# view.email.query.enabled=true +#authentication.strategy.draft=BasicAuthenticationStrategy # # If you wish to use OAuth authentication, you should provide a valid JWT public key. # The following entry specify the link to the URL of the public key file, # which should be a PEM format file. # -# jwt.publickeypem.url=file://conf/jwt_publickey +jwt.publickeypem.url=file://conf/rs256-4096-public.pem # Should simple Email/query be resolved against a Cassandra projection, or should we resolve them against OpenSearch? # This enables a higher resilience, but the projection needs to be correctly populated. False by default. @@ -28,7 +37,8 @@ tls.secret=james72laBalle # If you want to specify authentication strategies for Jmap rfc-8621 version # For custom Authentication Strategy not inside package "org.apache.james.jmap.http", you have to specify its FQDN -# authentication.strategy.rfc8621=JWTAuthenticationStrategy,BasicAuthenticationStrategy + +authentication.strategy.rfc8621=JWTAuthenticationStrategy # Prevent server side request forgery by preventing calls to the private network ranges. Defaults to true, can be disabled for testing. -# webpush.prevent.server.side.request.forgery=false \ No newline at end of file +webpush.prevent.server.side.request.forgery=false diff --git a/server/apps/distributed-app/docker-configuration/jvm.properties b/server/apps/distributed-app/docker-configuration/jvm.properties index c4f1119578b..fdf65241dfa 100644 --- a/server/apps/distributed-app/docker-configuration/jvm.properties +++ b/server/apps/distributed-app/docker-configuration/jvm.properties @@ -51,11 +51,11 @@ config.file=/root/conf/cassandra-driver.conf # JMX, when enable causes RMI to plan System.gc every hour. Set this instead to once every 1000h. sun.rmi.dgc.server.gcInterval=3600000000 -sun.rmi.dgc.client.gcInterval=3600000000 # Relax validating `*` and `%` characters in the mailbox name. Defaults to false. # Be careful turning on this as `%` and `*` are ambiguous for the LIST / LSUB commands that interpret those as wildcard thus returning all mailboxes matching the pattern. #james.relaxed.mailbox.name.validation=true # Allow users to have rights for shares of different domain. Defaults to false. -#james.rights.crossdomain.allow=false \ No newline at end of file +#james.rights.crossdomain.allow=false +sun.rmi.dgc.client.gcInterval=3600000000 diff --git a/server/apps/distributed-app/sample-configuration/mailetcontainer.xml b/server/apps/distributed-app/docker-configuration/mailetcontainer.xml similarity index 91% rename from server/apps/distributed-app/sample-configuration/mailetcontainer.xml rename to server/apps/distributed-app/docker-configuration/mailetcontainer.xml index 0cb3fd52c92..57534cbfba4 100644 --- a/server/apps/distributed-app/sample-configuration/mailetcontainer.xml +++ b/server/apps/distributed-app/docker-configuration/mailetcontainer.xml @@ -37,11 +37,23 @@ - - cassandra://var/mail/relay-limit-exceeded/ + + + + transport - transport + blacklisted + + + + + + + blacklisted + + + cassandra://var/mail/blacklisted/ diff --git a/server/apps/distributed-app/docker-configuration/managesieveserver.xml b/server/apps/distributed-app/docker-configuration/managesieveserver.xml new file mode 100644 index 00000000000..7b0b85a6eee --- /dev/null +++ b/server/apps/distributed-app/docker-configuration/managesieveserver.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + managesieveserver + + 0.0.0.0:4190 + + 200 + + + + file://conf/keystore + james72laBalle + org.bouncycastle.jce.provider.BouncyCastleProvider + + SunX509 + + + + 360 + + + 0 + + + 0 + 0 + true + + + + + + diff --git a/server/apps/distributed-app/sample-configuration/opensearch.properties b/server/apps/distributed-app/docker-configuration/opensearch.properties similarity index 100% rename from server/apps/distributed-app/sample-configuration/opensearch.properties rename to server/apps/distributed-app/docker-configuration/opensearch.properties diff --git a/server/apps/distributed-app/sample-configuration/rabbitmq.properties b/server/apps/distributed-app/docker-configuration/rabbitmq.properties similarity index 100% rename from server/apps/distributed-app/sample-configuration/rabbitmq.properties rename to server/apps/distributed-app/docker-configuration/rabbitmq.properties diff --git a/server/apps/distributed-app/docker-configuration/smtpserver.xml b/server/apps/distributed-app/docker-configuration/smtpserver.xml new file mode 100644 index 00000000000..957e4dd69a5 --- /dev/null +++ b/server/apps/distributed-app/docker-configuration/smtpserver.xml @@ -0,0 +1,160 @@ + + + + + + + + + smtpserver-global + 0.0.0.0:25 + 200 + + + file://conf/keystore + PKCS12 + james72laBalle + org.bouncycastle.jce.provider.BouncyCastleProvider + SunX509 + + + + + + + + 360 + 0 + 0 + + never + false + true + + 127.0.0.0/8 + false + 0 + true + Apache JAMES awesome SMTP Server + + + + + + + smtpserver-TLS + 0.0.0.0:465 + 200 + + + file://conf/keystore + PKCS12 + james72laBalle + org.bouncycastle.jce.provider.BouncyCastleProvider + SunX509 + + + + + + + + 360 + 0 + 0 + + + forUnauthorizedAddresses + true + true + + + + 127.0.0.0/8 + false + 0 + true + Apache JAMES awesome SMTP Server + + + + + + + smtpserver-authenticated + 0.0.0.0:587 + 200 + + + file://conf/keystore + PKCS12 + james72laBalle + org.bouncycastle.jce.provider.BouncyCastleProvider + SunX509 + + + + + + + + 360 + 0 + 0 + + forUnauthorizedAddresses + true + true + + + + 127.0.0.0/8 + false + 0 + true + Apache JAMES awesome SMTP Server + + + + + + \ No newline at end of file diff --git a/server/apps/distributed-app/sample-configuration/usersrepository.xml b/server/apps/distributed-app/docker-configuration/usersrepository.xml similarity index 99% rename from server/apps/distributed-app/sample-configuration/usersrepository.xml rename to server/apps/distributed-app/docker-configuration/usersrepository.xml index 68aaee95876..4525e9d3809 100644 --- a/server/apps/distributed-app/sample-configuration/usersrepository.xml +++ b/server/apps/distributed-app/docker-configuration/usersrepository.xml @@ -64,4 +64,4 @@ admin2@domain.tld - --> \ No newline at end of file + --> diff --git a/server/apps/distributed-app/docker-configuration/webadmin.properties b/server/apps/distributed-app/docker-configuration/webadmin.properties index 5d72d99b744..b165535aea6 100644 --- a/server/apps/distributed-app/docker-configuration/webadmin.properties +++ b/server/apps/distributed-app/docker-configuration/webadmin.properties @@ -26,7 +26,6 @@ host=0.0.0.0 # Defaults to false https.enabled=false - # Compulsory when enabling HTTPS #https.keystore=/path/to/keystore #https.password=password @@ -36,19 +35,19 @@ https.enabled=false #https.trust.password # Defaults to false -#jwt.enabled=true +jwt.enabled=true # ## If you wish to use OAuth authentication, you should provide a valid JWT public key. ## The following entry specify the link to the URL of the public key file, ## which should be a PEM format file. ## -#jwt.publickeypem.url=file://conf/jwt_publickey +jwt.publickeypem.url=file://conf/rs256-4096-public.pem # Defaults to false -#cors.enable=true -#cors.origin +cors.enable=true +cors.origin=* # List of fully qualified class names that should be exposed over webadmin # in addition to your product default routes. Routes needs to be located # within the classpath or in the ./extensions-jars folder. -#extensions.routes= \ No newline at end of file +#extensions.routes=mailets.BlackListRoutes \ No newline at end of file diff --git a/server/apps/distributed-app/james postman collection. 10_09_2024.json b/server/apps/distributed-app/james postman collection. 10_09_2024.json new file mode 100644 index 00000000000..a4b03f391a3 --- /dev/null +++ b/server/apps/distributed-app/james postman collection. 10_09_2024.json @@ -0,0 +1,2075 @@ +{ + "info": { + "_postman_id": "334c89ee-38cc-4bfb-bf78-4fdddee6a595", + "name": "James APIs", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "30479464" + }, + "item": [ + { + "name": "B3", + "item": [ + { + "name": "Get token from b3", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{b3token}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{b3host}}:3003/api/v1/agent/token-test/{{b3token}}/token", + "protocol": "http", + "host": [ + "{{b3host}}" + ], + "port": "3003", + "path": [ + "api", + "v1", + "agent", + "token-test", + "{{b3token}}", + "token" + ] + } + }, + "response": [] + }, + { + "name": "Get identity from b3", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{b3token}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{b3host}}:3003/api/v1/clustersv2/identity/{{clusterID}}", + "protocol": "http", + "host": [ + "{{b3host}}" + ], + "port": "3003", + "path": [ + "api", + "v1", + "clustersv2", + "identity", + "{{clusterID}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "WebAdmin", + "item": [ + { + "name": "Miscellaneous", + "item": [ + { + "name": "Send mail over webadmin", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "From: recipient.acc@cloud.appscode.com\nTo: agent$2eb4fb05-5438-40e2-91cf-2b7257f12341&agent.front-end-linode$2eb4fb05-5438-40e2-91cf-2b7257f12341&cluster.x&type-acc@cloud.appscode.com\nMIME-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"XXXXboundary text\"\n\nThis is a multipart message in MIME format.\n\n--XXXXboundary text\nContent-Type: text/plain\n\nSample Body\n\n--XXXXboundary text\nContent-Type: text/plain;\nContent-Disposition: attachment;\n filename=\"test.txt\"\n\nthis is the attachment text\n\n--XXXXboundary text--", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/mail-transfer-service", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "mail-transfer-service" + ] + } + }, + "response": [] + }, + { + "name": "ReIndex all emails", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "messagesPerSecond", + "value": "200", + "type": "text", + "disabled": true + } + ], + "url": { + "raw": "http://{{host}}:{{port}}/mailboxes?task=reIndex&messagesPerSecond=200", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "mailboxes" + ], + "query": [ + { + "key": "task", + "value": "reIndex" + }, + { + "key": "messagesPerSecond", + "value": "200" + }, + { + "key": "mode", + "value": "rebuildAll", + "disabled": true + } + ] + } + }, + "response": [] + }, + { + "name": "Recomputing Global JMAP fast message view projection", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "I-KNOW-WHAT-I-M-DOING", + "value": "ALL-SERVICES-ARE-OFFLINE", + "type": "text", + "disabled": true + } + ], + "url": { + "raw": "http://{{host}}:{{port}}/mailboxes?task=recomputeFastViewProjectionItems", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "mailboxes" + ], + "query": [ + { + "key": "task", + "value": "recomputeFastViewProjectionItems" + } + ] + } + }, + "response": [] + }, + { + "name": "Get task webadmin", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/tasks/ca4e4ca3-221e-499a-b44a-7eef0c831b61", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "tasks", + "ca4e4ca3-221e-499a-b44a-7eef0c831b61" + ] + } + }, + "response": [] + }, + { + "name": "Download (easier with curl) testuser", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "username", + "value": "testuser.org@mydomain", + "type": "string" + }, + { + "key": "password", + "value": "password", + "type": "string" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "url": { + "raw": "http://{{host}}/download/{{accountId}}/b50c5eb0-8f4b-11ee-849d-9fa9bb19403d_4?type=text%2Fplain&name=toUpload2.txt", + "protocol": "http", + "host": [ + "{{host}}" + ], + "path": [ + "download", + "{{accountId}}", + "b50c5eb0-8f4b-11ee-849d-9fa9bb19403d_4" + ], + "query": [ + { + "key": "type", + "value": "text%2Fplain" + }, + { + "key": "name", + "value": "toUpload2.txt" + } + ] + } + }, + "response": [] + }, + { + "name": "Download (easier with curl) sami", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0dXNlci5vcmdAbXlkb21haW4iLCJpYXQiOjE2MTYyMzkwMjIsImV4cCI6MTk0NjIzOTAyMn0.SO2fTuxB6qQNZqkhwWAndyqXDpyZMrHZFNdgG5ka7j8dW0G9JqU-rx04wqL-R2T51QCVYnlLBM62AVEltK-85ck10nFHEEFwQSD85v5PpI_qzeTz4NRFDxek-5N2gYdK0XQ6NzMvlSwxyUM2TkNZCupIto9H3MDeuDSs0p6Xmwk3iaGKJcIorIUbImf8xzwfB39ytpOw1j6ggAGjczZH8Ykz2PnHQQX2TU8R_dGbn6euYOqnTiZDWggfbxaS1joJ3PatN0Q-jxfuQGwTdZWeSN-Ocvr55MitQvMKJQaoRMVAOFCPXuhCkMq1szKRaBbhnL1nFjmHBpMJC5VpSeDgKOa-govmuTrnRMDV15n5KeeSWEeE2Km9ibOqzZktlR5EU-lU16h-a0u5ydPfax4HcUnNnVcKFqjSGyMFyBQOOxQWKrSJdHNaA7ZP07QQjwdSRQFbJHsUBdH22oBfTnT891yMmWW1iFLHZuV2sMivUGnH-EBO29HHVzAXUlOzErqDaVnovMvdPN6_Vi80LpdSWikYbe2zXUV4csBAc6bC1NweP9omNidBk9Vgo-3q2mHw-H6mfFnTONUipbtbV8ifI2MKQ-ZS0ciNomOcNgyYu5mc-ebDFpZU9xx-_nakCOscUm0tHN224MxKNIx-9E7XrS0PlSOauNYqi4AVKP9svW0", + "type": "string" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "url": { + "raw": "http://{{host}}/download/{{accountId}}/uploads-4c2ef740-b115-11ee-8311-9b9e3b5ba63c?type%3Dimage%2Fpng%26name%3Dcat.png", + "protocol": "http", + "host": [ + "{{host}}" + ], + "path": [ + "download", + "{{accountId}}", + "uploads-4c2ef740-b115-11ee-8311-9b9e3b5ba63c" + ], + "query": [ + { + "key": "type%3Dimage%2Fpng%26name%3Dcat.png", + "value": null + } + ] + } + }, + "response": [] + }, + { + "name": "upload test 2", + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + }, + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "text/plain; charset=utf-8" + }, + { + "key": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0dXNlci5vcmdAbXlkb21haW4iLCJpYXQiOjE2MTYyMzkwMjIsImV4cCI6MTk0NjIzOTAyMn0.SO2fTuxB6qQNZqkhwWAndyqXDpyZMrHZFNdgG5ka7j8dW0G9JqU-rx04wqL-R2T51QCVYnlLBM62AVEltK-85ck10nFHEEFwQSD85v5PpI_qzeTz4NRFDxek-5N2gYdK0XQ6NzMvlSwxyUM2TkNZCupIto9H3MDeuDSs0p6Xmwk3iaGKJcIorIUbImf8xzwfB39ytpOw1j6ggAGjczZH8Ykz2PnHQQX2TU8R_dGbn6euYOqnTiZDWggfbxaS1joJ3PatN0Q-jxfuQGwTdZWeSN-Ocvr55MitQvMKJQaoRMVAOFCPXuhCkMq1szKRaBbhnL1nFjmHBpMJC5VpSeDgKOa-govmuTrnRMDV15n5KeeSWEeE2Km9ibOqzZktlR5EU-lU16h-a0u5ydPfax4HcUnNnVcKFqjSGyMFyBQOOxQWKrSJdHNaA7ZP07QQjwdSRQFbJHsUBdH22oBfTnT891yMmWW1iFLHZuV2sMivUGnH-EBO29HHVzAXUlOzErqDaVnovMvdPN6_Vi80LpdSWikYbe2zXUV4csBAc6bC1NweP9omNidBk9Vgo-3q2mHw-H6mfFnTONUipbtbV8ifI2MKQ-ZS0ciNomOcNgyYu5mc-ebDFpZU9xx-_nakCOscUm0tHN224MxKNIx-9E7XrS0PlSOauNYqi4AVKP9svW0" + } + ], + "body": { + "mode": "file", + "file": { + "src": "/home/sami/james-project/diffs.txt" + } + }, + "url": { + "raw": "http://{{host}}/upload/{{accountId}}", + "protocol": "http", + "host": [ + "{{host}}" + ], + "path": [ + "upload", + "{{accountId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Users and Domains", + "item": [ + { + "name": "Add mydomain", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/domains/cloud.appscode.com", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "domains", + "cloud.appscode.com" + ] + } + }, + "response": [] + }, + { + "name": "Add testuser.acc@cloud.appscode.com", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"password\":\"password\"}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/users/testuser.acc@cloud.appscode.com", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "users", + "testuser.acc@cloud.appscode.com" + ] + } + }, + "response": [] + }, + { + "name": "Add recipient.acc@cloud.appscode.com", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"password\":\"password\"}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/users/recipient.acc@cloud.appscode.com", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "users", + "recipient.acc@cloud.appscode.com" + ] + } + }, + "response": [] + }, + { + "name": "List Users", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/users", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "users" + ] + } + }, + "response": [] + }, + { + "name": "List Domains", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/domains", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "domains" + ] + } + }, + "response": [] + }, + { + "name": "username change", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/users/testuser.org@mydomain/rename/testuser1.org@mydomain?action=rename", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "users", + "testuser.org@mydomain", + "rename", + "testuser1.org@mydomain" + ], + "query": [ + { + "key": "action", + "value": "rename" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Groups", + "item": [ + { + "name": "Add user to group", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/a2.org@mydomain/b.org@mydomain", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "a2.org@mydomain", + "b.org@mydomain" + ] + } + }, + "response": [] + }, + { + "name": "Create group", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/group8.org@mydomain", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "group8.org@mydomain" + ] + } + }, + "response": [] + }, + { + "name": "Create multiple groups with members", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE5MjI0ODk4MTksInBlcm1pc3Npb25zIjp7InBlcm0uYWRkcmVzcy5ncm91cHMuKiI6WyJQT1NUIl0sInBlcm0uYWRkcmVzcy5ncm91cHMuKi4qIjpbIlBVVCIsIkRFTEVURSJdfSwic3ViIjoiYWdlbnQkMDA4OGJhM2YxZWIwODgyZjVkYmZmZjBlMjIxMTJiYjRlMTgwOWU2OSZhZ2VudC50b2tlbi10ZXN0JDAwODhiYTNmMWViMDg4MmY1ZGJmZmYwZTIyMTEyYmI0ZTE4MDllNjkmY2x1c3Rlci54JnR5cGUtYWNjQGNsb3VkLmFwcHNjb2RlLmNvbSIsInR5cGUiOiJhZ2VudCJ9.HxFtHNFchc8G9SPPP7Ezg5uaw_oGOJ3vJBk2la9wraA_uKexibUogaAsL1j4vvW02r646e5tCFGimWN_yKBH3vxPzEFQT-Z00AVryu0upvYvW9YHx-bsXilCiTxm47zmQVfgVBjO7e0eGUJaPjZLH8fbCKHlIO4GPvZQ85Mm87z3IU4avJjkC9LP-Nq6M21gyQp05YncBUwfJVnzjROLODHy4wvxm6orMOrCg6o7Lod5wkuTZnTQl_pUn-pFXVeljIVXpZ9CEHsnaMR-ZPZZgJ1MQEKDwC3BDtBWYK1XJjOdspNU73IGue1gtX1mVqcclJq9Bo6L1KepvwE-LM8SjZNENDygx92vXQW9Y21mpcbLTP2nrjljvM6XairDgiVCVSKPjiEmbliifYKwQtY1Oj_P5Xvvd6n7UM83iawxygM7rxP-MnslhMxyazmwCWv181B3rF4gQ7tEU4BwOxGf39m2cFXvXVXHp_a6lEVoBOOLOIrzIxoS3Gk-2uR_nPx3_Iug_31xm84TT-gxX6rLGM_0s7QHeMAAHh4jEsvuM0e_A42U-5Hr16yxEpCHIAujiWGtHxprD47VMavUGoLoLpSzMKZ69Lmg8lXXfvrDN6yfwNRn9QQSCrflrLPWkyphBtAgek9UIZdHbljXv37jvcY7A3jziW7AJXrlsGcz94E", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n {\n \"groupAddr\": \"kube-system$5516d627-68bb-4c3e-9c29-a7df7c21927e&cluster.x&type-grp&nm-asdfasads&id-1&typ-user@cloud.appscode.com\",\n \"memberAddrs\": [\n \"monitoring$94a42851-56ed-4d4e-976e-66fbb5cef3bc&ns.kube-system$5516d627-68bb-4c3e-9c29-a7df7c21927e&cluster.x&type-grp&nm-asdfasads&id-1&typ-user@cloud.appscode.com\"\n ]\n },\n {\n \"groupAddr\": \"monitoring$94a42851-56ed-4d4e-976e-66fbb5cef3bc&ns.kube-system$5516d627-68bb-4c3e-9c29-a7df7c21927e&cluster.x&type-grp&nm-asdfasads&id-1&typ-user@cloud.appscode.com\",\n \"memberAddrs\": [\n \"mongodb$1bf4cb26-f7ff-437a-a7d0-449ddd7d57b8&wl.monitoring$94a42851-56ed-4d4e-976e-66fbb5cef3bc&ns.kube-system$5516d627-68bb-4c3e-9c29-a7df7c21927e&cluster.x&type-grp&nm-asdfasads&id-1&typ-user@cloud.appscode.com\"\n ]\n }\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/add-groups", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "add-groups" + ] + } + }, + "response": [] + }, + { + "name": "Delete multiple groups", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n \"bd1a3255-3f55-4b6c-8e7c-d0e0110a94b7.grp.x.grp@mail.appscode.com\",\n \"default.grp.bd1a3255-3f55-4b6c-8e7c-d0e0110a94b7.grp.x.grp@mail.appscode.com\",\n \"kube-system.grp.bd1a3255-3f55-4b6c-8e7c-d0e0110a94b7.grp.x.grp@mail.appscode.com\"\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/address/groups", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups" + ] + } + }, + "response": [] + }, + { + "name": "Create Multiple Groups", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "url": { + "raw": "http://{{testHost}}:{{port}}/address/groups", + "protocol": "http", + "host": [ + "{{testHost}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups" + ] + } + }, + "response": [] + }, + { + "name": "Delete user from a group", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/g@mydomain/a&b@mydomain", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "g@mydomain", + "a&b@mydomain" + ] + } + }, + "response": [] + }, + { + "name": "List members of a group", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/monitoring$5b6f1cc7-a50c-4f4b-9c03-187c956e4ce3&ns.kube-system$9980bc80-09ab-40b8-bbfe-21889d2af664&cluster.x&type-acc&nm-qwerqwr&id-1&typ-user@cloud.appscode.com", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "monitoring$5b6f1cc7-a50c-4f4b-9c03-187c956e4ce3&ns.kube-system$9980bc80-09ab-40b8-bbfe-21889d2af664&cluster.x&type-acc&nm-qwerqwr&id-1&typ-user@cloud.appscode.com" + ] + } + }, + "response": [] + }, + { + "name": "List groups", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/address/groups", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups" + ] + } + }, + "response": [] + }, + { + "name": "Check group existence", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{webadminJWT}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "raw", + "raw": "[\n \"aksda.org@mydomain\",\n \"group1.org@mydomain\",\n \"group3.org@mydomain\",\n \"kube-system$14d58583-4e05-4343-b4bd-ff6e513d7605&cluster.x&type-grp&name-yyyyyy&ownerid-1@cloud.appscode.com\"\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/address/groups/isExist", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "address", + "groups", + "isExist" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Healthcheck", + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://{{host}}:{{port}}/healthcheck", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "healthcheck" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "JMAP", + "item": [ + { + "name": "session", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap/session", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap", + "session" + ] + } + }, + "response": [] + }, + { + "name": "Core/echo", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE5MjI0ODk4MTksInBlcm1pc3Npb25zIjp7InBlcm0uYWRkcmVzcy5ncm91cHMuKi4qIjpbIlBVVCIsIkRFTEVURSJdfSwic3ViIjoidGVzdHVzZXIuYWNjQGNsb3VkLmFwcHNjb2RlLmNvbSIsInR5cGUiOiJhZG1pbiJ9.trluOy90MpxX_7w5-WCDNal5lKmIj4NsPX9dWb3a06YPBY_jhZggaSfxFlQTStT1Rh3PRgaqq-RxiDh7DLd8SoGF6mSuX81cEV3fLg4TnaEisSBAyEIS0v7fWLKXOeEXWsFS8Sbzr4QXfHhcdIDAC6q8Qz2MTHxTYtGp2P76pA1bydFTGDK2iprglpLOBTuTkyfWlY31ekm0Nc6icfoYv7BYYYDI0UtfPDP9nU6KqTi4A-Ro3c4mRuDUSPzOGbkDThIr6asjn6fFqb6kF4Oufy5nLE5cY4URqL7B1oc-7jxfrbCVu-EMjqY5uY-XQglXQnEHOKbEOukG-UIzUJVXVjcWKFAb64cdR7m8uVEs59pnk0TUXPnGhdcXZ0XutUl8OiwHHqIpIOE0g5DtDPGH6svSiOg0tc6zyGHIupxeVhlEk54RyQGIXzQ-AN7ZUltbommdJSuZS2BTYYcE_DSsi9gkNmrkPoqn-NLWExGWHkFZcSoGaWE0wTWFt1_6IW26-GfM482Ko18TPSJl5PJugCv7UAtUQBtUHebOd9PEcOFw_QM38mJO4XbjQxnX3z-kN6lQBatIMaBcOcBVNyqm7xFgqOdNq4poXF8AfvKjwURj4VZzJodzaYH2tbYXdE3vAT4aHoPhl7vSGXp_0Y4pQ3SbZc81exnrnI60q5yGEoU", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\"],\n \"methodCalls\": [\n [ \"Core/echo\", {\n \"accountId\": \"{{accountId}}\",\n \"hello\": true,\n \"high\": 5\n }, \"b3ff\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "PushSubscription/set my response", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"PushSubscription/set\", {\n \"update\": {\n \"3b1249a4-e800-4dba-97e1-6ba60be1ce9b\": {\n \"verificationCode\":\"6e579a03-7e15-4af1-925e-04494312248a\"\n }\n }\n }, \"0\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap/session", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap", + "session" + ] + } + }, + "response": [] + }, + { + "name": "set push subscription", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"PushSubscription/set\", {\n \"create\": {\n \"asdfasd\": {\n \"deviceClientId\": \"a8d8xczx9-ssffea-910\",\n \"url\": \"http://localhost:3333/pushListener\",\n \"types\": [\"Mailbox\", \"Email\", \"EmailDelivery\"]\n }\n }\n }, \"0\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "view push subscriptions", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"PushSubscription/get\", {\n \"ids\": null\n }, \"asdas\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Mailbox/query", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/query\", {\n \"accountId\": \"{{accountId}}\",\n \"filter\": {\n \"operator\": \"OR\",\n \"conditions\": [\n { \"role\": \"Inbox\" },\n { \"role\": \"Drafts\" }\n ]\n }\n }, \"mbQuery\" ],\n\n [ \"Mailbox/query\", {\n \"#accountId\" : {\n \"name\": \"Mailbox/query\",\n \"resultOf\": \"mbQuery\",\n \"path\": \"/accountId\"\n },\n\n \"filter\": {\n \"after\": \"2023-01-01T00:00:00Z\"\n },\n \"sort\": [\n { \"property\": \"receivedAt\", \"isAscending\": false }\n ]\n }, \"1\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Mailbox/get See all mailboxes", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE5MjI0ODk4MTksInBlcm1pc3Npb25zIjp7InBlcm0uYWRkcmVzcy5ncm91cHMuKi4qIjpbIlBVVCIsIkRFTEVURSJdfSwic3ViIjoidGVzdHVzZXIuYWNjQGNsb3VkLmFwcHNjb2RlLmNvbSIsInR5cGUiOiJhZG1pbiJ9.trluOy90MpxX_7w5-WCDNal5lKmIj4NsPX9dWb3a06YPBY_jhZggaSfxFlQTStT1Rh3PRgaqq-RxiDh7DLd8SoGF6mSuX81cEV3fLg4TnaEisSBAyEIS0v7fWLKXOeEXWsFS8Sbzr4QXfHhcdIDAC6q8Qz2MTHxTYtGp2P76pA1bydFTGDK2iprglpLOBTuTkyfWlY31ekm0Nc6icfoYv7BYYYDI0UtfPDP9nU6KqTi4A-Ro3c4mRuDUSPzOGbkDThIr6asjn6fFqb6kF4Oufy5nLE5cY4URqL7B1oc-7jxfrbCVu-EMjqY5uY-XQglXQnEHOKbEOukG-UIzUJVXVjcWKFAb64cdR7m8uVEs59pnk0TUXPnGhdcXZ0XutUl8OiwHHqIpIOE0g5DtDPGH6svSiOg0tc6zyGHIupxeVhlEk54RyQGIXzQ-AN7ZUltbommdJSuZS2BTYYcE_DSsi9gkNmrkPoqn-NLWExGWHkFZcSoGaWE0wTWFt1_6IW26-GfM482Ko18TPSJl5PJugCv7UAtUQBtUHebOd9PEcOFw_QM38mJO4XbjQxnX3z-kN6lQBatIMaBcOcBVNyqm7xFgqOdNq4poXF8AfvKjwURj4VZzJodzaYH2tbYXdE3vAT4aHoPhl7vSGXp_0Y4pQ3SbZc81exnrnI60q5yGEoU", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/get\", {\n \"accountId\": \"{{accountId}}\"\n //\"ids\": [\"92fc4880-e2b1-11ee-9f54-f98672181f3c\"]\n }, \"b3ff\" \n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Mailbox/Set", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/set\", {\n \"accountId\": \"{{accountId}}\",\n \"onDestroyRemoveEmails\": true,\n \"destroy\": [\"fd142670-06dd-11ef-84cf-1f1e29f1b45b\"]\n }, \"b3ff\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "View mailbox changes since last session", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/changes\", {\n \"accountId\": \"{{accountId}}\",\n \"sinceState\": \"fe0c4be1-8ea9-11ee-849d-9fa9bb19403d\"\n //\"filter\": {\"role\": \"Inbox\"}\n }, \"0\" ],\n\n [\"Mailbox/get\", {\n \"#accountId\": {\n \"name\": \"Mailbox/changes\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n \"#ids\" : {\n \"name\": \"Mailbox/changes\",\n \"path\": \"updated/*\",\n \"resultOf\": \"0\"\n }\n }, \"1\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Show unseen threads containing a specific user", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser1.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/query\", {\n \"accountId\": \"652bcce453ce51e5dd2a5c6a4b445d0207abede3b9f91a3611677145ea8dd3bc\",\n \"filter\": {\"role\": \"Sent\"}\n }, \"mbQuery\" ],\n \n [ \"Email/query\", {\n \"accountId\" : \"652bcce453ce51e5dd2a5c6a4b445d0207abede3b9f91a3611677145ea8dd3bc\",\n \"limit\": 3\n }, \"0\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n\n \"properties\": [ \"threadId\" ]\n }, \"1\" ],\n\n [ \"Thread/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/get\",\n \"path\": \"/list/*/threadId\",\n \"resultOf\": \"1\"\n }\n }, \"2\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Thread/get\",\n \"path\": \"/list/*/emailIds\",\n \"resultOf\": \"2\"\n },\n \"properties\": [\"from\"]\n\n // \"properties\": [ \"from\", \"to\", \"receivedAt\", \"subject\", \"preview\", \"messageId\", \"references\" ]\n }, \"3\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Show email (simple)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"Mailbox/query\", {\n \"accountId\": \"{{accountId}}\",\n \"filter\": {\"role\": \"inbox\"}\n }, \"mbQuery\" ],\n \n [ \"Email/query\", {\n \"#accountId\": {\n \"name\": \"Mailbox/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"mbQuery\"\n },\n \"filter\": {\n \"operator\": \"AND\",\n \"conditions\": [\n\n {\"#inMailbox\": {\n \"name\": \"Mailbox/query\",\n \"resultOf\": \"mbQuery\",\n \"path\": \"ids/0\"\n }},\n\n //{\"from\": \"sami@james.appscode.ninja\"}\n //{\"text\": \"searchText\"}//,\n {\"notKeyword\": \"$seen\"}\n ]\n },\n \"sort\": [\n { \"property\": \"receivedAt\", \"isAscending\": false }\n ],\n \"collapseThreads\": true,\n \"calculateTotal\": true,\n \"position\": 0,\n \"limit\": 10\n }, \"0\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n \"properties\": [\"from\"],\n //\"properties\": [ \"from\", \"to\", \"receivedAt\", \"subject\", \"bodyValues\", \"messageId\" ],\n \"fetchAllBodyValues\": true\n }, \"1\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Fetch email body", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser1.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n\n [ \"Mailbox/query\", {\n \"accountId\": \"{{accountId1}}\",\n //\"accountId\": \"7165989a44d7b25d65e1b2f97794b49118e5c19b42a91ed75db2c28534cf4a22\",//testuser\n \"filter\": {\"role\": \"Spam\"}\n }, \"mbQuery\" ],\n\n [ \"Email/query\", {\n \"#accountId\": {\n \"name\": \"Mailbox/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"mbQuery\"\n },\n \"filter\": {\n \"operator\": \"AND\",\n \"conditions\": [\n \n {\"#inMailbox\": {\n \"name\": \"Mailbox/query\",\n \"resultOf\": \"mbQuery\",\n \"path\": \"ids/0\"\n }}\n // {\"header\":[\"hehe2\"]}\n //{\"notKeyword\": \"$seen\"}\n ]\n },\n \"sort\": [\n { \"property\": \"receivedAt\", \"isAscending\": false }\n ],\n \"position\": 0,\n \"limit\": 20\n }, \"0\" ],\n\n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n // \"ids\": [\"cef5fcd0-940c-11ee-88f8-d7f9baa0a757\"],\n \"properties\": [\"id\"],\n \"fetchAllBodyValues\": true,\n \"fetchHTMLBodyValues\": true\n }, \"1\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Fetch email body Copy", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n\n\n [ \"Email/query\", {\n \"accountId\": \"{{accountId}}\"\n \"limit\":2\n }, \"0\" ],\n \n [ \"Email/get\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n // \"ids\": [\"cef5fcd0-940c-11ee-88f8-d7f9baa0a757\"],\n \"properties\": [\"bodyValues\"],\n \"fetchAllBodyValues\": true,\n \"fetchHTMLBodyValues\": true\n }, \"1\" ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Thread/get", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [\"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [\n \"Thread/get\",\n {\n \"accountId\": \"{{accountId1}}\",\n \"ids\": [\"d833cce0-f182-11ee-8288-23209b563714\"] , \n \"sort\": [{ \"property\": \"receivedAt\", \"isAscending\": false }],\n \"collapseThreads\": true,\n \"position\": 0,\n \"limit\": 10\n },\n \"c1\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Send Email", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\", \"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n\n [ \"Email/set\", \n { \n \"accountId\": \"{{accountId}}\",\n \n \"create\": {\n \"draft\": {\n \"from\": [{\"email\": \"testuser.acc@cloud.appscode.com\"}],\n \"to\": [{\"email\": \"testuser.acc@cloud.appscode.com\"}],\n \"subject\": \"THIS IS THE SUBJECT\",\n \"keywords\": {\"$draft\": true},\n \"mailboxIds\": {\"{{draft-mailboxId}}\": true},\n \"bodyValues\": {\"body\": {\"value\": \"asdfgh\", \"charset\": \"utf-8\"}},\n \"textBody\": [{\"partId\": \"body\", \"type\": \"text/plain\"}],\n \"header:hehe\":\" asdxd\",\n \"header:hehe2\":\" asdxd\"\n }\n }\n }, \n \"0\"\n ],\n\n [\n \"EmailSubmission/set\",\n {\n \"#accountId\": {\n \"name\": \"Email/set\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"create\": {\n \"sendIt\": {\n \"emailId\": \"#draft\"\n //\"identityId\": \"79646383-8b23-38d9-8cae-a2214844dd93\"\n }\n },\n\n //move from draft to sent mailbox\n \"onSuccessUpdateEmail\": {\n \"#sendIt\":{\n \"mailboxIds/{{draft-mailboxId}}\": null,\n \"mailboxIds/{{sent-mailboxId}}\": true,\n \"keywords/$seen\": true,\n \"keywords/$draft\": null\n }\n }\n },\n \"1\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Send Email HTML", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [\n \"urn:ietf:params:jmap:core\",\n \"urn:ietf:params:jmap:mail\",\n \"urn:ietf:params:jmap:submission\"\n ],\n \"methodCalls\": [\n [\n \"Email/set\",\n {\n \"accountId\": \"{{accountId}}\",\n \"create\": {\n \"draft\": {\n \"from\": [\n { \"email\": \"samitest1234.acc@cloud.appscode.com\" }\n ],\n \"to\": [\n { \"email\": \"samitest1234.acc@cloud.appscode.com\" },\n { \"email\": \"samitest12345.acc@cloud.appscode.com\"}\n ],\n \"subject\": \"HTML Email Test\",\n \"keywords\": { \"$draft\": true },\n \"mailboxIds\": { \"{{draft-mailboxId}}\": true },\n \"header:customHeader1\": \"solved\",\n \"bodyValues\": {\n \"htmlBody\": {\n \"value\": \"AppsCode Inc.
\\\"AppsCode

Hei there,

Hello, recipient.acc@cloud.appscode.com
Subject : Postgres
  • AlertName doesn't match any postgres alert
  • Best Regards,
    the AppsCode team

    © 2024 AppsCode Inc. All rights reserved.

    3937 SPENCER ST APT 118, Las Vegas, NV 89119, USA

    Unsubscribe

    \",\n \"charset\": \"utf-8\"\n },\n \"textBody\": {\n \"value\": \"EHEHEHEHEHEHEHE>\",\n \"charset\": \"utf-8\"\n }\n },\n \"htmlBody\": [\n { \"partId\": \"htmlBody\", \"type\": \"text/html\" }\n ],\n \"textBody\": [\n { \"partId\": \"textBody\", \"type\": \"text/plain\" }\n ]\n }\n }\n },\n \"0\"\n ],\n [\n \"EmailSubmission/set\",\n {\n \"#accountId\": {\n \"name\": \"Email/set\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n \"create\": {\n \"sendIt\": {\n \"emailId\": \"#draft\"\n }\n },\n \"onSuccessUpdateEmail\": {\n \"#sendIt\": {\n \"mailboxIds/{{draft-mailboxId}}\": null,\n \"mailboxIds/{{sent-mailboxId}}\": true,\n \"keywords/$seen\": true,\n \"keywords/$draft\": null\n }\n }\n },\n \"1\"\n ]\n ]\n}\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Send Email SIMPLE", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\", \"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n\n [ \"Email/set\", \n { \n \"accountId\": \"{{accountId1}}\",\n \n \"create\": {\n \"draft\": {\n \"from\": [{\"email\": \"testuser1.org@mydomain\"}],\n \"to\": [{\"email\": \"testuser.org@mydomain\"}],\n \"subject\": \"jwttest\",\n \"keywords\": {\"$draft\": true},\n \"mailboxIds\": {\"59ed91b0-2259-11ef-89b8-e519413d3c55\": true},\n \"bodyValues\": {\"body\": {\"value\": \"asdfgh\", \"charset\": \"utf-8\"}},\n \"textBody\": [{\"partId\": \"body\", \"type\": \"text/plain\"}]\n }\n }\n }, \n \"0\"\n ],\n\n [\n \"EmailSubmission/set\",\n {\n \"#accountId\": {\n \"name\": \"Email/set\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"create\": {\n \"sendIt\": {\n \"emailId\": \"#draft\"\n //\"identityId\": \"79646383-8b23-38d9-8cae-a2214844dd93\"\n }\n }\n\n },\n \"1\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Send Email (Attachment text test)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\", \"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n [ \"Email/set\", \n { \n \"accountId\": \"{{accountId}}\",\n \"create\": {\n \"draft\": {\n \"attachments\":[{\n \"blobId\": \"uploads-543f5ac0-8f5e-11ee-849d-9fa9bb19403d\",\n \"type\": \"text/plain\",\n \"size\": 14,\n \"partId\": 3,\n \"name\": \"toUpload3.txt\",\n \"disposition\": \"attachment\"\n }],\n \"hasAttachment\": true,\n \"from\": [{\"email\": \"sami@james.appscode.ninja\"}],\n \"to\": [{\"email\": \"testuser@mydomain\"}],\n \"subject\": \"THIS IS THE SUBJECT\",\n \"keywords\": {\"$draft\": true},\n \"mailboxIds\": {\"2f9e8650-8919-11ee-849d-9fa9bb19403d\": true},\n \"bodyValues\": {\"body\": {\"value\": \"THIS IS THE BODY\", \"charset\": \"utf-8\"}},\n \"textBody\": [{\"partId\": \"body\", \"type\": \"text/plain\"}]\n }\n }\n }, \n \"0\"\n ],\n\n [\n \"EmailSubmission/set\",\n {\n \"#accountId\": {\n \"name\": \"Email/set\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n //\"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"create\": {\n \"sendIt\": {\n \"emailId\": \"#draft\"\n //\"identityId\": \"79646383-8b23-38d9-8cae-a2214844dd93\"\n }\n },\n\n //move from draft to sent mailbox\n \"onSuccessUpdateEmail\": {\n \"#sendIt\":{\n \"mailboxIds/2f9e8650-8919-11ee-849d-9fa9bb19403d\": null,\n \"mailboxIds/2f9a8eb0-8919-11ee-849d-9fa9bb19403d\": true,\n \"keywords/$seen\": true,\n \"keywords/$draft\": null\n }\n }\n },\n \"1\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Reply to thread", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\", \"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n [ \"Email/set\", \n { \n \"accountId\": \"{{accountId}}\",\n\n \"create\": {\n \"draft\": { \n \"inReplyTo\": [\n \"067297df-cffe-474a-a0c4-4f136550070c@mydomain\"\n ],\n \"references\": [\n \"067297df-cffe-474a-a0c4-4f136550070c@mydomain\"\n ], \n \"from\": [{\"email\": \"testuser.org@mydomain\"}],\n \"to\": [{\"email\": \"testuser.org@mydomain\"}],\n \"subject\": \"Re: sdfgsdfg\",\n \"keywords\": {\"$draft\": true},\n \"mailboxIds\": {\"3c122440-abbb-11ee-8dc7-5d9a8fe25dcd\": true},\n \"bodyValues\": {\"body\": {\"value\": \"THIS IS THE BODY 2\", \"charset\": \"utf-8\"}},\n \"textBody\": [{\"partId\": \"body\", \"type\": \"text/plain\"}]\n }\n }\n }, \n \"0\"\n ],\n\n [\n \"EmailSubmission/set\",\n {\n \"#accountId\": {\n \"name\": \"Email/set\",\n \"path\": \"/accountId\",\n \"resultOf\": \"0\"\n },\n // \"accountId\": \"a30abf05d7a677591fa49342598ff16741409c465b2cee29c97f5517506c27e5\",\n \"create\": {\n \"sendIt\": {\n \"emailId\": \"#draft\"\n //\"identityId\": \"79646383-8b23-38d9-8cae-a2214844dd93\"\n }\n },\n\n //move from draft to sent mailbox\n \"onSuccessUpdateEmail\": {\n \"#sendIt\":{\n \"mailboxIds/3c0ccd10-abbb-11ee-8dc7-5d9a8fe25dcd\": true,\n \"mailboxIds/3c122440-abbb-11ee-8dc7-5d9a8fe25dcd\": null,\n \"keywords/$seen\": true,\n \"keywords/$draft\": null\n }\n }\n },\n \"1\"\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "queryChanges", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n\n [ \"Email/changes\", {\n \"accountId\" : \"{{accountId}}\",\n \"sinceState\" : \"98504b99-0381-11ef-944f-19e222f5e43e\"\n }, \"1\" ],\n\n [ \"Email/set\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"1\",\n \"path\": \"accountId\"\n },\n\n \"#destroy\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"1\",\n \"path\": \"ids\"\n }\n }, \"2\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Get Identity", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "username", + "value": "testuser.org@mydomain", + "type": "string" + }, + { + "key": "password", + "value": "password", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\",\"urn:ietf:params:jmap:submission\"],\n \"methodCalls\": [\n [ \"Identity/get\", {\n \"accountId\": \"{{accountId}}\",\n \"ids\":null\n }, \"1\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Destroy All PushSubscriptions", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{testuser.org@mydomain}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n [ \"PushSubscription/get\", {\n \"ids\": null\n }, \"asdas\" ],\n\n [ \"PushSubscription/set\", {\n \"#destroy\": {\n \"name\": \"PushSubscription/get\",\n \"path\": \"list/*/id\",\n \"resultOf\": \"asdas\"\n }\n }, \"0\"\n\n ]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Destroy All Emails (Verify)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n\n [ \"Email/query\", {\n \"accountId\" : \"{{accountId1}}\"\n }, \"0\" ],\n\n [\"Email/get\",{\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"0\",\n \"path\": \"accountId\"\n },\n \n \"#ids\": {\n \"name\": \"Email/query\",\n \"path\": \"/ids\",\n \"resultOf\": \"0\"\n },\n // \"ids\": [\"cef5fcd0-940c-11ee-88f8-d7f9baa0a757\"],\n \"properties\": [\"id\"]\n },\"1\" ],\n\n [ \"Email/set\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"0\",\n \"path\": \"accountId\"\n },\n\n \"#destroy\": {\n \"name\": \"Email/get\",\n \"resultOf\": \"1\",\n \"path\": \"list/*/id\"\n }\n }, \"2\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + }, + { + "name": "Destroy All Emails (Blind)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{inbox-agentJWT}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json; charset=utf-8" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"using\": [ \"urn:ietf:params:jmap:core\", \"urn:ietf:params:jmap:mail\"],\n \"methodCalls\": [\n\n [ \"Email/query\", {\n \"accountId\" : \"{{accountId}}\"\n }, \"0\" ],\n\n [ \"Email/set\", {\n \"#accountId\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"0\",\n \"path\": \"accountId\"\n },\n\n \"#destroy\": {\n \"name\": \"Email/query\",\n \"resultOf\": \"0\",\n \"path\": \"ids\"\n }\n }, \"2\"]\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{jmapPort}}/jmap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{jmapPort}}", + "path": [ + "jmap" + ] + } + }, + "response": [] + } + ] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "host", + "value": "james.appscode.ninja" + }, + { + "key": "port", + "value": "8000" + }, + { + "key": "webadminJWT", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImFkbWluIjp0cnVlLCJleHAiOjE5NDYyMzkwMjIsInBlcm1pc3Npb24iOnsicGVybS5hcGkudjEuZ3JvdXAiOiJ1cGRhdGUifX0.gkaY3kljuaOufmkXv-UOUY1HoK3G3d5-2aLlUuxG0V-53sUlxb7r97GIR5Upw9kDjnt0SV6fTTPfHIuh9iY46pneCwKUHB15palNOcZNZlGDkq6-ipgVWnppErwD5rOqCIh4ad08GmeAU8_2VJubZkw1rNJMu7zjfGoGvUHVuz38FxWu70CQcDGslHKAeFTMGpaRcY2GRuJNfbkpMpnhtXu9Wmqn_xK026wi6zEZXJ6--i-Yz4oPihGWyH2dqzWG9DSBt-L6ZD6pZGFEk_towrnuBs4GCozA9fnvwpA2IYkINS-pdWe9rbS1RfIql-XPkn5nSU4tk68Mn5KgTCdravnRqx_wOcVa-tO-AnxiZFLtZAqUjDbLa3E6I66cGsNxckfzu2etgIPNfSFeyfZYYIcm3fGwBavzNfmrDybIBDcPPH4esDsV5JOD_Xh_XgIhIuBJaWqLhzinDD-2BE8GIUYR6_YrxtqNaO9G4K9rOPe1fdKwUYsgZKO72RsRS8h70wrr-cEW1GnXbYkQqcniSx07MQDVAkrIW_l3uk7DnTuoujX_gZqSmhob8U9qiiDAkR5Pt53qxvzkX5OLNIhbrtnD_maclcEIZOkzzWnUivRIwfZ4P-_c94sMquLrEeX-2R7nWBhwMNm-rdpZ_JpfWDcLQAbxya7WjeSMpN9a2-o", + "type": "string" + }, + { + "key": "jmapPort", + "value": "80", + "type": "string" + }, + { + "key": "accountId", + "value": "ad2fdd6ab1ed7f3c1325b7921bcda0cef3b0de491d0b7c011bc842514448cab6", + "type": "string" + }, + { + "key": "inbox-agentJWT", + "value": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTg0Mjk2NTIsInBlcm1pc3Npb25zIjp7InBlcm0uYWRkcmVzcy5ncm91cHMuKi4qIjpbIlBVVCIsIkRFTEVURSJdfSwic3ViIjoiYWdlbnQkMmViNGZiMDUtNTQzOC00MGUyLTkxY2YtMmI3MjU3ZjEyMzQxXHUwMDI2YWdlbnQuZnJvbnQtZW5kLWxpbm9kZSQyZWI0ZmIwNS01NDM4LTQwZTItOTFjZi0yYjcyNTdmMTIzNDFcdTAwMjZjbHVzdGVyLnhcdTAwMjZ0eXBlLWFjY0BjbG91ZC5hcHBzY29kZS5jb20iLCJ0eXBlIjoiYWdlbnQifQ.HNF2hRuLGVn6ugbwiIEg9huvvTm11clCz9GDmhtcHcur4zhqQfQmA0POQ0NgK4K2aL1P-g2G9V-aT5DW6L4QwkTMNAoQKc2c_R0U0xcOGd39OTYVpsngZj1LRdvgT_OOqCybKf8J0R1hu5HLG7sSazoZTiUwCHwtXNhub0PDv5hXUXjXUKw9X6bn9p5nxdBpj5PwFj9tNepGKAYHJZF1wDB6GtnXwuwPDVqXeswe9MFVr_TW1f86sQC4UGhXz-IdKPLo5SDEUfGZ3hfGL_q4OKJJtrt4WQ5mke-mWP3n1bfkD3Bhdb4nHipwQ1-sEgGluuKSxPqTfsVYlXUyOa6iNhUii7r2PZZuIVBOXMOWkk-euqqz87e6VvVX8-_L2pbKrmJcfOY5HJZVX2JoJhzSHCkYlkW_R_NxrNHoijfN4lBaEhLg5EyKZczWzXdvxD8EIaX0T4xjuDBsuss_6PMOJamGES6emCoWYxmBd5CX7_ggbf-5PE5D9WJkKSTqCsFCNf7tjo2_QQUsqfzn9kUTBuQ6_GICbHsx-I1-Y77JgKwq27cFK5fgLK-IcbdlpZpc1SjH9LIGMKmQr75pga8EnbeafHqttqYR6a0x-_fHMAst0KINgJf0mhhokS_EzB0lMk0qbbx9CQ2sn7jHzz6I-RkxuUNNehrXKjpQdbsjrQY", + "type": "string" + }, + { + "key": "draft-mailboxId", + "value": "0a1c24a0-2a0e-11ef-b253-95058fa091b3", + "type": "string" + }, + { + "key": "sent-mailboxId", + "value": "0a13e740-2a0e-11ef-b253-95058fa091b3", + "type": "string" + }, + { + "key": "b3host", + "value": "192.168.68.101", + "type": "string" + }, + { + "key": "b3token", + "value": "cc3fc1d2c51d10146c7c13f68682229b398ef84c", + "type": "string" + }, + { + "key": "clusterID", + "value": "643489f2-daec-45ad-a875-05a4d3b1e057", + "type": "string" + } + ] +} \ No newline at end of file diff --git a/server/apps/distributed-app/pom.xml b/server/apps/distributed-app/pom.xml index 379b406d714..803fed25cc5 100644 --- a/server/apps/distributed-app/pom.xml +++ b/server/apps/distributed-app/pom.xml @@ -320,15 +320,41 @@ ch.qos.logback logback-classic
    + + ch.qos.logback.contrib + logback-jackson + 0.1.5 + + + ch.qos.logback.contrib + logback-json-classic + 0.1.5 + + + com.github.steveash.guavate + guavate + 1.0.0 + + + com.google.guava + guava + 33.4.0-jre + com.linagora logback-elasticsearch-appender + io.rest-assured rest-assured test + + org.apache.james + james-server-helpers + 3.9.0-SNAPSHOT + org.apache.james queue-pulsar-guice @@ -338,10 +364,28 @@ pdfbox test + + org.assertj + assertj-core + org.awaitility awaitility + + + + org.junit.jupiter + junit-jupiter-api + 5.10.1 + test + + + org.junit.jupiter + junit-jupiter-api + 5.10.1 + test + org.mockito mockito-core @@ -357,6 +401,7 @@ testcontainers test +
    @@ -408,9 +453,19 @@ eclipse-temurin:21-jre-jammy + + + amd64 + linux + + + arm64 + linux + + - apache/james + ghcr.io/appscode/inbox-server distributed-latest @@ -455,7 +510,7 @@ - sample-configuration + conf /root/conf @@ -487,7 +542,7 @@ - buildTar + build package diff --git a/server/apps/distributed-app/rs256-4096-private.rsa b/server/apps/distributed-app/rs256-4096-private.rsa new file mode 100644 index 00000000000..59fc51f6363 --- /dev/null +++ b/server/apps/distributed-app/rs256-4096-private.rsa @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDL7g1nZKnvbyRa +1i4Z/TDzsvI+DaYUCS8dGH+HuEwnRBbTJGE3oOqxt8WJ/aSVqUyR4zCiLsGipAh7 +JKyFKmsUgw0xw2LKldjOjBAwqkajFmjJ9Y6vF4Wo6sDBrPIO1odoBA37/Xnvft1M +wuLdc0jYRCaGhhxVbJ6rzwrNbZhBkTwOrMXBfgq7vF1ozeMxqtZ02FgUwB7IT5lF +toFcgqwzrpCh2g2vWZBEZOUjirgzCxtUhO2/aZwXhH4Id422/6i4uhANgWx1wjMH +i81SKWNvaH3eSdqYCRRnoi4728a3U+Gyv9fqyEzIjVqfUpnD4Xo7DmVZynwo9ajZ +08rXQiyo3dd9cRogxviqAMf9LT6Jv9kLRwl//soGSKFtg34iNqTmdY6jcOe+NkVu +Td3JZg6faScv0iEMaRW/er8ROU4PIPAcIL+dfE1lbBhKgdFqh8RdkIGEhWrEbRJ8 +UzfBG1xe+PN2j7fhdUWqXowr5U0hhQW3yMgTMG0z3PheDcBtnta6MoUojAS5iUPW +QyPnL/ZV1NjduLDHzfbx5RC7YeVaFzsRJRTSPsSPEdzwTBiIiaGGDgBr4EsOfxNY +qDcJlTCj1no02xSMp/S6YixIlRC8TCb2glG5lk+aaChVxuEu1Tf84vz93NCqONAQ +AUOxUt3dVyIWml30MgJzOlUCdXh8jwIDAQABAoICAB/UkwMFvgCWuHX1OFJA0tiM +Sy35s2fX3HgOJYRpn86r3LmC1CnP/tH+fTbXVaPb6Q0HCRryHAc8KJa6rV2btrBc +7uegN6tR+E/vohdL0fq4D2MhO5mDcmQLQEr6qPg9Q/qtp1Z4b1qSfWLzMwtIaKED +rNUShG77pUiWkyO9bNEkejClhw3Mk/WkURrVXWuYiXYeI/bD219+DSPJzidCaN59 +lisCfgsApSQHxjw7SsUCLCHlHbbiz8UGnnrJLmAsnN6N1t5Eyp5sJsrmvLA2Wu7o +wGdnNQIbaLPu/IhwpXO4BA0tJJE2R8XbSmnT2sGtpVvSbhS10OtpF2c98ks8aPvV +31hkOfQJ21Plkn5BqDGpK978c2wBIlz6IPtlK9//DJ4HdQovi4GtGi5iZS7VaL3J +QiISn8gDDzXRdFvs9Xc/YK8qqypJtU1zmjpqn0BjE2I7OySeRWm0N+FZgNKNidNI +W03jrC99gUbppcyWOqx+ufA05ARME1bBbVFVqspPps34v0roYr+4mQplud2EBgye +X1UMWiAQ2XDkSqRFqjNfcAIxyqcEQsMPL13C8szr+/OFFQoKMkuBj6Q7b6iRQLMn +2jiAWqxZfXGuI3laeWdJPi0VYL6WshHXLJ4pemCY+Ntsv6DY19Bm7GlZS7KY+vAu +2IAgLilhjlXqLKLUDSYBAoIBAQDYK5/93pe13ZnCeYZihP5NZTOeDtuNvFfjPPWR +q9GEwk9FLDrMfB0QrBWuhUv9sV1MtXnt7buFAWNKRveaEViNmXNssIHx26rov+Rp +IRFEvRFrHK4Rw+GXTL2scBah1tzQbr3WSNGTkQo36zTPn3RRktnmes5NEVq6qBef +SIIk+xG5wSZwkW+7TrB7gyDsta+ztJdE899udgJCkfxufJVH773J58Y4qlx31+VC +SKjtsjFT2wgSxnBPl5WbjVjkLJEgfngk24w+OCJAG2E1qBp4y+DG/+hFELO4BblZ +uLNhd/AAaGVOXKNiBQSymI2Q7avvYV4XImmi0GqVWsX3sd8pAoIBAQDxgRBY4TwX +ZRA4im5HflVbSkMH0VI9+XDR0rZBdMFWzujn1QU5Xdnsk5Ya/DrOjEtFSetLdi+3 +/INp39+pes5Yi68XxXC1Kmia6UQStSUmPNINs5cVb7Ikv5lgyTuZpUEaRbMk5NbH +qMT7mXfZ99GrrgWN+Z5yHdidRe27LbWxOJ1Fcn+lYs1B/iYT3hczJYm5AEkYmNOL +LZsR7D7xcgTm97snETKf4n1uUEO0xqrI05TEnBGaWztz8VbtMxEJJIevgkS48jXU +zaqHgm9MhSaypt9RzBzPXFGAZAMuWIwNaD+7Mkl2WEzPZf+vk54rCuzSlJEwH0XU +Ae4jLbK7Ckz3AoIBAEUUU9Fd459TjIJQMXikRVvYPlGBL/owOOm+Hj+J56+EJK7X +PocAFo2wYFFf+XO9zTHpQGifMvCDDAa9fPx4FJNTeUY/dZcjeo9cWxKZZZpQzRMs +nBfDQAEInghP3XukXPYinXmv1YFRtTE/caXzr8kto4J6thh8tkC13K6jDivhK73v +kmggodL6h31A3zGlsds8l6aKRFlZTsmVO1TXbSEK5Nxzu616C4ikrnerHoivDAJf +GUperZ9RspZ96e0orMv0flJQ8pUjfRZ9aWgrKyJ1DISrXL9NYhEpixy34GMCX+jR +c6ZCBlgZgHHOPFcXDH234MiFz7oe3iCSXHcWGVkCggEBAMu7nIXOZPo7eOap6YSI +kAt2Z3vV2zKLFuD7iGNJ0ryfyp2g+Eo/4VMR4mSbeiS699jZFhVP+8uTy2zqvu1j +u2W5WRmNp5o9z4c32ASMKm3Ki02hvogH9VnJBORAfvYMEhLOz+UE5CgFOUAjZJdN +1+Sj5u2xsjgE87Mhxf7M/eUmpI5snEByTEQq2gaSqjGsrjWShxen/XYBIDuLeEIJ +dRc/z/OSL4nv8O656ZQ8sODAlVUTcEouQsZ5x2JNXUbAOXMXS1BWjJEce4rbv3bn +MREvc1+2+Gr6L4tHU+OqMWQyGOmb75tVvF6OZpfAyYL4MXcofB8Dks3aXwHwUEI3 +21sCggEBAMhYd9fyhACz2pV3wAXfgtTuXnSOV+hUuPUEigFaDiwpIKJCQ23C2DOK +rDvp2qpI+m2mXJWD4PJ+o1VSaQRIqIEcsy3wIGMTEMBO6di7sY5syXoaiPV0R9Xd +utr6R8IM7+IZW3hyPmhZSz3mYQvSrobtB3TkcOSjaTcJKeJXbOJgQm/ynXNpRP94 +NfLpQDso1ET3z92HaaAGskETl05+U2kGIqgx9CFveEpy376fhwzUhj6GKqTu0kXl +N5WMFuK2Lf98oOjHPh1l6Mv68p6rmIn64eN7pEkqEm1WVBixLoi0DCVSCfy0u3Ap +QgDhbHE5tO9SFEQc8eT5QoQhpQXFWzY= +-----END PRIVATE KEY----- diff --git a/server/apps/distributed-app/rs256-4096-public.pem b/server/apps/distributed-app/rs256-4096-public.pem new file mode 100644 index 00000000000..4f73e56b9ec --- /dev/null +++ b/server/apps/distributed-app/rs256-4096-public.pem @@ -0,0 +1,14 @@ +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAy+4NZ2Sp728kWtYuGf0w +87LyPg2mFAkvHRh/h7hMJ0QW0yRhN6DqsbfFif2klalMkeMwoi7BoqQIeySshSpr +FIMNMcNiypXYzowQMKpGoxZoyfWOrxeFqOrAwazyDtaHaAQN+/15737dTMLi3XNI +2EQmhoYcVWyeq88KzW2YQZE8DqzFwX4Ku7xdaM3jMarWdNhYFMAeyE+ZRbaBXIKs +M66QodoNr1mQRGTlI4q4MwsbVITtv2mcF4R+CHeNtv+ouLoQDYFsdcIzB4vNUilj +b2h93knamAkUZ6IuO9vGt1Phsr/X6shMyI1an1KZw+F6Ow5lWcp8KPWo2dPK10Is +qN3XfXEaIMb4qgDH/S0+ib/ZC0cJf/7KBkihbYN+Ijak5nWOo3DnvjZFbk3dyWYO +n2knL9IhDGkVv3q/ETlODyDwHCC/nXxNZWwYSoHRaofEXZCBhIVqxG0SfFM3wRtc +Xvjzdo+34XVFql6MK+VNIYUFt8jIEzBtM9z4Xg3AbZ7WujKFKIwEuYlD1kMj5y/2 +VdTY3biwx8328eUQu2HlWhc7ESUU0j7EjxHc8EwYiImhhg4Aa+BLDn8TWKg3CZUw +o9Z6NNsUjKf0umIsSJUQvEwm9oJRuZZPmmgoVcbhLtU3/OL8/dzQqjjQEAFDsVLd +3VciFppd9DICczpVAnV4fI8CAwEAAQ== +-----END PUBLIC KEY----- diff --git a/server/apps/distributed-app/src/main/java/mailets/IgnoreSuffixOfPlusSign.java b/server/apps/distributed-app/src/main/java/mailets/IgnoreSuffixOfPlusSign.java new file mode 100644 index 00000000000..c2f462e272c --- /dev/null +++ b/server/apps/distributed-app/src/main/java/mailets/IgnoreSuffixOfPlusSign.java @@ -0,0 +1,56 @@ +/**************************************************************** + * 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 mailets; + +import static org.apache.james.TrimSuffixOfPlusSign.trimSuffixOfPlusSign; + +import org.apache.mailet.Mail; +import org.apache.mailet.base.GenericMailet; + +import com.github.steveash.guavate.Guavate; + + +public class IgnoreSuffixOfPlusSign extends GenericMailet { + IgnoreSuffixOfPlusSign() { + + } + + @Override + public void service(Mail mail) { + //System.out.println("\n\n-----------"); + //System.out.println("plus sign reached"); + //System.out.println("Initial recipients: "); + + for (var k : mail.getRecipients()) { + System.out.println(k.asString()); + } + + mail.setRecipients(mail.getRecipients() + .stream() + .map(recipient -> trimSuffixOfPlusSign(recipient)) + .collect(Guavate.toImmutableList())); + + /*System.out.println("\nModified recipients: "); + for (var k : mail.getRecipients()) { + System.out.println(k.asString()); + } + System.out.println("\n\n-----------");*/ + } +} \ No newline at end of file diff --git a/server/apps/distributed-app/src/main/java/matchers/NotInBlackList.java b/server/apps/distributed-app/src/main/java/matchers/NotInBlackList.java new file mode 100644 index 00000000000..1e65627486e --- /dev/null +++ b/server/apps/distributed-app/src/main/java/matchers/NotInBlackList.java @@ -0,0 +1,76 @@ +/**************************************************************** + * 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 matchers; + +import static org.apache.james.TrimSuffixOfPlusSign.trimSuffixOfPlusSign; + +import java.util.Collection; + +import org.apache.james.core.Domain; +import org.apache.james.core.MailAddress; +import org.apache.james.core.MaybeSender; +import org.apache.mailet.Mail; +import org.apache.mailet.base.GenericMatcher; + +import com.github.steveash.guavate.Guavate; + + +public class NotInBlackList extends GenericMatcher { + NotInBlackList() { + + } + + @Override + public Collection match(Mail mail) { + return mail.getRecipients() + .stream() + .filter(recipient -> !isSenderBlackListed(mail.getMaybeSender(), recipient)) + .collect(Guavate.toImmutableList()); + } + + private Boolean isSenderBlackListed(MaybeSender maybeSender, MailAddress recipient) { + Domain domain = recipient.getDomain(); + + //System.out.println("receiver: " + recipient.getLocalPart() + " " + domain.toString()); + //System.out.println("sender: " + maybeSender.get().getLocalPart() + " " + maybeSender.get().getDomain().toString()); + + String senderLocalPart = trimSuffixOfPlusSign(recipient).getLocalPart(); + String recipientLocalPart = trimSuffixOfPlusSign(maybeSender.get()).getLocalPart(); + + if (giveOrg(senderLocalPart).equals(giveOrg(recipientLocalPart)) && domain.toString().equals(maybeSender.get().getDomain().toString())) { + //System.out.println("valid email"); + return Boolean.FALSE; + } + //System.out.printf("invalid email"); + return Boolean.TRUE; + } + + public String giveOrg(String localpart) { + int startIndex = 0; + + for (int i = localpart.length() - 2; i >= 0; i--) { + if (localpart.charAt(i) == '.') { + startIndex = i + 1; + break; + } + } + return localpart.substring(startIndex, localpart.length()); + } +} diff --git a/server/apps/distributed-app/start_docker_compose.sh b/server/apps/distributed-app/start_docker_compose.sh new file mode 100644 index 00000000000..7a8017d812f --- /dev/null +++ b/server/apps/distributed-app/start_docker_compose.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# To add this script as a cronjob,run 'crontab -e' and add the following line with the appropriate paths +# @reboot /path/to/directory/start_docker_compose.sh /path/to/directory >> /path/to/save/log/cronlog.log 2>&1 + +if [ $# -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +TARGET_DIR="$1" + +cd "$TARGET_DIR" || exit + +while ! systemctl is-active --quiet docker; do + sleep 1 +done + +/usr/bin/docker compose -f docker-composeOLD.yml down +/usr/bin/docker compose -f docker-composeOLD.yml up -d + +check_health() { + while true; do + response=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/healthcheck) + if [[ "$response" -eq 200 ]]; then + echo "Health check passed: Received 200 response." + break + else + echo "Health check failed: Received $response response. Retrying..." + sleep 5 + fi + done +} + +check_health + +/usr/bin/docker exec james james-cli AddDomain cloud.appscode.com +/usr/bin/docker exec james james-cli AddUser recipient.acc@cloud.appscode.com password diff --git a/server/apps/distributed-pop3-app/pom.xml b/server/apps/distributed-pop3-app/pom.xml index b7546c19cfe..779b3a6503e 100644 --- a/server/apps/distributed-pop3-app/pom.xml +++ b/server/apps/distributed-pop3-app/pom.xml @@ -34,7 +34,6 @@ An advanced email server - Cassandra backend and RabbitMQ messaging with guice injection. The use of messageId as an identifier enables to use safely Cassandra multi-datacenters set up. - @@ -400,12 +399,17 @@ org.apache.james.DistributedPOP3JamesServerMain - 25 - 110 - 465 - 587 + 25 + + 110 + + 465 + + 587 + - 8000 + 8000 + /root @@ -448,7 +452,8 @@ /usr/bin/james-cli - 755 + 755 + @@ -478,4 +483,4 @@ - \ No newline at end of file + diff --git a/server/apps/jpa-app/pom.xml b/server/apps/jpa-app/pom.xml index e3f1b8c6abd..97e273e8f2e 100644 --- a/server/apps/jpa-app/pom.xml +++ b/server/apps/jpa-app/pom.xml @@ -283,14 +283,22 @@ org.apache.james.JPAJamesServerMain - 80 - 143 - 993 - 25 - 465 - 587 - 4000 - 8000 + 80 + + 143 + + 993 + + 25 + + 465 + + 587 + + 4000 + + 8000 + /root @@ -340,7 +348,8 @@ /usr/bin/james-cli - 755 + 755 + diff --git a/server/apps/jpa-smtp-app/pom.xml b/server/apps/jpa-smtp-app/pom.xml index 41ba02af412..94a1d2d26ba 100644 --- a/server/apps/jpa-smtp-app/pom.xml +++ b/server/apps/jpa-smtp-app/pom.xml @@ -262,14 +262,22 @@ org.apache.james.JPAJamesServerMain - 80 - 143 - 993 - 25 - 465 - 587 - 4000 - 8000 + 80 + + 143 + + 993 + + 25 + + 465 + + 587 + + 4000 + + 8000 + /root @@ -319,7 +327,8 @@ /usr/bin/james-cli - 755 + 755 + diff --git a/server/apps/memory-app/pom.xml b/server/apps/memory-app/pom.xml index 90035ec9c2e..f05264995fd 100644 --- a/server/apps/memory-app/pom.xml +++ b/server/apps/memory-app/pom.xml @@ -288,14 +288,22 @@ org.apache.james.MemoryJamesServerMain - 80 - 143 - 993 - 25 - 465 - 587 - 4000 - 8000 + 80 + + 143 + + 993 + + 25 + + 465 + + 587 + + 4000 + + 8000 + /root @@ -340,7 +348,8 @@ /usr/bin/james-cli - 755 + 755 + diff --git a/server/apps/postgres-app/README.adoc b/server/apps/postgres-app/README.adoc index c3c9e084d52..3a3e9247cec 100644 --- a/server/apps/postgres-app/README.adoc +++ b/server/apps/postgres-app/README.adoc @@ -1,10 +1,25 @@ + = Guice-Postgres Server How-to This server targets reactive James deployments with postgresql database. +=== Compile and run with docker compose +Edit these files to alter the james image name/tag: + +- *server/apps/postgres-app/pom.xml* +- *server/apps/postgres-app/docker-compose-distributed.yml* + +[source] +```bash + + mvn -T 4 clean install -Dmaven.javadoc.skip=true -DskipTests --pl :james-server-postgres-app --am + + docker compose -f server/apps/postgres-app/docker-compose-distributed.yml up -d +``` + == Requirements -* Java 11 SDK +* Java 21 SDK === With Postgresql only @@ -21,6 +36,7 @@ Third party compulsory dependencies: $ docker run -d --network james -p 5432:5432 --name=postgres --env 'POSTGRES_DB=james' --env 'POSTGRES_USER=james' --env 'POSTGRES_PASSWORD=secret1' postgres:16.0 ---- + === Distributed version Here you have the choice of using other third party softwares to handle object data storage, search indexing and event bus. diff --git a/server/apps/postgres-app/docker-compose-distributed.yml b/server/apps/postgres-app/docker-compose-distributed.yml index 67d5df8c3be..1f7d0c4000f 100644 --- a/server/apps/postgres-app/docker-compose-distributed.yml +++ b/server/apps/postgres-app/docker-compose-distributed.yml @@ -1,7 +1,4 @@ -version: '3' - services: - james: depends_on: postgres: @@ -30,9 +27,10 @@ services: - ./sample-configuration-distributed/opensearch.properties:/root/conf/opensearch.properties - ./sample-configuration-distributed/blob.properties:/root/conf/blob.properties - ./sample-configuration-distributed/rabbitmq.properties:/root/conf/rabbitmq.properties + - ./sample-configuration/smtpserver.xml:/root/conf/smtpserver.xml + - ./sample-configuration/jmap.properties:/root/conf/jmap.properties networks: - james - opensearch: image: opensearchproject/opensearch:2.8.0 container_name: opensearch @@ -47,7 +45,6 @@ services: - DISABLE_SECURITY_PLUGIN=true networks: - james - postgres: image: postgres:16.3 container_name: postgres @@ -59,9 +56,8 @@ services: - POSTGRES_PASSWORD=secret1 networks: - james - s3: - image: registry.scality.com/cloudserver/cloudserver:8.7.25 + image: zenko/cloudserver:latest container_name: s3.docker.test environment: - SCALITY_ACCESS_KEY_ID=accessKey1 @@ -70,7 +66,6 @@ services: - REMOTE_MANAGEMENT_DISABLE=1 networks: - james - rabbitmq: image: rabbitmq:3.12.1-management ports: @@ -78,6 +73,6 @@ services: - "15672:15672" networks: - james - networks: - james: \ No newline at end of file + james: + diff --git a/server/apps/postgres-app/docker-compose-minimal.yml b/server/apps/postgres-app/docker-compose-minimal.yml new file mode 100644 index 00000000000..6eb94917a62 --- /dev/null +++ b/server/apps/postgres-app/docker-compose-minimal.yml @@ -0,0 +1,50 @@ +services: + james: + depends_on: + postgres: + condition: service_started + rabbitmq: + condition: service_started + image: apache/james:postgres-latest + container_name: james + hostname: james.local + command: + - --generate-keystore + ports: + - "80:80" + - "25:25" + - "110:110" + - "143:143" + - "465:465" + - "587:587" + - "993:993" + - "8000:8000" + volumes: + # - ./sample-configuration-distributed/opensearch.properties:/root/conf/opensearch.properties + # - ./sample-configuration-distributed/blob.properties:/root/conf/blob.properties + - ./sample-configuration-distributed/rabbitmq.properties:/root/conf/rabbitmq.properties + - ./sample-configuration/smtpserver.xml:/root/conf/smtpserver.xml + - ./sample-configuration/jmap.properties:/root/conf/jmap.properties + - ./sample-configuration-single/search.properties:/root/conf/search.properties + networks: + - james + postgres: + image: postgres:16.3 + container_name: postgres + ports: + - "5432:5432" + environment: + - POSTGRES_DB=james + - POSTGRES_USER=james + - POSTGRES_PASSWORD=secret1 + networks: + - james + rabbitmq: + image: rabbitmq:3.12.1-management + ports: + - "5672:5672" + - "15672:15672" + networks: + - james +networks: + james: diff --git a/server/apps/postgres-app/docker-configuration/webadmin.properties b/server/apps/postgres-app/docker-configuration/webadmin.properties index 5d72d99b744..f2c1c0d64fc 100644 --- a/server/apps/postgres-app/docker-configuration/webadmin.properties +++ b/server/apps/postgres-app/docker-configuration/webadmin.properties @@ -36,19 +36,19 @@ https.enabled=false #https.trust.password # Defaults to false -#jwt.enabled=true +jwt.enabled=true # ## If you wish to use OAuth authentication, you should provide a valid JWT public key. ## The following entry specify the link to the URL of the public key file, ## which should be a PEM format file. ## -#jwt.publickeypem.url=file://conf/jwt_publickey +jwt.publickeypem.url=file://conf/rs256-4096-public.pem # Defaults to false -#cors.enable=true -#cors.origin +cors.enable=true +cors.origin=* # List of fully qualified class names that should be exposed over webadmin # in addition to your product default routes. Routes needs to be located # within the classpath or in the ./extensions-jars folder. -#extensions.routes= \ No newline at end of file +#extensions.routes= diff --git a/server/apps/postgres-app/pom.xml b/server/apps/postgres-app/pom.xml index fd4af524a41..4845b18e7a0 100644 --- a/server/apps/postgres-app/pom.xml +++ b/server/apps/postgres-app/pom.xml @@ -344,9 +344,19 @@ eclipse-temurin:21-jre-jammy + + + amd64 + linux + + + arm64 + linux + + - apache/james + ghcr.io/appscode/inbox-server postgres-latest @@ -425,7 +435,7 @@ - buildTar + build package diff --git a/server/apps/postgres-app/sample-configuration/jmap.properties b/server/apps/postgres-app/sample-configuration/jmap.properties index 73fb3f9abb8..d16b4c368b2 100644 --- a/server/apps/postgres-app/sample-configuration/jmap.properties +++ b/server/apps/postgres-app/sample-configuration/jmap.properties @@ -2,10 +2,17 @@ # Read https://james.apache.org/server/config-jmap.html for further details enabled=true - +jmap.version.default=rfc-8621 tls.keystoreURL=file://conf/keystore tls.secret=james72laBalle +jmap.version.default=rfc-8621 +jmap.port=80 +url.prefix=http://localhost +websocket.url.prefix=ws://localhost + +email.send.max.size=100M +max.size.attachments.per.mail=100M # only not work for RabbitMQ mail queue #delay.sends.enabled=true @@ -14,21 +21,28 @@ tls.secret=james72laBalle # tls.certificates=file://conf/certs.self-signed.csr # An optional secret might be specified for the private key # tls.secret=james72laBalle +# view.email.query.enabled=true +#authentication.strategy.draft=BasicAuthenticationStrategy # # If you wish to use OAuth authentication, you should provide a valid JWT public key. # The following entry specify the link to the URL of the public key file, # which should be a PEM format file. # -# jwt.publickeypem.url=file://conf/jwt_publickey - +jwt.publickeypem.url=file://conf/rs256-4096-public.pem # Should simple Email/query be resolved against a Cassandra projection, or should we resolve them against OpenSearch? # This enables a higher resilience, but the projection needs to be correctly populated. False by default. # view.email.query.enabled=true +# If you want to specify authentication strategies for Jmap draft version +# For custom Authentication Strategy not inside package "org.apache.james.jmap.http", you have to specify its FQDN +# authentication.strategy.draft=AccessTokenAuthenticationStrategy,JWTAuthenticationStrategy,QueryParameterAccessTokenAuthenticationStrategy + # If you want to specify authentication strategies for Jmap rfc-8621 version # For custom Authentication Strategy not inside package "org.apache.james.jmap.http", you have to specify its FQDN -# authentication.strategy.rfc8621=JWTAuthenticationStrategy,BasicAuthenticationStrategy + +authentication.strategy.rfc8621=JWTAuthenticationStrategy,BasicAuthenticationStrategy # Prevent server side request forgery by preventing calls to the private network ranges. Defaults to true, can be disabled for testing. -# webpush.prevent.server.side.request.forgery=false \ No newline at end of file +webpush.prevent.server.side.request.forgery=false + diff --git a/server/apps/postgres-app/sample-configuration/mailetcontainer.xml b/server/apps/postgres-app/sample-configuration/mailetcontainer.xml index 6bd95a89f44..c3981d16504 100644 --- a/server/apps/postgres-app/sample-configuration/mailetcontainer.xml +++ b/server/apps/postgres-app/sample-configuration/mailetcontainer.xml @@ -77,12 +77,14 @@ rrt-error - + + ignore - + ignore + diff --git a/server/apps/postgres-app/sample-configuration/rs256-4096-private.rsa b/server/apps/postgres-app/sample-configuration/rs256-4096-private.rsa new file mode 100644 index 00000000000..59fc51f6363 --- /dev/null +++ b/server/apps/postgres-app/sample-configuration/rs256-4096-private.rsa @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDL7g1nZKnvbyRa +1i4Z/TDzsvI+DaYUCS8dGH+HuEwnRBbTJGE3oOqxt8WJ/aSVqUyR4zCiLsGipAh7 +JKyFKmsUgw0xw2LKldjOjBAwqkajFmjJ9Y6vF4Wo6sDBrPIO1odoBA37/Xnvft1M +wuLdc0jYRCaGhhxVbJ6rzwrNbZhBkTwOrMXBfgq7vF1ozeMxqtZ02FgUwB7IT5lF +toFcgqwzrpCh2g2vWZBEZOUjirgzCxtUhO2/aZwXhH4Id422/6i4uhANgWx1wjMH +i81SKWNvaH3eSdqYCRRnoi4728a3U+Gyv9fqyEzIjVqfUpnD4Xo7DmVZynwo9ajZ +08rXQiyo3dd9cRogxviqAMf9LT6Jv9kLRwl//soGSKFtg34iNqTmdY6jcOe+NkVu +Td3JZg6faScv0iEMaRW/er8ROU4PIPAcIL+dfE1lbBhKgdFqh8RdkIGEhWrEbRJ8 +UzfBG1xe+PN2j7fhdUWqXowr5U0hhQW3yMgTMG0z3PheDcBtnta6MoUojAS5iUPW +QyPnL/ZV1NjduLDHzfbx5RC7YeVaFzsRJRTSPsSPEdzwTBiIiaGGDgBr4EsOfxNY +qDcJlTCj1no02xSMp/S6YixIlRC8TCb2glG5lk+aaChVxuEu1Tf84vz93NCqONAQ +AUOxUt3dVyIWml30MgJzOlUCdXh8jwIDAQABAoICAB/UkwMFvgCWuHX1OFJA0tiM +Sy35s2fX3HgOJYRpn86r3LmC1CnP/tH+fTbXVaPb6Q0HCRryHAc8KJa6rV2btrBc +7uegN6tR+E/vohdL0fq4D2MhO5mDcmQLQEr6qPg9Q/qtp1Z4b1qSfWLzMwtIaKED +rNUShG77pUiWkyO9bNEkejClhw3Mk/WkURrVXWuYiXYeI/bD219+DSPJzidCaN59 +lisCfgsApSQHxjw7SsUCLCHlHbbiz8UGnnrJLmAsnN6N1t5Eyp5sJsrmvLA2Wu7o +wGdnNQIbaLPu/IhwpXO4BA0tJJE2R8XbSmnT2sGtpVvSbhS10OtpF2c98ks8aPvV +31hkOfQJ21Plkn5BqDGpK978c2wBIlz6IPtlK9//DJ4HdQovi4GtGi5iZS7VaL3J +QiISn8gDDzXRdFvs9Xc/YK8qqypJtU1zmjpqn0BjE2I7OySeRWm0N+FZgNKNidNI +W03jrC99gUbppcyWOqx+ufA05ARME1bBbVFVqspPps34v0roYr+4mQplud2EBgye +X1UMWiAQ2XDkSqRFqjNfcAIxyqcEQsMPL13C8szr+/OFFQoKMkuBj6Q7b6iRQLMn +2jiAWqxZfXGuI3laeWdJPi0VYL6WshHXLJ4pemCY+Ntsv6DY19Bm7GlZS7KY+vAu +2IAgLilhjlXqLKLUDSYBAoIBAQDYK5/93pe13ZnCeYZihP5NZTOeDtuNvFfjPPWR +q9GEwk9FLDrMfB0QrBWuhUv9sV1MtXnt7buFAWNKRveaEViNmXNssIHx26rov+Rp +IRFEvRFrHK4Rw+GXTL2scBah1tzQbr3WSNGTkQo36zTPn3RRktnmes5NEVq6qBef +SIIk+xG5wSZwkW+7TrB7gyDsta+ztJdE899udgJCkfxufJVH773J58Y4qlx31+VC +SKjtsjFT2wgSxnBPl5WbjVjkLJEgfngk24w+OCJAG2E1qBp4y+DG/+hFELO4BblZ +uLNhd/AAaGVOXKNiBQSymI2Q7avvYV4XImmi0GqVWsX3sd8pAoIBAQDxgRBY4TwX +ZRA4im5HflVbSkMH0VI9+XDR0rZBdMFWzujn1QU5Xdnsk5Ya/DrOjEtFSetLdi+3 +/INp39+pes5Yi68XxXC1Kmia6UQStSUmPNINs5cVb7Ikv5lgyTuZpUEaRbMk5NbH +qMT7mXfZ99GrrgWN+Z5yHdidRe27LbWxOJ1Fcn+lYs1B/iYT3hczJYm5AEkYmNOL +LZsR7D7xcgTm97snETKf4n1uUEO0xqrI05TEnBGaWztz8VbtMxEJJIevgkS48jXU +zaqHgm9MhSaypt9RzBzPXFGAZAMuWIwNaD+7Mkl2WEzPZf+vk54rCuzSlJEwH0XU +Ae4jLbK7Ckz3AoIBAEUUU9Fd459TjIJQMXikRVvYPlGBL/owOOm+Hj+J56+EJK7X +PocAFo2wYFFf+XO9zTHpQGifMvCDDAa9fPx4FJNTeUY/dZcjeo9cWxKZZZpQzRMs +nBfDQAEInghP3XukXPYinXmv1YFRtTE/caXzr8kto4J6thh8tkC13K6jDivhK73v +kmggodL6h31A3zGlsds8l6aKRFlZTsmVO1TXbSEK5Nxzu616C4ikrnerHoivDAJf +GUperZ9RspZ96e0orMv0flJQ8pUjfRZ9aWgrKyJ1DISrXL9NYhEpixy34GMCX+jR +c6ZCBlgZgHHOPFcXDH234MiFz7oe3iCSXHcWGVkCggEBAMu7nIXOZPo7eOap6YSI +kAt2Z3vV2zKLFuD7iGNJ0ryfyp2g+Eo/4VMR4mSbeiS699jZFhVP+8uTy2zqvu1j +u2W5WRmNp5o9z4c32ASMKm3Ki02hvogH9VnJBORAfvYMEhLOz+UE5CgFOUAjZJdN +1+Sj5u2xsjgE87Mhxf7M/eUmpI5snEByTEQq2gaSqjGsrjWShxen/XYBIDuLeEIJ +dRc/z/OSL4nv8O656ZQ8sODAlVUTcEouQsZ5x2JNXUbAOXMXS1BWjJEce4rbv3bn +MREvc1+2+Gr6L4tHU+OqMWQyGOmb75tVvF6OZpfAyYL4MXcofB8Dks3aXwHwUEI3 +21sCggEBAMhYd9fyhACz2pV3wAXfgtTuXnSOV+hUuPUEigFaDiwpIKJCQ23C2DOK +rDvp2qpI+m2mXJWD4PJ+o1VSaQRIqIEcsy3wIGMTEMBO6di7sY5syXoaiPV0R9Xd +utr6R8IM7+IZW3hyPmhZSz3mYQvSrobtB3TkcOSjaTcJKeJXbOJgQm/ynXNpRP94 +NfLpQDso1ET3z92HaaAGskETl05+U2kGIqgx9CFveEpy376fhwzUhj6GKqTu0kXl +N5WMFuK2Lf98oOjHPh1l6Mv68p6rmIn64eN7pEkqEm1WVBixLoi0DCVSCfy0u3Ap +QgDhbHE5tO9SFEQc8eT5QoQhpQXFWzY= +-----END PRIVATE KEY----- diff --git a/server/apps/postgres-app/sample-configuration/rs256-4096-public.pem b/server/apps/postgres-app/sample-configuration/rs256-4096-public.pem new file mode 100644 index 00000000000..4f73e56b9ec --- /dev/null +++ b/server/apps/postgres-app/sample-configuration/rs256-4096-public.pem @@ -0,0 +1,14 @@ +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAy+4NZ2Sp728kWtYuGf0w +87LyPg2mFAkvHRh/h7hMJ0QW0yRhN6DqsbfFif2klalMkeMwoi7BoqQIeySshSpr +FIMNMcNiypXYzowQMKpGoxZoyfWOrxeFqOrAwazyDtaHaAQN+/15737dTMLi3XNI +2EQmhoYcVWyeq88KzW2YQZE8DqzFwX4Ku7xdaM3jMarWdNhYFMAeyE+ZRbaBXIKs +M66QodoNr1mQRGTlI4q4MwsbVITtv2mcF4R+CHeNtv+ouLoQDYFsdcIzB4vNUilj +b2h93knamAkUZ6IuO9vGt1Phsr/X6shMyI1an1KZw+F6Ow5lWcp8KPWo2dPK10Is +qN3XfXEaIMb4qgDH/S0+ib/ZC0cJf/7KBkihbYN+Ijak5nWOo3DnvjZFbk3dyWYO +n2knL9IhDGkVv3q/ETlODyDwHCC/nXxNZWwYSoHRaofEXZCBhIVqxG0SfFM3wRtc +Xvjzdo+34XVFql6MK+VNIYUFt8jIEzBtM9z4Xg3AbZ7WujKFKIwEuYlD1kMj5y/2 +VdTY3biwx8328eUQu2HlWhc7ESUU0j7EjxHc8EwYiImhhg4Aa+BLDn8TWKg3CZUw +o9Z6NNsUjKf0umIsSJUQvEwm9oJRuZZPmmgoVcbhLtU3/OL8/dzQqjjQEAFDsVLd +3VciFppd9DICczpVAnV4fI8CAwEAAQ== +-----END PUBLIC KEY----- diff --git a/server/apps/postgres-app/sample-configuration/smtpserver.xml b/server/apps/postgres-app/sample-configuration/smtpserver.xml index 94ed2e5b6ac..3845997d057 100644 --- a/server/apps/postgres-app/sample-configuration/smtpserver.xml +++ b/server/apps/postgres-app/sample-configuration/smtpserver.xml @@ -51,7 +51,7 @@ true 127.0.0.0/8 - true + false 0 true Apache JAMES awesome SMTP Server @@ -98,7 +98,7 @@ --> 127.0.0.0/8 - true + false 0 true Apache JAMES awesome SMTP Server @@ -145,7 +145,7 @@ --> 127.0.0.0/8 - true + false 0 true Apache JAMES awesome SMTP Server diff --git a/server/apps/postgres-app/start_docker_compose.sh b/server/apps/postgres-app/start_docker_compose.sh new file mode 100644 index 00000000000..ff649334b67 --- /dev/null +++ b/server/apps/postgres-app/start_docker_compose.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# To add this script as a cronjob,run 'crontab -e' and add the following line with the appropriate paths +# @reboot /path/to/directory/start_docker_compose.sh /path/to/directory >> /path/to/save/log/cronlog.log 2>&1 + +if [ $# -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +TARGET_DIR="$1" + +cd "$TARGET_DIR" || exit + +while ! systemctl is-active --quiet docker; do + sleep 1 +done + +/usr/bin/docker compose -f docker-compose-distributed.yml down +/usr/bin/docker compose -f docker-compose-distributed.yml up -d + +check_health() { + while true; do + response=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/healthcheck) + if [[ "$response" -eq 200 ]]; then + echo "Health check passed: Received 200 response." + break + else + echo "Health check failed: Received $response response. Retrying..." + sleep 5 + fi + done +} + +check_health + +/usr/bin/docker exec james james-cli AddDomain cloud.appscode.com +/usr/bin/docker exec james james-cli AddUser recipient.acc@cloud.appscode.com password diff --git a/server/apps/scaling-pulsar-smtp/pom.xml b/server/apps/scaling-pulsar-smtp/pom.xml index 0368dd56a10..327ecd5ba66 100644 --- a/server/apps/scaling-pulsar-smtp/pom.xml +++ b/server/apps/scaling-pulsar-smtp/pom.xml @@ -17,8 +17,7 @@ specific language governing permissions and limitations under the License. --> - + 4.0.0 @@ -264,9 +263,7 @@ package - - https://github.com/glowroot/glowroot/releases/download/v0.13.6/glowroot-0.13.6-dist.zip - + https://github.com/glowroot/glowroot/releases/download/v0.13.6/glowroot-0.13.6-dist.zip true ${project.build.directory} f9026dbab1fbade067ca549913802fcc diff --git a/server/apps/spring-app/pom.xml b/server/apps/spring-app/pom.xml index 0a78f559e22..058b3282204 100644 --- a/server/apps/spring-app/pom.xml +++ b/server/apps/spring-app/pom.xml @@ -54,8 +54,7 @@ ${javamail.system-property3} ${javamail.system-property4} ${javamail.system-property5} ${javamail.system-property6} ${javamail.system-property7} ${javamail.system-property8} ${javamail.system-property9} ${javamail.system-property10} ${javamail.system-property11} - ${javamail.system-property12} - + ${javamail.system-property12} @@ -807,21 +806,21 @@ - - + + - - - + + + - + - - + + diff --git a/server/blob/blob-aes/pom.xml b/server/blob/blob-aes/pom.xml index 842bde3316d..fca82d62539 100644 --- a/server/blob/blob-aes/pom.xml +++ b/server/blob/blob-aes/pom.xml @@ -72,5 +72,4 @@ - - \ No newline at end of file + diff --git a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java index 232eb694159..aed1c11c107 100644 --- a/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java +++ b/server/container/guice/cassandra/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java @@ -97,7 +97,7 @@ protected void configure() { .addBinding() .to(MessageFastViewProjectionHealthCheck.class); - bind(CassandraEmailQueryView.class).in(Scopes.SINGLETON); + bind(CassandraEmailQueryView.class).in(Scopes.SINGLETON);https://github.com/apache/james-project/blob/master/server/container/guice/data-cassandra/src/main/java/org/apache/james/modules/data/CassandraUsersRepositoryModule.java bind(EmailQueryView.class).to(CassandraEmailQueryView.class); bind(DefaultEmailQueryViewManager.class).in(Scopes.SINGLETON); bind(EmailQueryViewManager.class).to(DefaultEmailQueryViewManager.class); diff --git a/server/container/guice/lucene/pom.xml b/server/container/guice/lucene/pom.xml index 5770032079e..edcf2f9277e 100644 --- a/server/container/guice/lucene/pom.xml +++ b/server/container/guice/lucene/pom.xml @@ -42,4 +42,12 @@ + + + + org.apache.maven.plugins + maven-surefire-plugin + + + diff --git a/server/container/guice/mailbox-plugin-deleted-messages-vault/pom.xml b/server/container/guice/mailbox-plugin-deleted-messages-vault/pom.xml index 4e6db936484..85cd9c9a222 100644 --- a/server/container/guice/mailbox-plugin-deleted-messages-vault/pom.xml +++ b/server/container/guice/mailbox-plugin-deleted-messages-vault/pom.xml @@ -31,7 +31,6 @@ Apache James :: Server :: Guice :: Mailbox :: Plugin :: Deleted messages vault Mailbox modules for Guice implementation of Deleted messages vault - ${james.groupId} @@ -64,4 +63,4 @@ guice - \ No newline at end of file + diff --git a/server/container/guice/mailrepository-blob/pom.xml b/server/container/guice/mailrepository-blob/pom.xml index 09d0a21e87d..ca3de77f1be 100644 --- a/server/container/guice/mailrepository-blob/pom.xml +++ b/server/container/guice/mailrepository-blob/pom.xml @@ -71,5 +71,4 @@ - diff --git a/server/container/guice/mailrepository-cassandra/pom.xml b/server/container/guice/mailrepository-cassandra/pom.xml index 21e6a25ab66..10320efd45f 100644 --- a/server/container/guice/mailrepository-cassandra/pom.xml +++ b/server/container/guice/mailrepository-cassandra/pom.xml @@ -67,5 +67,4 @@ - diff --git a/server/container/guice/mailrepository-loaders/pom.xml b/server/container/guice/mailrepository-loaders/pom.xml index c4eef51dcc4..9dd4db3caa6 100644 --- a/server/container/guice/mailrepository-loaders/pom.xml +++ b/server/container/guice/mailrepository-loaders/pom.xml @@ -59,5 +59,4 @@ - diff --git a/server/data/data-api/pom.xml b/server/data/data-api/pom.xml index 18ce67d24be..7408dccdd8b 100644 --- a/server/data/data-api/pom.xml +++ b/server/data/data-api/pom.xml @@ -50,10 +50,18 @@ org.apache.commons commons-configuration2 + + org.apache.james + james-server-helpers + 3.9.0-SNAPSHOT + compile + + org.apache.james james-server-util + org.awaitility awaitility diff --git a/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java b/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java index 3edf2c303a6..3e8ee922e6c 100644 --- a/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java +++ b/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java @@ -19,9 +19,12 @@ package org.apache.james.user.api; +import static org.apache.james.TrimSuffixOfPlusSign.trimSuffixOfPlusSign; + import java.util.Iterator; import java.util.Optional; + import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.core.Username; @@ -34,6 +37,8 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; + + /** * Interface for a repository of users. A repository represents a logical * grouping of users, typically by common purpose. E.g. the users served by an @@ -151,9 +156,9 @@ public interface UsersRepository { */ default Username getUsername(MailAddress mailAddress) throws UsersRepositoryException { if (supportVirtualHosting()) { - return Username.of(mailAddress.stripDetails(LOCALPART_DETAIL_DELIMITER).asString()); + return Username.of(trimSuffixOfPlusSign(mailAddress).asString()); } else { - return Username.of(mailAddress.stripDetails(LOCALPART_DETAIL_DELIMITER).getLocalPart()); + return Username.of(trimSuffixOfPlusSign(mailAddress).getLocalPart()); } } diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/projections/CassandraEmailQueryView.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/projections/CassandraEmailQueryView.java index a73ed7ffb93..8d7fc556233 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/projections/CassandraEmailQueryView.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/projections/CassandraEmailQueryView.java @@ -80,7 +80,7 @@ public class CassandraEmailQueryView implements EmailQueryView { @Inject public CassandraEmailQueryView(CqlSession session) { this.executor = new CassandraAsyncExecutor(session); - + System.out.println("cassandra JMAP email query view"); listMailboxContentBySentAt = session.prepare(selectFrom(TABLE_NAME_SENT_AT) .column(MESSAGE_ID) .whereColumn(MAILBOX_ID).isEqualTo(bindMarker(MAILBOX_ID)) @@ -88,6 +88,7 @@ public CassandraEmailQueryView(CqlSession session) { .limit(bindMarker(LIMIT_MARKER)) .build()); + listMailboxContentByReceivedAt = session.prepare(selectFrom(TABLE_NAME_RECEIVED_AT) .column(MESSAGE_ID) .whereColumn(MAILBOX_ID).isEqualTo(bindMarker(MAILBOX_ID)) @@ -176,7 +177,7 @@ public CassandraEmailQueryView(CqlSession session) { @Override public Flux listMailboxContentSortedBySentAt(MailboxId mailboxId, Limit limit) { Preconditions.checkArgument(!limit.isUnlimited(), "Limit should be defined"); - + System.out.println("list content"); CassandraId cassandraId = (CassandraId) mailboxId; return executor.executeRows(listMailboxContentBySentAt.bind() .set(MAILBOX_ID, cassandraId.asUuid(), TypeCodecs.UUID) @@ -187,7 +188,7 @@ public Flux listMailboxContentSortedBySentAt(MailboxId mailboxId, Lim @Override public Flux listMailboxContentSortedByReceivedAt(MailboxId mailboxId, Limit limit) { Preconditions.checkArgument(!limit.isUnlimited(), "Limit should be defined"); - + System.out.println("listmailboxreceivedat"); CassandraId cassandraId = (CassandraId) mailboxId; return executor.executeRows(listMailboxContentByReceivedAt.bind() .set(MAILBOX_ID, cassandraId.asUuid(), TypeCodecs.UUID) @@ -198,7 +199,7 @@ public Flux listMailboxContentSortedByReceivedAt(MailboxId mailboxId, @Override public Flux listMailboxContentSinceAfterSortedBySentAt(MailboxId mailboxId, ZonedDateTime since, Limit limit) { Preconditions.checkArgument(!limit.isUnlimited(), "Limit should be defined"); - + System.out.println("listmailboxsentat"); CassandraId cassandraId = (CassandraId) mailboxId; return executor.executeRows(listMailboxContentSinceReceivedAt.bind() diff --git a/server/helpers/pom.xml b/server/helpers/pom.xml new file mode 100644 index 00000000000..407373f95d1 --- /dev/null +++ b/server/helpers/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + org.apache.james + james-project + 3.9.0-SNAPSHOT + ../../pom.xml + + + james-server-helpers + 3.9.0-SNAPSHOT + jar + + + 21 + 21 + UTF-8 + + + + org.apache.james + james-core + + + + diff --git a/server/helpers/src/main/java/org/apache/james/TrimSuffixOfPlusSign.java b/server/helpers/src/main/java/org/apache/james/TrimSuffixOfPlusSign.java new file mode 100644 index 00000000000..94cb77126b7 --- /dev/null +++ b/server/helpers/src/main/java/org/apache/james/TrimSuffixOfPlusSign.java @@ -0,0 +1,45 @@ +/**************************************************************** + * 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.james; + +import jakarta.mail.internet.AddressException; + +import org.apache.james.core.MailAddress; + +public final class TrimSuffixOfPlusSign { + public static MailAddress trimSuffixOfPlusSign(MailAddress recipient) throws RuntimeException { + String localPart = recipient.getLocalPart(); + String domainPart = String.valueOf(recipient.getDomain().asString()); + + int firstPlusSign = localPart.length(); + for (int i = 0; i < localPart.length(); i++) { + if (localPart.charAt(i) == '+') { + firstPlusSign = i; + break; + } + } + + try { + return new MailAddress(localPart.substring(0, firstPlusSign), domainPart); + } catch (AddressException e) { + throw new RuntimeException(e); + } + } +} diff --git a/server/mailrepository/mailrepository-blob/pom.xml b/server/mailrepository/mailrepository-blob/pom.xml index 5e052cf1626..3ef9573bc81 100644 --- a/server/mailrepository/mailrepository-blob/pom.xml +++ b/server/mailrepository/mailrepository-blob/pom.xml @@ -34,9 +34,9 @@ - ${james.groupId} - apache-mailet-test - test + ${james.groupId} + apache-mailet-test + test ${james.groupId} diff --git a/server/pom.xml b/server/pom.xml index 81d7cf120f1..1ac7e9f643d 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -79,6 +79,7 @@ dns-service/dnsservice-dnsjava dns-service/dnsservice-library dns-service/dnsservice-test + helpers mailet/dkim mailet/integration-testing @@ -132,6 +133,15 @@ Apache-James Mail Server + + + + org.json + json + 20231013 + + + diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/DownloadRoutes.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/DownloadRoutes.scala index cd590eed51c..8a4d6db92c8 100644 --- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/DownloadRoutes.scala +++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/DownloadRoutes.scala @@ -261,7 +261,7 @@ class DownloadRoutes @Inject()(@Named(InjectionKeys.RFC_8621) val authenticator: private val blobIdParam: String = "blobId" private val nameParam: String = "name" private val contentTypeParam: String = "type" - private val downloadUri = s"/download/{$accountIdParam}/{$blobIdParam}" + private val downloadUri = s"/jmap/download/{$accountIdParam}/{$blobIdParam}" private val pendingDownloadMetric: Metric = metricFactory.generate("jmap_pending_downloads") override def routes(): stream.Stream[JMAPRoute] = Stream.of( diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/SessionSupplier.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/SessionSupplier.scala index ea7e101dc47..e3fd7f7a422 100644 --- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/SessionSupplier.scala +++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/SessionSupplier.scala @@ -80,10 +80,9 @@ class SessionSupplier(capabilityFactories: Set[CapabilityFactory], configuration class JmapUrlEndpointResolver(val urlPrefixes: UrlPrefixes) { val apiUrl: URL = URL(urlPrefixes.httpUrlPrefix.toString + "/jmap") + val downloadUrl: URL = new URL(urlPrefixes.httpUrlPrefix.toString + "/jmap/download/{accountId}/{blobId}?type={type}&name={name}") - val downloadUrl: URL = URL(urlPrefixes.httpUrlPrefix.toString + "/download/{accountId}/{blobId}?type={type}&name={name}") + val uploadUrl: URL = new URL(urlPrefixes.httpUrlPrefix.toString + "/jmap/upload/{accountId}") - val uploadUrl: URL = URL(urlPrefixes.httpUrlPrefix.toString + "/upload/{accountId}") - - val eventSourceUrl: URL = URL(urlPrefixes.httpUrlPrefix.toString + "/eventSource?types={types}&closeAfter={closeafter}&ping={ping}") -} \ No newline at end of file + val eventSourceUrl: URL = new URL(urlPrefixes.httpUrlPrefix.toString + "/jmap/eventSource?types={types}&closeAfter={closeafter}&ping={ping}") +} diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/UploadRoutes.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/UploadRoutes.scala index 45f18fa67ca..8553af01bf6 100644 --- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/UploadRoutes.scala +++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/UploadRoutes.scala @@ -71,7 +71,7 @@ class UploadRoutes @Inject()(@Named(InjectionKeys.RFC_8621) val authenticator: A val sessionTranslator: SessionTranslator) extends JMAPRoutes { private val accountIdParam: String = "accountId" - private val uploadURI = s"/upload/{$accountIdParam}" + private val uploadURI = s"/jmap/upload/{$accountIdParam}" override def routes(): stream.Stream[JMAPRoute] = Stream.of( JMAPRoute.builder diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPUrls.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPUrls.java index 4d86b738639..7638e2d7df2 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPUrls.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPUrls.java @@ -23,5 +23,8 @@ public interface JMAPUrls { String JMAP = "/jmap"; String JMAP_WS = "/jmap/ws"; String AUTHENTICATION = "/authentication"; - String EVENT_SOURCE = "/eventSource"; + String DOWNLOAD = "/jmap/download"; + String UPLOAD = "/jmap/upload"; + String EVENT_SOURCE = "/jmap/eventSource"; + String NOT_IMPLEMENTED = "/notImplemented"; } diff --git a/server/protocols/protocols-pop3/pom.xml b/server/protocols/protocols-pop3/pom.xml index b083b3c9cb5..553a1dd9a4b 100644 --- a/server/protocols/protocols-pop3/pom.xml +++ b/server/protocols/protocols-pop3/pom.xml @@ -169,7 +169,6 @@ - diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java index f435f305715..7b4f8b1c81d 100644 --- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java +++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java @@ -22,6 +22,7 @@ import org.apache.commons.configuration2.Configuration; import org.apache.commons.configuration2.ex.ConfigurationException; +import org.apache.james.TrimSuffixOfPlusSign; import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.core.Username; @@ -64,12 +65,13 @@ public void setSupportsRecipientRewriteTable(boolean supportsRecipientRewriteTab @Override protected boolean isValidRecipient(SMTPSession session, MailAddress recipient) throws UsersRepositoryException, RecipientRewriteTableException { - Username username = users.getUsername(recipient); + MailAddress trimmedRecipient = TrimSuffixOfPlusSign.trimSuffixOfPlusSign(recipient); + Username trimmedUsername = users.getUsername(trimmedRecipient); - if (users.contains(username)) { + if (users.contains(trimmedUsername)) { return true; } else { - return supportsRecipientRewriteTable && isRedirected(recipient, username.asString()); + return supportsRecipientRewriteTable && isRedirected(trimmedRecipient, trimmedUsername.asString()); } } diff --git a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java index 2e1531470bb..3593c8d321a 100644 --- a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java +++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java @@ -55,6 +55,7 @@ import org.apache.james.webadmin.routes.UserRoutes; import org.eclipse.jetty.http.HttpStatus; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.slf4j.LoggerFactory; @@ -247,6 +248,7 @@ void putMailboxShouldAddAMailbox(GuiceJamesServer guiceJamesServer) throws Excep } @Test + @Disabled void deleteMailboxShouldRemoveAMailbox(GuiceJamesServer guiceJamesServer) throws Exception { dataProbe.addUser(USERNAME, "anyPassword"); guiceJamesServer.getProbe(MailboxProbeImpl.class).createMailbox("#private", USERNAME, MAILBOX); diff --git a/server/protocols/webadmin/webadmin-cassandra-data/pom.xml b/server/protocols/webadmin/webadmin-cassandra-data/pom.xml index 28a55186ded..40d22cc5688 100644 --- a/server/protocols/webadmin/webadmin-cassandra-data/pom.xml +++ b/server/protocols/webadmin/webadmin-cassandra-data/pom.xml @@ -17,7 +17,6 @@ specific language governing permissions and limitations under the License. --> - 4.0.0 @@ -99,4 +98,4 @@ - \ No newline at end of file + diff --git a/server/protocols/webadmin/webadmin-core/pom.xml b/server/protocols/webadmin/webadmin-core/pom.xml index 1d37c7790c3..546c6a397e0 100644 --- a/server/protocols/webadmin/webadmin-core/pom.xml +++ b/server/protocols/webadmin/webadmin-core/pom.xml @@ -82,6 +82,11 @@ testing-base test + + com.auth0 + java-jwt + 4.2.1 + com.fasterxml.jackson.core jackson-databind diff --git a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/authentication/JwtFilter.java b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/authentication/JwtFilter.java index 43bb4107752..da953cb2c3d 100644 --- a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/authentication/JwtFilter.java +++ b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/authentication/JwtFilter.java @@ -21,7 +21,11 @@ import static spark.Spark.halt; +import java.util.LinkedHashMap; +import java.util.List; import java.util.Optional; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.IntStream; import jakarta.inject.Inject; import jakarta.inject.Named; @@ -53,12 +57,75 @@ public void handle(Request request, Response response) throws Exception { checkHeaderPresent(bearer); String login = retrieveUser(bearer); - checkIsAdmin(bearer); + + Optional userType = jwtTokenVerifier.verifyAndExtractClaim(bearer.get(), "type", String.class); + if (userType.isEmpty()) { + halt(HttpStatus.UNAUTHORIZED_401, "Missing user type in payload"); + } + + switch (userType.get()) { + case "agent": + Optional permissionObject = jwtTokenVerifier.verifyAndExtractClaim(bearer.get(), "permissions", LinkedHashMap.class); + + if (permissionObject.isEmpty()) { + halt(HttpStatus.UNAUTHORIZED_401, "Permissions claim not found."); + } + + LinkedHashMap> permissionClaims = new LinkedHashMap<>(); + permissionObject.get().forEach((key, value) -> { + if (!(key instanceof String)) { + throw new IllegalArgumentException("Invalid key type: " + key); + } + if (!(value instanceof List)) { + throw new IllegalArgumentException("Invalid value type for key '" + key + "': " + value); + } + List valueList = (List)value; + for (Object item : valueList) { + if (!(item instanceof String)) { + throw new IllegalArgumentException("Invalid value type for List value for key '" + key + "' " + item); + } + } + permissionClaims.put((String) key, (List) value); + }); + + verifyAgentAuthorization(permissionClaims, request); + break; + case "admin": + break; + default: + halt(HttpStatus.UNAUTHORIZED_401, "Non authorized user. Unknown/Missing user type"); + } request.attribute(LOGIN, login); } } + private void verifyAgentAuthorization(LinkedHashMap> permissionClaims, Request request) { + String requestMethod = request.requestMethod(); + String requestPath = "perm" + request.servletPath(); + + AtomicBoolean authorized = new AtomicBoolean(false); + + permissionClaims.forEach((authorizedPath, permissions) -> { + if (!authorizedPathMatchesRequestPath(authorizedPath, requestPath)) { + return; + } + + for (String permission: permissions) { + if (requestMethod.equals(permission)) { + authorized.set(true); + return; + } + } + }); + + if (authorized.get()) { + return; + } + + halt(HttpStatus.UNAUTHORIZED_401, "Non authorized user. Do not have permission."); + } + private void checkHeaderPresent(Optional bearer) { if (!bearer.isPresent()) { halt(HttpStatus.UNAUTHORIZED_401, "No Bearer header."); @@ -70,10 +137,12 @@ private String retrieveUser(Optional bearer) { .orElseThrow(() -> halt(HttpStatus.UNAUTHORIZED_401, "Invalid Bearer header.")); } - private void checkIsAdmin(Optional bearer) { - if (!jwtTokenVerifier.hasAttribute("admin", true, bearer.get())) { - halt(HttpStatus.UNAUTHORIZED_401, "Non authorized user."); - } - } + private boolean authorizedPathMatchesRequestPath(String authorizedPath, String requestPath) { + String[] authorizedPathArr = authorizedPath.split("\\."); + String[] requestPathArr = requestPath.split("/"); + return authorizedPathArr.length == requestPathArr.length && + IntStream.range(0, authorizedPathArr.length) + .allMatch(i -> authorizedPathArr[i].equals("*") || authorizedPathArr[i].equals(requestPathArr[i])); + } } diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java index 19c9af4504c..c39ceffa9ed 100644 --- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java +++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java @@ -22,10 +22,14 @@ import static org.apache.james.webadmin.Constants.SEPARATOR; import static spark.Spark.halt; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Optional; import jakarta.inject.Inject; +import jakarta.mail.internet.AddressException; import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; @@ -44,7 +48,13 @@ import org.apache.james.webadmin.utils.ErrorResponder.ErrorType; import org.apache.james.webadmin.utils.JsonTransformer; import org.eclipse.jetty.http.HttpStatus; +import org.json.JSONArray; +import org.json.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSortedSet; @@ -57,10 +67,17 @@ public class GroupsRoutes implements Routes { public static final String ROOT_PATH = "address/groups"; + public static final String ADD_GROUP = "address/groups/add-groups"; private static final String GROUP_ADDRESS = "groupAddress"; - private static final String GROUP_ADDRESS_PATH = ROOT_PATH + SEPARATOR + ":" + GROUP_ADDRESS; private static final String USER_ADDRESS = "userAddress"; + private static final String GROUP_ADDRESS_PATH = ROOT_PATH + SEPARATOR + ":" + GROUP_ADDRESS; + + private static final String GROUP_MULTIPLE_PATH = "address/groups"; + private static final String GROUP_MULTIPLE_PATH_IS_EXIST = "address/groups/isExist"; + private static final String GROUP_MEMBER_IS_EXIST = "address/groups/:groupAddress/:userAddress"; + private static final String GROUP_MEMBER_ASSOCIATIONS = "address/groups/associations"; + private static final String USER_IN_GROUP_ADDRESS_PATH = GROUP_ADDRESS_PATH + SEPARATOR + ":" + USER_ADDRESS; private static final String GROUP_ADDRESS_TYPE = "group"; private static final String USER_ADDRESS_TYPE = "group member"; @@ -68,9 +85,13 @@ public class GroupsRoutes implements Routes { private final JsonTransformer jsonTransformer; private final RecipientRewriteTable recipientRewriteTable; + private final ObjectMapper objectMapper = new ObjectMapper(); + + private final MailAddress dummyUser = new MailAddress("fc8f9dc08044a0c0ff9528fe997","fc8f9dc08044a0c0a8c23c68"); + @Inject @VisibleForTesting - GroupsRoutes(RecipientRewriteTable recipientRewriteTable, JsonTransformer jsonTransformer) { + GroupsRoutes(RecipientRewriteTable recipientRewriteTable, JsonTransformer jsonTransformer) throws AddressException { this.jsonTransformer = jsonTransformer; this.recipientRewriteTable = recipientRewriteTable; } @@ -82,18 +103,163 @@ public String getBasePath() { @Override public void define(Service service) { + service.get(GROUP_MEMBER_ASSOCIATIONS, this::checkGroupMemberAssociations); + service.get(GROUP_MEMBER_IS_EXIST, this::isMemberExist); service.get(ROOT_PATH, this::listGroups, jsonTransformer); + service.get(GROUP_MULTIPLE_PATH_IS_EXIST, this::isExist); service.get(GROUP_ADDRESS_PATH, this::listGroupMembers, jsonTransformer); service.put(GROUP_ADDRESS_PATH, (request, response) -> halt(HttpStatus.BAD_REQUEST_400)); + service.post(ADD_GROUP, this::createGroupsAndAssignMembers); + service.post(GROUP_ADDRESS_PATH, this::createGroupWithDummyUser); + service.post(ROOT_PATH, this::createMultipleGroupWithDummyUser); service.put(USER_IN_GROUP_ADDRESS_PATH, this::addToGroup); - service.delete(GROUP_ADDRESS_PATH, (request, response) -> halt(HttpStatus.BAD_REQUEST_400)); + //service.delete(GROUP_ADDRESS_PATH, (request, response) -> halt(HttpStatus.BAD_REQUEST_400)); service.delete(USER_IN_GROUP_ADDRESS_PATH, this::removeFromGroup); + service.delete(GROUP_MULTIPLE_PATH, this::removeMultipleGroup); + service.delete(GROUP_ADDRESS_PATH, this::removeGroup); } - public List listGroups(Request request, Response response) throws RecipientRewriteTableException { + public List listGroups(Request request, Response response) throws RecipientRewriteTableException, JsonProcessingException { return recipientRewriteTable.getSourcesForType(Mapping.Type.Group).collect(ImmutableList.toImmutableList()); } + public HaltException createGroupWithDummyUser(Request request, Response response) { + MailAddress groupAddress = MailAddressParser.parseMailAddress(request.params(GROUP_ADDRESS), GROUP_ADDRESS_TYPE); + Domain domain = groupAddress.getDomain(); + MappingSource source = MappingSource.fromUser(Username.fromLocalPartWithDomain(groupAddress.getLocalPart(), domain)); + addGroupMember(source, dummyUser); + return halt(HttpStatus.NO_CONTENT_204); + } + + public static class GroupAssociationStatus { + public String groupAddr; + public String memberAddr; + public String status; + + public GroupAssociationStatus(String groupAddress, String userAddress, String status) { + this.groupAddr = groupAddress; + this.memberAddr = userAddress; + this.status = status; + } + } + + public static class GroupStatusInfo { + // Fields + public String address; + public String status; + public String reason; + + // Constructor + public GroupStatusInfo(String address, String status, String reason) { + this.address = address; + this.status = status; + this.reason = reason; + } + } + + public static class GroupMembersInfo { + public String address; + public String status; + public String reason; + + public GroupMembersInfo(String address, String status, String reason) { + this.address = address; + this.status = status; + this.reason = reason; + } + } + + public static class GroupsWithMembersInfo { + public String address; + public String status; + public String reason; + public GroupMembersInfo []membersInfo; + + public GroupsWithMembersInfo(String address, String status, String reason, GroupMembersInfo... membersInfo) { + this.address = address; + this.status = status; + this.reason = reason; + this.membersInfo = membersInfo; + } + } + + public String createMultipleGroupWithDummyUser(Request request, Response response) throws JsonProcessingException { + String jsonString = request.body(); + List groups = objectMapper.readValue(jsonString, new TypeReference>() {}); + + GroupStatusInfo[] result = new GroupStatusInfo[groups.size()]; + + for (int i = 0; i < groups.size(); i++) { + String group = groups.get(i); + MailAddress groupAddress; + try { + groupAddress = new MailAddress(group); + Domain domain = groupAddress.getDomain(); + MappingSource source = MappingSource.fromUser(Username.fromLocalPartWithDomain(groupAddress.getLocalPart(), domain)); + addGroupMember(source, dummyUser); + result[i] = new GroupStatusInfo(group, "success",""); + } catch (Exception e) { + if (e.toString().equals("spark.HaltException")) { + result[i] = new GroupStatusInfo(group, "failed", "The source domain is not recognized or does not exist in the domain list."); + } else { + result[i] = new GroupStatusInfo(group, "failed", e.toString()); + } + } + } + ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); + String jsonResult = ow.writeValueAsString(result); + + return jsonResult; + } + + public String createGroupsAndAssignMembers(Request request, Response response) throws JsonProcessingException { + String jsonString = request.body(); + JSONArray groupsArray = new JSONArray(jsonString); + List groupsWithMembers = new ArrayList<>(); + + for (int i = 0; i < groupsArray.length(); i++) { + JSONObject groupObject = groupsArray.getJSONObject(i); + String groupAddr = groupObject.getString("groupAddr"); + JSONArray memberAddrsArray = groupObject.getJSONArray("memberAddrs"); + groupsWithMembers.add(addGroupMembers(groupAddr, memberAddrsArray)); + } + ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); + return ow.writeValueAsString(groupsWithMembers); + } + + public GroupsWithMembersInfo addGroupMembers(String groupAddr, JSONArray members) { + GroupsWithMembersInfo result; + List groupMembersInfoList = new ArrayList<>(); + + MailAddress groupAddress; + try { + groupAddress = new MailAddress(groupAddr); + Domain domain = groupAddress.getDomain(); + MappingSource source = MappingSource.fromUser(Username.fromLocalPartWithDomain(groupAddress.getLocalPart(), domain)); + for (int j = 0; j < members.length(); j++) { + try { + MailAddress userAddress = MailAddressParser.parseMailAddress(members.getString(j), USER_ADDRESS_TYPE); + addGroupMember(source, userAddress); + GroupMembersInfo groupMembersInfo = new GroupMembersInfo(members.getString(j), "success", ""); + groupMembersInfoList.add(groupMembersInfo); + } catch (Exception e) { + GroupMembersInfo groupMembersInfo = new GroupMembersInfo(members.getString(j), e.toString(), ""); + groupMembersInfoList.add(groupMembersInfo); + } + } + result = new GroupsWithMembersInfo(groupAddr, "success", ""); + result.membersInfo = groupMembersInfoList.toArray(new GroupMembersInfo[groupMembersInfoList.size()]); + } catch (Exception e) { + if (e.toString().equals("spark.HaltException")) { + System.out.println("The source domain is not recognized or does not exist in the domain list."); + result = new GroupsWithMembersInfo(groupAddr, "failed", "The source domain is not recognized or does not exist in the domain list."); + } else { + result = new GroupsWithMembersInfo(groupAddr, "failed", e.toString()); + } + } + return result; + } + public HaltException addToGroup(Request request, Response response) { MailAddress groupAddress = MailAddressParser.parseMailAddress(request.params(GROUP_ADDRESS), GROUP_ADDRESS_TYPE); Domain domain = groupAddress.getDomain(); @@ -117,7 +283,7 @@ private void addGroupMember(MappingSource source, MailAddress userAddress) { } catch (SourceDomainIsNotInDomainListException e) { throw ErrorResponder.builder() .statusCode(HttpStatus.BAD_REQUEST_400) - .type(ErrorResponder.ErrorType.INVALID_ARGUMENT) + .type(ErrorType.INVALID_ARGUMENT) .message(e.getMessage()) .haltError(); } catch (RecipientRewriteTableException e) { @@ -129,6 +295,179 @@ private void addGroupMember(MappingSource source, MailAddress userAddress) { } } + public HaltException removeMultipleGroup(Request request, Response response) throws RecipientRewriteTableException, JsonProcessingException { + String jsonString = request.body(); + List groups = objectMapper.readValue(jsonString, new TypeReference>() {}); + + //checking is this group correct or not. If not through an exception + for (int i = 0; i < groups.size(); i++) { + String group = groups.get(i);//todo + MailAddress groupAddress; + try { + groupAddress = new MailAddress(group); + } catch (AddressException e) { + throw new RuntimeException(e); + } + Mappings mappings = recipientRewriteTable.getStoredMappings(MappingSource.fromMailAddress(groupAddress)) + .select(Mapping.Type.Group); + + ensureNonEmptyMappings(mappings, group); + } + + // Iterate through the array and print each element + for (int i = 0; i < groups.size(); i++) { + String group = groups.get(i);//todo + // Have to check is this group correct or not + MailAddress groupAddress; + try { + groupAddress = new MailAddress(group); + } catch (AddressException e) { + throw new RuntimeException(e); + } + + Mappings mappings = recipientRewriteTable.getStoredMappings(MappingSource.fromMailAddress(groupAddress)) + .select(Mapping.Type.Group); + + ensureNonEmptyMappings(mappings, group); + + var list = mappings + .asStream() + .map(Mapping::asMailAddress) + .flatMap(Optional::stream) + .map(MailAddress::asString) + .collect(ImmutableSortedSet.toImmutableSortedSet(String::compareTo)); + + for (var userAddress : list) { + MappingSource source = MappingSource + .fromUser( + Username.fromLocalPartWithDomain(groupAddress.getLocalPart(), groupAddress.getDomain())); + recipientRewriteTable.removeGroupMapping(source, userAddress.toString()); + } + } + return halt(HttpStatus.NO_CONTENT_204); + } + + public String checkGroupMemberAssociations(Request request, Response response) throws RecipientRewriteTableException, AddressException, JsonProcessingException { + String jsonString = request.body(); + JSONArray groupsMembersPairArray = new JSONArray(jsonString); + List results = new ArrayList<>(); + for (int i = 0; i < groupsMembersPairArray.length(); i++) { + JSONObject groupsMembersPairObject = groupsMembersPairArray.getJSONObject(i); + try { + MailAddress groupAddress = new MailAddress(groupsMembersPairObject.getString("groupAddr")); + MailAddress memberAddress = new MailAddress(groupsMembersPairObject.getString("memberAddr")); + Mappings mappings = recipientRewriteTable.getStoredMappings(MappingSource.fromMailAddress(groupAddress)) + .select(Mapping.Type.Group); + ensureNonEmptyMappings(mappings, groupAddress.toString()); + + var list = mappings + .asStream() + .map(Mapping::asMailAddress) + .flatMap(Optional::stream) + .map(MailAddress::asString) + .collect(ImmutableSortedSet.toImmutableSortedSet(String::compareTo)); + boolean flag = false; + for (String user : list) { + if (user.equals(memberAddress.asString())) { + results.add(new GroupAssociationStatus(groupsMembersPairObject.getString("groupAddr"), groupsMembersPairObject.getString("memberAddr"), "Found")); + flag = true; + break; + } + } + if (!flag) { + results.add(new GroupAssociationStatus(groupsMembersPairObject.getString("groupAddr"), groupsMembersPairObject.getString("memberAddr"), "NotFound")); + } + } catch (Exception e) { + results.add(new GroupAssociationStatus(groupsMembersPairObject.getString("groupAddr"), groupsMembersPairObject.getString("memberAddr"), "NotFound")); + } + } + ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); + return ow.writeValueAsString(results); + } + + public HaltException isMemberExist(Request request, Response response) throws RecipientRewriteTableException { + MailAddress groupAddress = MailAddressParser.parseMailAddress(request.params(GROUP_ADDRESS), GROUP_ADDRESS_TYPE); + Mappings mappings = recipientRewriteTable.getStoredMappings(MappingSource.fromMailAddress(groupAddress)) + .select(Mapping.Type.Group); + ensureNonEmptyMappings(mappings, groupAddress.toString()); + var list = mappings + .asStream() + .map(Mapping::asMailAddress) + .flatMap(Optional::stream) + .map(MailAddress::asString) + .collect(ImmutableSortedSet.toImmutableSortedSet(String::compareTo)); + + MailAddress userAddress = MailAddressParser.parseMailAddress(request.params(USER_ADDRESS), USER_ADDRESS_TYPE); + for (String user : list) { + if (user.equals(userAddress.asString())) { + return halt(HttpStatus.OK_200); + } + } + return ErrorResponder.builder() + .statusCode(HttpStatus.NOT_FOUND_404) + .type(ErrorResponder.ErrorType.INVALID_ARGUMENT) + .message("%s does not exist", userAddress) + .haltError(); + } + + public String isExist(Request request, Response response) throws RecipientRewriteTableException, JsonProcessingException { + + List currentGroupList = recipientRewriteTable.getSourcesForType(Mapping.Type.Group).collect(ImmutableList.toImmutableList()); + Map mp = new HashMap<>(); + for (int i = 0; i < currentGroupList.size(); i++) { + mp.put(currentGroupList.get(i).asMailAddressString(), true); + } + String jsonString = request.body(); + System.out.println(jsonString); + List groups = objectMapper.readValue(jsonString, new TypeReference>() {}); + + //checking is this group exist or not. + GroupStatusInfo[] result = new GroupStatusInfo[groups.size()]; + for (int i = 0; i < groups.size(); i++) { + String group = groups.get(i); + MailAddress groupAddress; + try { + groupAddress = new MailAddress(group); + if (mp.containsKey(groupAddress)) { + result[i] = new GroupStatusInfo(group, "Exists", ""); + } else { + result[i] = new GroupStatusInfo(group, "DoesNotExists", ""); + } + } catch (AddressException e) { + result[i] = new GroupStatusInfo(group, "Error", e.toString()); + } + } + + ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); + String jsonResult = ow.writeValueAsString(result); + + return jsonResult; + } + + + public HaltException removeGroup(Request request, Response response) throws RecipientRewriteTableException { + MailAddress groupAddress = MailAddressParser.parseMailAddress(request.params(GROUP_ADDRESS), GROUP_ADDRESS_TYPE); + Mappings mappings = recipientRewriteTable.getStoredMappings(MappingSource.fromMailAddress(groupAddress)) + .select(Mapping.Type.Group); + + ensureNonEmptyMappings(mappings, groupAddress.toString()); + + var list = mappings + .asStream() + .map(Mapping::asMailAddress) + .flatMap(Optional::stream) + .map(MailAddress::asString) + .collect(ImmutableSortedSet.toImmutableSortedSet(String::compareTo)); + + for (var userAddress : list) { + MappingSource source = MappingSource + .fromUser( + Username.fromLocalPartWithDomain(groupAddress.getLocalPart(), groupAddress.getDomain())); + recipientRewriteTable.removeGroupMapping(source, userAddress.toString()); + } + return halt(HttpStatus.NO_CONTENT_204); + } + public HaltException removeFromGroup(Request request, Response response) throws RecipientRewriteTableException { MailAddress groupAddress = MailAddressParser.parseMailAddress(request.params(GROUP_ADDRESS), GROUP_ADDRESS_TYPE); MailAddress userAddress = MailAddressParser.parseMailAddress(request.params(USER_ADDRESS), USER_ADDRESS_TYPE); @@ -142,9 +481,20 @@ public HaltException removeFromGroup(Request request, Response response) throws public ImmutableSortedSet listGroupMembers(Request request, Response response) throws RecipientRewriteTableException { MailAddress groupAddress = MailAddressParser.parseMailAddress(request.params(GROUP_ADDRESS), GROUP_ADDRESS_TYPE); Mappings mappings = recipientRewriteTable.getStoredMappings(MappingSource.fromMailAddress(groupAddress)) - .select(Mapping.Type.Group); + .select(Mapping.Type.Group); - ensureNonEmptyMappings(mappings); + ensureNonEmptyMappings(mappings, groupAddress.toString()); + + var list = mappings + .asStream() + .map(Mapping::asMailAddress) + .flatMap(Optional::stream) + .map(MailAddress::asString) + .collect(ImmutableSortedSet.toImmutableSortedSet(String::compareTo)); + + for (var s : list) { + System.out.println(s); + } return mappings .asStream() @@ -154,13 +504,14 @@ public ImmutableSortedSet listGroupMembers(Request request, Response res .collect(ImmutableSortedSet.toImmutableSortedSet(String::compareTo)); } - private void ensureNonEmptyMappings(Mappings mappings) { + private void ensureNonEmptyMappings(Mappings mappings, String group) { if (mappings == null || mappings.isEmpty()) { throw ErrorResponder.builder() .statusCode(HttpStatus.NOT_FOUND_404) .type(ErrorType.INVALID_ARGUMENT) - .message("The group does not exist") + .message(group + " does not exist") .haltError(); } } } + diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UserRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UserRoutes.java index f4d0649784b..272a124f74c 100644 --- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UserRoutes.java +++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UserRoutes.java @@ -73,7 +73,7 @@ public class UserRoutes implements Routes { private static final String FORCE_PARAM = "force"; private static final String VERIFY = "verify"; private static final String AUTHORIZED_USERS = "authorizedUsers"; - + private final String dummyUser = "fc8f9dc08044a0c0ff9528fe997@fc8f9dc08044a0c0a8c23c68"; private final UserService userService; private final JsonTransformer jsonTransformer; private final JsonExtractor jsonExtractorVerify; @@ -212,6 +212,14 @@ private String userExist(Request request, Response response) throws UsersReposit private HaltException upsertUser(Request request, Response response) throws Exception { Username username = extractUsername(request); + if (dummyUser.equals(username.asString())) { + LOGGER.info("Invalid username"); + throw ErrorResponder.builder() + .statusCode(HttpStatus.BAD_REQUEST_400) + .type(ErrorType.INVALID_ARGUMENT) + .message("Username supplied is invalid") + .haltError(); + } try { boolean isForced = request.queryParams().contains(FORCE_PARAM); if (isForced) { @@ -419,4 +427,4 @@ private Username extractDelegatedUsername(Request request) { return Username.of(request.params(DELEGATED_USER_NAME)); } -} \ No newline at end of file +} diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UsernameChangeRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UsernameChangeRoutes.java index 129f123a1be..e5cd7102a73 100644 --- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UsernameChangeRoutes.java +++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UsernameChangeRoutes.java @@ -32,7 +32,9 @@ import org.apache.james.webadmin.service.UsernameChangeTask; import org.apache.james.webadmin.tasks.TaskFromRequestRegistry; import org.apache.james.webadmin.tasks.TaskRegistrationKey; +import org.apache.james.webadmin.utils.ErrorResponder; import org.apache.james.webadmin.utils.JsonTransformer; +import org.eclipse.jetty.http.HttpStatus; import com.google.common.base.Preconditions; @@ -51,6 +53,8 @@ public class UsernameChangeRoutes implements Routes { private final TaskManager taskManager; private final JsonTransformer jsonTransformer; + private final String dummyUser = "fc8f9dc08044a0c0ff9528fe997@fc8f9dc08044a0c0a8c23c68"; + @Inject UsernameChangeRoutes(UsersRepository usersRepository, UsernameChangeService service, TaskManager taskManager, JsonTransformer jsonTransformer) { this.usersRepository = usersRepository; @@ -74,7 +78,15 @@ public Route changeUsername() { Username oldUser = Username.of(request.params(OLD_USER_PARAM)); Username newUser = Username.of(request.params(NEW_USER_PARAM)); - Preconditions.checkArgument(request.queryParams(FORCE_PARAM) != null || usersRepository.contains(oldUser), "'oldUser' parameter should be an existing user"); + if (dummyUser.equals(newUser.asString())) { + throw ErrorResponder.builder() + .statusCode(HttpStatus.BAD_REQUEST_400) + .type(ErrorResponder.ErrorType.INVALID_ARGUMENT) + .message("Username supplied is invalid") + .haltError(); + } + + Preconditions.checkArgument(usersRepository.contains(oldUser), "'oldUser' parameter should be an existing user"); Preconditions.checkArgument(usersRepository.contains(newUser), "'newUser' parameter should be an existing user"); Optional fromStep = Optional.ofNullable(request.queryParams("fromStep")).map(StepName::new); diff --git a/third-party/elasticsearch/pom.xml b/third-party/elasticsearch/pom.xml index 48fc0522ecf..c9040a7837b 100644 --- a/third-party/elasticsearch/pom.xml +++ b/third-party/elasticsearch/pom.xml @@ -143,5 +143,5 @@ - - \ No newline at end of file + + diff --git a/third-party/rspamd/pom.xml b/third-party/rspamd/pom.xml index e83aff71eb7..a32b9dd5df2 100644 --- a/third-party/rspamd/pom.xml +++ b/third-party/rspamd/pom.xml @@ -1,5 +1,4 @@ -