[GitHub] [james-project] chibenwa commented on pull request #1338: JAMES-3754 Storage layer support for IMAP save date extension

2022-12-06 Thread GitBox


chibenwa commented on PR #1338:
URL: https://github.com/apache/james-project/pull/1338#issuecomment-1340416785

   
[org.apache.james.mailbox.cassandra.mail.CassandraMessageMapperRelaxedConsistencyTest$WeakReadConsistency.retrievingMessagesWithALimitShouldLimitTheNumberOfMessages](https://ci-builds.apache.org/job/james/job/ApacheJames/job/PR-1338/14/testReport/junit/org.apache.james.mailbox.cassandra.mail/CassandraMessageMapperRelaxedConsistencyTest$WeakReadConsistency/retrievingMessagesWithALimitShouldLimitTheNumberOfMessages/)
   
   Related?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] 02/03: JAMES-3859 configurable -> startable

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch 3.7.x
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit a0e5fdcbf538262e981b1c375e1839668f732ab7
Author: Benoit Tellier 
AuthorDate: Fri Nov 18 12:05:39 2022 +0700

JAMES-3859 configurable -> startable
---
 .../org/apache/james/utils/InitializationOperations.java | 16 
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git 
a/server/container/guice/common/src/main/java/org/apache/james/utils/InitializationOperations.java
 
b/server/container/guice/common/src/main/java/org/apache/james/utils/InitializationOperations.java
index fde491545f..f2388d13cd 100644
--- 
a/server/container/guice/common/src/main/java/org/apache/james/utils/InitializationOperations.java
+++ 
b/server/container/guice/common/src/main/java/org/apache/james/utils/InitializationOperations.java
@@ -31,31 +31,31 @@ import com.google.inject.Inject;
 public class InitializationOperations {
 
 private final Set initializationOperations;
-private final Startables configurables;
+private final Startables startables;
 
 @Inject
-public InitializationOperations(Set 
initializationOperations, Startables configurables) {
+public InitializationOperations(Set 
initializationOperations, Startables startables) {
 this.initializationOperations = initializationOperations;
-this.configurables = configurables;
+this.startables = startables;
 }
 
 public void initModules() {
-Set processed = processConfigurables();
+Set processed = processStartables();
 
 processOthers(processed);
 }
 
-private Set processConfigurables() {
-return configurables.get().stream()
+private Set processStartables() {
+return startables.get().stream()
 .flatMap(this::configurationPerformerFor)
 .distinct()
 
.peek(Throwing.consumer(InitializationOperation::initModule).sneakyThrow())
 .collect(Collectors.toSet());
 }
 
-private Stream configurationPerformerFor(Class configurable) {
+private Stream configurationPerformerFor(Class startable) {
 return initializationOperations.stream()
-.filter(x -> x.forClass().equals(configurable));
+.filter(x -> x.forClass().equals(startable));
 }
 
 private void processOthers(Set processed) {


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] branch 3.7.x updated (3b668561af -> c3149be514)

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a change to branch 3.7.x
in repository https://gitbox.apache.org/repos/asf/james-project.git


from 3b668561af JAMES-3860 Rely on Files.createTempFile (#1325)
 new 61cf9618b0 [FIX] ToSenderFolder needs to call .block on mono (#1317)
 new a0e5fdcbf5 JAMES-3859 configurable -> startable
 new c3149be514 JAMES-3859 start sequence ordering should take provisions 
into account

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../java/org/apache/james/StartSequenceTest.java   | 189 +
 .../org/apache/james/modules/StartablesModule.java |  26 +++
 .../james/utils/InitializationOperations.java  |  25 +--
 .../java/org/apache/james/utils/Startables.java|   1 -
 .../modules/InitializationOperationsTest.java  |  56 ++
 .../james/utils/InitializationOperation.java   |   8 +
 .../james/utils/InitilizationOperationBuilder.java |  35 +++-
 .../james/transport/mailets/ToSenderFolder.java|   2 +-
 8 files changed, 283 insertions(+), 59 deletions(-)
 create mode 100644 
server/apps/memory-app/src/test/java/org/apache/james/StartSequenceTest.java


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[GitHub] [james-project] chibenwa merged pull request #1326: Backport a few more bugs [3.7.x]

2022-12-06 Thread GitBox


chibenwa merged PR #1326:
URL: https://github.com/apache/james-project/pull/1326


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[GitHub] [james-project] chibenwa merged pull request #1325: JAMES-3860 Rely on Files.createTempFile [3.7.x]

2022-12-06 Thread GitBox


chibenwa merged PR #1325:
URL: https://github.com/apache/james-project/pull/1325


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] branch 3.7.x updated (e45468ec57 -> 3b668561af)

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a change to branch 3.7.x
in repository https://gitbox.apache.org/repos/asf/james-project.git


from e45468ec57 [BUILD] Fix SpamAssassin container on 3.7.x (#1330)
 add 3b668561af JAMES-3860 Rely on Files.createTempFile (#1325)

No new revisions were added by this update.

Summary of changes:
 .../james/mailbox/store/StoreMessageManager.java   |  3 ++-
 .../james/transport/mailets/StripAttachment.java   |  3 ++-
 .../server/core/BufferedDeferredFileOutputStream.java  | 18 ++
 .../server/core/MimeMessageInputStreamSource.java  |  9 ++---
 .../core/BufferedDeferredFileOutputStreamTest.java | 13 -
 .../sieverepository/file/SieveFileRepository.java  |  3 ++-
 .../imapserver/netty/ImapRequestFrameDecoder.java  |  3 ++-
 7 files changed, 20 insertions(+), 32 deletions(-)


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] 01/03: [FIX] ToSenderFolder needs to call .block on mono (#1317)

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch 3.7.x
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 61cf9618b0f91d476745b2431397320356a946f0
Author: Benoit TELLIER 
AuthorDate: Fri Nov 18 21:22:17 2022 +0700

[FIX] ToSenderFolder needs to call .block on mono (#1317)
---
 .../main/java/org/apache/james/transport/mailets/ToSenderFolder.java| 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java
 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java
index bdd55a856d..311ba38768 100644
--- 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java
+++ 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java
@@ -84,7 +84,7 @@ public class ToSenderFolder extends GenericMailet {
 MailAddress sender = mail.getMaybeSender().get();
 Username username = retrieveUser(sender);
 
-mailboxAppender.append(mail.getMessage(), username, folder);
+mailboxAppender.append(mail.getMessage(), username, 
folder).block();
 
 LOGGER.error("Local delivery with ToSenderFolder mailet for mail 
{} with sender {} in folder {}", mail.getName(), sender, folder);
 }


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] 03/03: JAMES-3859 start sequence ordering should take provisions into account

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch 3.7.x
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit c3149be51427b44b44720823df8027893f11fb8f
Author: Benoit Tellier 
AuthorDate: Fri Nov 18 12:07:35 2022 +0700

JAMES-3859 start sequence ordering should take provisions into account

Provider listener order needs to be corrected, for this we add the notion 
of requirements that is
inferred by the class constructor parameters.
---
 .../java/org/apache/james/StartSequenceTest.java   | 189 +
 .../org/apache/james/modules/StartablesModule.java |  26 +++
 .../james/utils/InitializationOperations.java  |  13 +-
 .../java/org/apache/james/utils/Startables.java|   1 -
 .../modules/InitializationOperationsTest.java  |  56 ++
 .../james/utils/InitializationOperation.java   |   8 +
 .../james/utils/InitilizationOperationBuilder.java |  35 +++-
 7 files changed, 276 insertions(+), 52 deletions(-)

diff --git 
a/server/apps/memory-app/src/test/java/org/apache/james/StartSequenceTest.java 
b/server/apps/memory-app/src/test/java/org/apache/james/StartSequenceTest.java
new file mode 100644
index 00..c4d061a5b4
--- /dev/null
+++ 
b/server/apps/memory-app/src/test/java/org/apache/james/StartSequenceTest.java
@@ -0,0 +1,189 @@
+/
+ * 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 static 
org.apache.james.data.UsersRepositoryModuleChooser.Implementation.DEFAULT;
+import static org.assertj.core.api.Assertions.assertThatCode;
+
+import org.apache.james.lifecycle.api.Startable;
+import org.apache.james.modules.TestJMAPServerModule;
+import org.apache.james.utils.InitializationOperation;
+import org.apache.james.utils.InitilizationOperationBuilder;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
+import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Inject;
+import com.google.inject.Provides;
+import com.google.inject.Scopes;
+import com.google.inject.Singleton;
+import com.google.inject.multibindings.ProvidesIntoSet;
+
+class StartSequenceTest {
+static class A implements Startable {
+public boolean started = false;
+
+public void start() {
+started = true;
+}
+}
+static class D implements Startable {
+public boolean started = false;
+
+public void start() {
+started = true;
+}
+}
+static class F implements Startable {
+public boolean started = false;
+
+public void start() {
+started = true;
+}
+}
+
+static class B implements Startable {
+private final A a;
+
+@Inject
+B(A a) {
+this.a = a;
+}
+
+public void start() {
+assert a.started;
+}
+}
+
+static class C implements Startable {
+private final D d;
+
+@Inject
+C(D d) {
+this.d = d;
+}
+
+public void start() {
+assert d.started;
+}
+}
+
+static class E implements Startable {
+private final F f;
+private final A a;
+
+@Inject
+E(F f, A a) {
+this.f = f;
+this.a = a;
+}
+
+public void start() {
+assert f.started;
+assert a.started;
+}
+}
+
+static class ConfigurableTestModule extends AbstractModule {
+
+@Override
+protected void configure() {
+bind(B.class).in(Scopes.SINGLETON);
+bind(C.class).in(Scopes.SINGLETON);
+bind(D.class).in(Scopes.SINGLETON);
+

[james-project] branch master updated: JAMES-3864 Refactor vhost management

2022-12-06 Thread rcordier
This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git


The following commit(s) were added to refs/heads/master by this push:
 new b943ee6e92 JAMES-3864 Refactor vhost management
b943ee6e92 is described below

commit b943ee6e9252b165a189f053e67aa52eebf1dc79
Author: Rene Cordier 
AuthorDate: Mon Dec 5 16:37:33 2022 +0700

JAMES-3864 Refactor vhost management

vhost parameter should only be used in special cases with bad formatted 
URIs (like with '_' characters) as a workaround.
For most of the time, adding the vhost in the uri is enough!
---
 .../backends/rabbitmq/RabbitMQConfiguration.java   | 11 +++-
 .../rabbitmq/RabbitMQConfigurationTest.java| 30 ++
 .../modules/ROOT/pages/configure/rabbitmq.adoc |  7 ++---
 .../sample-configuration/rabbitmq.properties   |  5 ++--
 .../sample-configuration/rabbitmq.properties   |  5 ++--
 src/site/xdoc/server/config-rabbitmq.xml   |  7 ++---
 6 files changed, 54 insertions(+), 11 deletions(-)

diff --git 
a/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConfiguration.java
 
b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConfiguration.java
index 7e08f3d3ab..9a242ebe51 100644
--- 
a/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConfiguration.java
+++ 
b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConfiguration.java
@@ -788,7 +788,16 @@ public class RabbitMQConfiguration {
 }
 
 public Optional getVhost() {
-return vhost;
+return vhost.or(this::getVhostFromPath);
+}
+
+private Optional getVhostFromPath() {
+String vhostPath = uri.getPath();
+if (vhostPath.startsWith("/")) {
+return Optional.of(vhostPath.substring(1))
+.filter(value -> !value.isEmpty());
+}
+return Optional.empty();
 }
 
 @Override
diff --git 
a/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQConfigurationTest.java
 
b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQConfigurationTest.java
index 32f9a2c2cd..9ae0c55c0e 100644
--- 
a/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQConfigurationTest.java
+++ 
b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQConfigurationTest.java
@@ -485,6 +485,36 @@ class RabbitMQConfigurationTest {
 .isEqualTo(Optional.of("test"));
 }
 
+@Test
+void fromShouldReturnVhostValueWhenDeclaredInURI() {
+PropertiesConfiguration configuration = new PropertiesConfiguration();
+String amqpUri = "amqp://james:james@rabbitmqhost:5672/test";
+configuration.addProperty("uri", amqpUri);
+String managementUri = "http://james:james@rabbitmqhost:15672/api/;;
+configuration.addProperty("management.uri", managementUri);
+configuration.addProperty("management.user", DEFAULT_USER);
+configuration.addProperty("management.password", 
DEFAULT_PASSWORD_STRING);
+
+assertThat(RabbitMQConfiguration.from(configuration).getVhost())
+.isEqualTo(Optional.of("test"));
+}
+
+@Test
+void fromShouldReturnVhostValueWhenGivenAndNotUriOne() {
+PropertiesConfiguration configuration = new PropertiesConfiguration();
+String amqpUri = "amqp://james:james@rabbitmqhost:5672/test";
+configuration.addProperty("uri", amqpUri);
+String managementUri = "http://james:james@rabbitmqhost:15672/api/;;
+configuration.addProperty("management.uri", managementUri);
+configuration.addProperty("management.user", DEFAULT_USER);
+configuration.addProperty("management.password", 
DEFAULT_PASSWORD_STRING);
+
+configuration.addProperty("vhost", "vhosttest");
+
+assertThat(RabbitMQConfiguration.from(configuration).getVhost())
+.isEqualTo(Optional.of("vhosttest"));
+}
+
 @Nested
 class ManagementCredentialsTest {
 @Test
diff --git 
a/server/apps/distributed-app/docs/modules/ROOT/pages/configure/rabbitmq.adoc 
b/server/apps/distributed-app/docs/modules/ROOT/pages/configure/rabbitmq.adoc
index b3c2665ea7..c12a2e91bc 100644
--- 
a/server/apps/distributed-app/docs/modules/ROOT/pages/configure/rabbitmq.adoc
+++ 
b/server/apps/distributed-app/docs/modules/ROOT/pages/configure/rabbitmq.adoc
@@ -13,7 +13,8 @@ to get some examples and hints.
 | Property name | explanation
 
 | uri
-| the amqp URI pointing to RabbitMQ server. Details about amqp URI format is 
in https://www.rabbitmq.com/uri-spec.html[RabbitMQ URI Specification]
+| the amqp URI pointing to RabbitMQ server. If you use a vhost, specify it as 
well at the end of the URI.
+Details about amqp URI format is 

[GitHub] [james-project] Arsnael merged pull request #1349: JAMES-3864 Refactor vhost management

2022-12-06 Thread GitBox


Arsnael merged PR #1349:
URL: https://github.com/apache/james-project/pull/1349


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[GitHub] [james-project] Arsnael commented on pull request #1350: JAMES-3754 Searching support IMAP savedate extension

2022-12-06 Thread GitBox


Arsnael commented on PR #1350:
URL: https://github.com/apache/james-project/pull/1350#issuecomment-1340350513

   Conflicts in the branch


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[GitHub] [james-project] Arsnael commented on pull request #1352: JAMES-3775 Leverage saveDate for better period filtering for Rspamd report

2022-12-06 Thread GitBox


Arsnael commented on PR #1352:
URL: https://github.com/apache/james-project/pull/1352#issuecomment-1340345748

   You have some Guice injection issues with this PR : 
https://ci-builds.apache.org/job/james/job/ApacheJames/job/PR-1352/1/testReport/


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-site] branch dependabot/npm_and_yarn/antora-ui/qs-6.11.0 created (now 629cfc6b1)

2022-12-06 Thread github-bot
This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a change to branch dependabot/npm_and_yarn/antora-ui/qs-6.11.0
in repository https://gitbox.apache.org/repos/asf/james-site.git


  at 629cfc6b1 Bump qs from 6.9.4 to 6.11.0 in /antora-ui

No new revisions were added by this update.


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[GitHub] [james-site] dependabot[bot] opened a new pull request, #26: Bump qs from 6.9.4 to 6.11.0 in /antora-ui

2022-12-06 Thread GitBox


dependabot[bot] opened a new pull request, #26:
URL: https://github.com/apache/james-site/pull/26

   Bumps [qs](https://github.com/ljharb/qs) from 6.9.4 to 6.11.0.
   
   Changelog
   Sourced from https://github.com/ljharb/qs/blob/main/CHANGELOG.md;>qs's 
changelog.
   
   6.11.0
   
   [New] [Fix] stringify: revert 0e903c0; add 
commaRoundTrip option (https://github-redirect.dependabot.com/ljharb/qs/issues/442;>#442)
   [readme] fix version badge
   
   6.10.5
   
   [Fix] stringify: with arrayFormat: comma, 
properly include an explicit [] on a single-item array (https://github-redirect.dependabot.com/ljharb/qs/issues/434;>#434)
   
   6.10.4
   
   [Fix] stringify: with arrayFormat: comma, 
include an explicit [] on a single-item array (https://github-redirect.dependabot.com/ljharb/qs/issues/441;>#441)
   [meta] use npmignore to autogenerate an npmignore file
   [Dev Deps] update eslint, 
@ljharb/eslint-config, aud, has-symbol, 
object-inspect, tape
   
   6.10.3
   
   [Fix] parse: ignore __proto__ keys (https://github-redirect.dependabot.com/ljharb/qs/issues/428;>#428)
   [Robustness] stringify: avoid relying on a global 
undefined (https://github-redirect.dependabot.com/ljharb/qs/issues/427;>#427)
   [actions] reuse common workflows
   [Dev Deps] update eslint, 
@ljharb/eslint-config, object-inspect, 
tape
   
   6.10.2
   
   [Fix] stringify: actually fix cyclic references (https://github-redirect.dependabot.com/ljharb/qs/issues/426;>#426)
   [Fix] stringify: avoid encoding arrayformat comma when 
encodeValuesOnly = true (https://github-redirect.dependabot.com/ljharb/qs/issues/424;>#424)
   [readme] remove travis badge; add github actions/codecov badges; update 
URLs
   [Docs] add note and links for coercing primitive values (https://github-redirect.dependabot.com/ljharb/qs/issues/408;>#408)
   [actions] update codecov uploader
   [actions] update workflows
   [Tests] clean up stringify tests slightly
   [Dev Deps] update eslint, 
@ljharb/eslint-config, aud, 
object-inspect, safe-publish-latest, 
tape
   
   6.10.1
   
   [Fix] stringify: avoid exception on repeated object values 
(https://github-redirect.dependabot.com/ljharb/qs/issues/402;>#402)
   
   6.10.0
   
   [New] stringify: throw on cycles, instead of an infinite 
loop (https://github-redirect.dependabot.com/ljharb/qs/issues/395;>#395, https://github-redirect.dependabot.com/ljharb/qs/issues/394;>#394, https://github-redirect.dependabot.com/ljharb/qs/issues/393;>#393)
   [New] parse: add allowSparse option for 
collapsing arrays with missing indices (https://github-redirect.dependabot.com/ljharb/qs/issues/312;>#312)
   [meta] fix README.md (https://github-redirect.dependabot.com/ljharb/qs/issues/399;>#399)
   [meta] only run npm run dist in publish, not install
   [Dev Deps] update eslint, 
@ljharb/eslint-config, aud, has-symbols, 
tape
   [Tests] fix tests on node v0.6
   [Tests] use ljharb/actions/node/install instead of 
ljharb/actions/node/run
   [Tests] Revert [meta] ignore eclint transitive audit 
warning
   
   6.9.7
   
   [Fix] parse: ignore __proto__ keys (https://github-redirect.dependabot.com/ljharb/qs/issues/428;>#428)
   [Fix] stringify: avoid encoding arrayformat comma when 
encodeValuesOnly = true (https://github-redirect.dependabot.com/ljharb/qs/issues/424;>#424)
   [Robustness] stringify: avoid relying on a global 
undefined (https://github-redirect.dependabot.com/ljharb/qs/issues/427;>#427)
   [readme] remove travis badge; add github actions/codecov badges; update 
URLs
   [Docs] add note and links for coercing primitive values (https://github-redirect.dependabot.com/ljharb/qs/issues/408;>#408)
   [Tests] clean up stringify tests slightly
   [meta] fix README.md (https://github-redirect.dependabot.com/ljharb/qs/issues/399;>#399)
   Revert [meta] ignore eclint transitive audit warning
   
   
   
   ... (truncated)
   
   
   Commits
   
   https://github.com/ljharb/qs/commit/56763c12ec4fbf72cbb32371cbd386c33cbb;>56763c1
 v6.11.0
   https://github.com/ljharb/qs/commit/ddd3e293b801df7a06cb7f2746462a6ca1dd3fb2;>ddd3e29
 [readme] fix version badge
   https://github.com/ljharb/qs/commit/c31347299f34afca90e8b5ff793eb4d0f77cfa56;>c313472
 [New] [Fix] stringify: revert 0e903c0; add 
commaRoundTrip option
   https://github.com/ljharb/qs/commit/95bc0185e157d400da4f43f1fcf1c7f008fd847e;>95bc018
 v6.10.5
   https://github.com/ljharb/qs/commit/0e903c0a9092618756b0962f1b80655ac0da436a;>0e903c0
 [Fix] stringify: with arrayFormat: comma, properly 
include an explicit `[...
   https://github.com/ljharb/qs/commit/ba9703c0340dfdeb73cb4387d6ab32c37768aa5b;>ba9703c
 v6.10.4
   https://github.com/ljharb/qs/commit/4e440195c7647f21c20bb76340774cb3a0cb6eac;>4e44019
 [Fix] stringify: with arrayFormat: comma, include an 
explicit [] on a s...
   https://github.com/ljharb/qs/commit/113b990ed23ae8d6f670eb879e16ed105cd9081b;>113b990
 [Dev Deps] update object-inspect
   

[james-site] branch dependabot/npm_and_yarn/antora-ui/decode-uri-component-0.2.2 created (now e02e0b349)

2022-12-06 Thread github-bot
This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a change to branch 
dependabot/npm_and_yarn/antora-ui/decode-uri-component-0.2.2
in repository https://gitbox.apache.org/repos/asf/james-site.git


  at e02e0b349 Bump decode-uri-component from 0.2.0 to 0.2.2 in /antora-ui

No new revisions were added by this update.


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[GitHub] [james-site] dependabot[bot] opened a new pull request, #25: Bump decode-uri-component from 0.2.0 to 0.2.2 in /antora-ui

2022-12-06 Thread GitBox


dependabot[bot] opened a new pull request, #25:
URL: https://github.com/apache/james-site/pull/25

   Bumps 
[decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) 
from 0.2.0 to 0.2.2.
   
   Release notes
   Sourced from https://github.com/SamVerschueren/decode-uri-component/releases;>decode-uri-component's
 releases.
   
   v0.2.2
   
   Prevent overwriting previously decoded tokens  980e0bf
   
   https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2;>https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2
   v0.2.1
   
   Switch to GitHub workflows  76abc93
   Fix issue where decode throws - fixes https://github-redirect.dependabot.com/SamVerschueren/decode-uri-component/issues/6;>#6
  746ca5d
   Update license (https://github-redirect.dependabot.com/SamVerschueren/decode-uri-component/issues/1;>#1)
  486d7e2
   Tidelift tasks  a650457
   Meta tweaks  66e1c28
   
   https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1;>https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1
   
   
   
   Commits
   
   https://github.com/SamVerschueren/decode-uri-component/commit/a0eea469d26eb0df668b081672cdb9581feb78eb;>a0eea46
 0.2.2
   https://github.com/SamVerschueren/decode-uri-component/commit/980e0bf09b64d94f1aa79012f895816c30ffd152;>980e0bf
 Prevent overwriting previously decoded tokens
   https://github.com/SamVerschueren/decode-uri-component/commit/3c8a373dd4837e89b3f970e01295dd03e1405a33;>3c8a373
 0.2.1
   https://github.com/SamVerschueren/decode-uri-component/commit/76abc939783fe3900fadb7d384a74d324d5557f3;>76abc93
 Switch to GitHub workflows
   https://github.com/SamVerschueren/decode-uri-component/commit/746ca5dcb6667c5d364e782d53c542830e4c10b9;>746ca5d
 Fix issue where decode throws - fixes https://github-redirect.dependabot.com/SamVerschueren/decode-uri-component/issues/6;>#6
   https://github.com/SamVerschueren/decode-uri-component/commit/486d7e26d3a8c0fbe860fb651fe1bc98c2f2be30;>486d7e2
 Update license (https://github-redirect.dependabot.com/SamVerschueren/decode-uri-component/issues/1;>#1)
   https://github.com/SamVerschueren/decode-uri-component/commit/a65045724e6234acef87f31da499d4807b20b134;>a650457
 Tidelift tasks
   https://github.com/SamVerschueren/decode-uri-component/commit/66e1c2834c0e189201cb65196ec3101372459b02;>66e1c28
 Meta tweaks
   See full diff in https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2;>compare
 view
   
   
   
   
   
   [![Dependabot compatibility 
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=decode-uri-component=npm_and_yarn=0.2.0=0.2.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
   
   Dependabot will resolve any conflicts with this PR as long as you don't 
alter it yourself. You can also trigger a rebase manually by commenting 
`@dependabot rebase`.
   
   [//]: # (dependabot-automerge-start)
   [//]: # (dependabot-automerge-end)
   
   ---
   
   
   Dependabot commands and options
   
   
   You can trigger Dependabot actions by commenting on this PR:
   - `@dependabot rebase` will rebase this PR
   - `@dependabot recreate` will recreate this PR, overwriting any edits that 
have been made to it
   - `@dependabot merge` will merge this PR after your CI passes on it
   - `@dependabot squash and merge` will squash and merge this PR after your CI 
passes on it
   - `@dependabot cancel merge` will cancel a previously requested merge and 
block automerging
   - `@dependabot reopen` will reopen this PR if it is closed
   - `@dependabot close` will close this PR and stop Dependabot recreating it. 
You can achieve the same result by closing it manually
   - `@dependabot ignore this major version` will close this PR and stop 
Dependabot creating any more for this major version (unless you reopen the PR 
or upgrade to it yourself)
   - `@dependabot ignore this minor version` will close this PR and stop 
Dependabot creating any more for this minor version (unless you reopen the PR 
or upgrade to it yourself)
   - `@dependabot ignore this dependency` will close this PR and stop 
Dependabot creating any more for this dependency (unless you reopen the PR or 
upgrade to it yourself)
   - `@dependabot use these labels` will set the current labels as the default 
for future PRs for this repo and language
   - `@dependabot use these reviewers` will set the current reviewers as the 
default for future PRs for this repo and language
   - `@dependabot use these assignees` will set the current assignees as the 
default for future PRs for this repo and language
   - `@dependabot use this milestone` will set the current milestone as the 
default for future PRs for this repo and language
   
   You can disable automated security fix PRs for this repo from the [Security 
Alerts 

[james-site] branch asf-staging updated: Site checkin for project Apache James: Jenkins Tools

2022-12-06 Thread git-site-role
This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/james-site.git


The following commit(s) were added to refs/heads/asf-staging by this push:
 new ceb5ccbb3 Site checkin for project Apache James: Jenkins Tools
ceb5ccbb3 is described below

commit ceb5ccbb37f1aaa8ae763e772376a4f0ced7bb57
Author: jenkins 
AuthorDate: Tue Dec 6 12:45:21 2022 +

Site checkin for project Apache James: Jenkins Tools
---
 _/css/site.css|   2 +-
 _/font/roboto-latin-400-italic.woff   | Bin 22048 -> 22036 bytes
 _/font/roboto-latin-400-italic.woff2  | Bin 17368 -> 17304 bytes
 _/font/roboto-latin-400-normal.woff   | Bin 20344 -> 20332 bytes
 _/font/roboto-latin-400-normal.woff2  | Bin 15744 -> 15688 bytes
 _/font/roboto-latin-500-italic.woff   | Bin 22092 -> 22080 bytes
 _/font/roboto-latin-500-italic.woff2  | Bin 17336 -> 17380 bytes
 _/font/roboto-latin-500-normal.woff   | Bin 20544 -> 20532 bytes
 _/font/roboto-latin-500-normal.woff2  | Bin 15920 -> 15920 bytes
 _/font/roboto-mono-latin-400-normal.woff  | Bin 15160 -> 15160 bytes
 _/font/roboto-mono-latin-400-normal.woff2 | Bin 12312 -> 12312 bytes
 _/font/roboto-mono-latin-500-normal.woff  | Bin 15364 -> 15364 bytes
 _/font/roboto-mono-latin-500-normal.woff2 | Bin 12532 -> 12488 bytes
 _/js/site.js  |   8 +--
 _/js/vendor/highlight.js  |   2 +-
 sitemap-james-project.xml |  92 +++---
 sitemap-james-site.xml|   4 +-
 17 files changed, 54 insertions(+), 54 deletions(-)

diff --git a/_/css/site.css b/_/css/site.css
index 0591a91c7..71670c8f5 100644
--- a/_/css/site.css
+++ b/_/css/site.css
@@ -1,3 +1,3 @@
-@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-latin-400-normal.woff2)
 format("woff2"),url(../font/roboto-latin-400-normal.woff) 
format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:italic;font-weight:400;src:url(../font/roboto-latin-400-italic.woff2)
 format("woff2"),url(../font/roboto-latin-400-ital [...]
+@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-latin-400-normal.woff2)
 format("woff2"),url(../font/roboto-latin-400-normal.woff) 
format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:italic;font-weight:400;src:url(../font/roboto-latin-400-italic.woff2)
 format("woff2"),url(../font/roboto-latin-400-ital [...]
 
 /*! Adapted from the GitHub style by Vasily Polovnyov  
*/.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:500}.hljs-literal,.hljs-number,.hljs-tag
 
.hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:500}.hljs-subst{font-weight:400}.hljs-class
 .hljs-title,.hljs-type{color:#458;font-wei [...]
\ No newline at end of file
diff --git a/_/font/roboto-latin-400-italic.woff 
b/_/font/roboto-latin-400-italic.woff
index ebee16b9e..c8bc60241 100644
Binary files a/_/font/roboto-latin-400-italic.woff and 
b/_/font/roboto-latin-400-italic.woff differ
diff --git a/_/font/roboto-latin-400-italic.woff2 
b/_/font/roboto-latin-400-italic.woff2
index e1b7a79f9..05508b03b 100644
Binary files a/_/font/roboto-latin-400-italic.woff2 and 
b/_/font/roboto-latin-400-italic.woff2 differ
diff --git a/_/font/roboto-latin-400-normal.woff 
b/_/font/roboto-latin-400-normal.woff
index 9eaa94f9b..86b386372 100644
Binary files a/_/font/roboto-latin-400-normal.woff and 
b/_/font/roboto-latin-400-normal.woff differ
diff --git a/_/font/roboto-latin-400-normal.woff2 
b/_/font/roboto-latin-400-normal.woff2
index 020729ef8..ebe1795f8 100644
Binary files a/_/font/roboto-latin-400-normal.woff2 and 
b/_/font/roboto-latin-400-normal.woff2 differ
diff --git a/_/font/roboto-latin-500-italic.woff 
b/_/font/roboto-latin-500-italic.woff
index b6ad1c5be..35d271525 100644
Binary files a/_/font/roboto-latin-500-italic.woff and 
b/_/font/roboto-latin-500-italic.woff differ
diff --git a/_/font/roboto-latin-500-italic.woff2 
b/_/font/roboto-latin-500-italic.woff2
index ae1933f38..04f45a1ea 100644
Binary files a/_/font/roboto-latin-500-italic.woff2 and 
b/_/font/roboto-latin-500-italic.woff2 differ
diff --git a/_/font/roboto-latin-500-normal.woff 
b/_/font/roboto-latin-500-normal.woff
index d39bb52a5..c9eb5cabf 100644
Binary files a/_/font/roboto-latin-500-normal.woff and 
b/_/font/roboto-latin-500-normal.woff differ
diff --git a/_/font/roboto-latin-500-normal.woff2 

[GitHub] [james-project] quantranhong1999 commented on pull request #1338: JAMES-3754 Storage layer support for IMAP save date extension

2022-12-06 Thread GitBox


quantranhong1999 commented on PR #1338:
URL: https://github.com/apache/james-project/pull/1338#issuecomment-1339035501

   Rebased to solve conflicts with master.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] 12/15: [PERF] Improve Cassandra rows interpretation in mailbox/cassandra

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 64c6fb24a4d2be945549975495f5190265f7fda0
Author: Benoit Tellier 
AuthorDate: Fri Dec 2 12:56:18 2022 +0700

[PERF] Improve Cassandra rows interpretation in mailbox/cassandra
---
 .../mailbox/cassandra/mail/CassandraACLDAOV2.java  |  3 ++-
 .../cassandra/mail/CassandraDeletedMessageDAO.java |  7 +++---
 .../cassandra/mail/CassandraFirstUnseenDAO.java|  5 ++--
 .../cassandra/mail/CassandraMailboxCounterDAO.java |  3 ++-
 .../cassandra/mail/CassandraMailboxDAO.java| 16 
 .../cassandra/mail/CassandraMailboxPathV3DAO.java  | 17 +++--
 .../cassandra/mail/CassandraMailboxRecentsDAO.java |  5 ++--
 .../cassandra/mail/CassandraMessageDAOV3.java  | 29 --
 .../cassandra/mail/CassandraMessageIdDAO.java  | 28 ++---
 .../mail/CassandraMessageIdToImapUidDAO.java   | 17 +++--
 .../cassandra/mail/CassandraModSeqProvider.java|  9 ---
 .../mailbox/cassandra/mail/CassandraThreadDAO.java | 19 +++---
 .../cassandra/mail/CassandraThreadLookupDAO.java   | 19 +-
 .../cassandra/mail/CassandraUidProvider.java   |  7 +++---
 14 files changed, 105 insertions(+), 79 deletions(-)

diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAOV2.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAOV2.java
index 2958a7602b..86fbd1da50 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAOV2.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAOV2.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.model.MailboxACL;
 
 import com.datastax.oss.driver.api.core.CqlSession;
 import com.datastax.oss.driver.api.core.cql.PreparedStatement;
+import com.datastax.oss.driver.api.core.type.codec.TypeCodecs;
 import com.github.fge.lambdas.Throwing;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
@@ -106,7 +107,7 @@ public class CassandraACLDAOV2 {
 public Mono getACL(CassandraId cassandraId) {
 return executor.executeRows(
 read.bind()
-.setUuid(CassandraACLTable.ID, cassandraId.asUuid()))
+.set(CassandraACLTable.ID, cassandraId.asUuid(), 
TypeCodecs.TIMEUUID))
 .map(Throwing.function(row -> {
 MailboxACL.EntryKey entryKey = 
MailboxACL.EntryKey.deserialize(row.getString(CassandraACLV2Table.KEY));
 MailboxACL.Rfc4314Rights rights = 
row.getSet(CassandraACLV2Table.RIGHTS, String.class)
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
index 5aa632e956..ee4624d847 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
@@ -44,6 +44,7 @@ import 
com.datastax.oss.driver.api.core.cql.BatchStatementBuilder;
 import com.datastax.oss.driver.api.core.cql.BatchType;
 import com.datastax.oss.driver.api.core.cql.PreparedStatement;
 import com.datastax.oss.driver.api.core.cql.Row;
+import com.datastax.oss.driver.api.core.type.codec.TypeCodecs;
 import com.google.common.collect.Lists;
 
 import reactor.core.publisher.Flux;
@@ -186,12 +187,12 @@ public class CassandraDeletedMessageDAO {
 
 public Mono removeAll(CassandraId cassandraId) {
 return cassandraAsyncExecutor.executeVoid(deleteAllStatement.bind()
-.setUuid(MAILBOX_ID, cassandraId.asUuid()));
+.set(MAILBOX_ID, cassandraId.asUuid(), TypeCodecs.TIMEUUID));
 }
 
 public Flux retrieveDeletedMessage(CassandraId cassandraId, 
MessageRange range) {
 return retrieveResultSetOfDeletedMessage(cassandraId, range)
-.map(row -> MessageUid.of(row.getLong(UID)));
+.map(row -> MessageUid.of(row.getLong(0)));
 }
 
 private Flux retrieveResultSetOfDeletedMessage(CassandraId 
cassandraId, MessageRange range) {
@@ -212,7 +213,7 @@ public class CassandraDeletedMessageDAO {
 private Flux retrieveAllDeleted(CassandraId cassandraId) {
 return cassandraAsyncExecutor.executeRows(
 selectAllUidStatement.bind()
-.setUuid(MAILBOX_ID, cassandraId.asUuid()));
+.set(MAILBOX_ID, cassandraId.asUuid(), TypeCodecs.TIMEUUID));
 }
 
 private Flux retrieveOneDeleted(CassandraId cassandraId, MessageUid 
uid) {
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAO.java
 

[james-project] 09/15: [PERF] Increase forked process timeout for mailbox/cassandra

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit f4f3d35fb1bb8c20c5e26cf6b468d76e2881beea
Author: Benoit Tellier 
AuthorDate: Sun Nov 27 14:08:31 2022 +0700

[PERF] Increase forked process timeout for mailbox/cassandra
---
 mailbox/cassandra/pom.xml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/mailbox/cassandra/pom.xml b/mailbox/cassandra/pom.xml
index 1f5de33188..290df88663 100644
--- a/mailbox/cassandra/pom.xml
+++ b/mailbox/cassandra/pom.xml
@@ -202,6 +202,7 @@
 
 true
 2
+
1800
 
 
 


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] 15/15: [PERF] Allow disabling SERIAL read for non critical UID/ModSeq read operations

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit e3904e5dabe7135793b38e639020ff47bf1123e6
Author: Benoit Tellier 
AuthorDate: Mon Dec 5 16:00:12 2022 +0700

[PERF] Allow disabling SERIAL read for non critical UID/ModSeq read 
operations
---
 .../init/configuration/CassandraConfiguration.java | 44 --
 .../cassandra/mail/CassandraModSeqProvider.java| 20 ++
 .../cassandra/mail/CassandraUidProvider.java   | 20 ++
 .../modules/ROOT/pages/configure/cassandra.adoc| 14 +++
 4 files changed, 80 insertions(+), 18 deletions(-)

diff --git 
a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/CassandraConfiguration.java
 
b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/CassandraConfiguration.java
index 2df55e6641..76c90968d6 100644
--- 
a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/CassandraConfiguration.java
+++ 
b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/CassandraConfiguration.java
@@ -76,6 +76,8 @@ public class CassandraConfiguration {
 private static final String MAILBOX_READ_STRONG_CONSISTENCY = 
"mailbox.read.strong.consistency";
 private static final String MESSAGE_READ_STRONG_CONSISTENCY = 
"message.read.strong.consistency";
 private static final String MESSAGE_WRITE_STRONG_CONSISTENCY = 
"message.write.strong.consistency.unsafe";
+private static final String UID_READ_STRONG_CONSISTENCY = 
"uid.read.strong.consistency.unsafe";
+private static final String MODSEQ_READ_STRONG_CONSISTENCY = 
"modseq.read.strong.consistency.unsafe";
 private static final String CONSISTENCY_LEVEL_REGULAR = 
"cassandra.consistency_level.regular";
 private static final String CONSISTENCY_LEVEL_LIGHTWEIGHT_TRANSACTION = 
"cassandra.consistency_level.lightweight_transaction";
 private static final String OPTIMISTIC_CONSISTENCY_LEVEL = 
"optimistic.consistency.level.enabled";
@@ -102,6 +104,8 @@ public class CassandraConfiguration {
 private Optional mailboxReadStrongConsistency = 
Optional.empty();
 private Optional messageReadStrongConsistency = 
Optional.empty();
 private Optional messageWriteStrongConsistency = 
Optional.empty();
+private Optional uidReadStrongConsistency = Optional.empty();
+private Optional modseqReadStrongConsistency = 
Optional.empty();
 private Optional optimisticConsistencyLevel = 
Optional.empty();
 private Optional mailRepositoryStrongConsistency = 
Optional.empty();
 
@@ -125,6 +129,16 @@ public class CassandraConfiguration {
 return this;
 }
 
+public Builder uidReadStrongConsistency(Optional value) {
+this.uidReadStrongConsistency = value;
+return this;
+}
+
+public Builder modseqReadStrongConsistency(Optional value) {
+this.modseqReadStrongConsistency = value;
+return this;
+}
+
 public Builder messageWriteStrongConsistency(boolean value) {
 this.messageWriteStrongConsistency = Optional.of(value);
 return this;
@@ -348,7 +362,9 @@ public class CassandraConfiguration {
 
messageReadStrongConsistency.orElse(DEFAULT_STRONG_CONSISTENCY),
 
messageWriteStrongConsistency.orElse(DEFAULT_STRONG_CONSISTENCY),
 
optimisticConsistencyLevel.orElse(DEFAULT_OPTIMISTIC_CONSISTENCY_LEVEL),
-
mailRepositoryStrongConsistency.orElse(DEFAULT_MAIL_REPOSITORY_STRONG_CONSISTENCY));
+
mailRepositoryStrongConsistency.orElse(DEFAULT_MAIL_REPOSITORY_STRONG_CONSISTENCY),
+uidReadStrongConsistency.orElse(DEFAULT_STRONG_CONSISTENCY),
+
modseqReadStrongConsistency.orElse(DEFAULT_STRONG_CONSISTENCY));
 }
 }
 
@@ -392,6 +408,10 @@ public class CassandraConfiguration {
 
propertiesConfiguration.getBoolean(MAILBOX_READ_STRONG_CONSISTENCY, null)))
 .messageReadStrongConsistency(Optional.ofNullable(
 
propertiesConfiguration.getBoolean(MESSAGE_READ_STRONG_CONSISTENCY, null)))
+.uidReadStrongConsistency(Optional.ofNullable(
+
propertiesConfiguration.getBoolean(UID_READ_STRONG_CONSISTENCY, null)))
+.modseqReadStrongConsistency(Optional.ofNullable(
+
propertiesConfiguration.getBoolean(MODSEQ_READ_STRONG_CONSISTENCY, null)))
 .messageWriteStrongConsistency(Optional.ofNullable(
 
propertiesConfiguration.getBoolean(MESSAGE_WRITE_STRONG_CONSISTENCY, null)))
 .optimisticConsistencyLevel(Optional.ofNullable(
@@ -421,6 +441,8 @@ public class CassandraConfiguration {
 private final 

[james-project] 14/15: [PERF] Continue improve mailbox/cassandra row reading

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit faafc02dd4a846249f60937462e87e553f3adb4a
Author: Benoit Tellier 
AuthorDate: Mon Dec 5 15:26:22 2022 +0700

[PERF] Continue improve mailbox/cassandra row reading
---
 .../cassandra/mail/CassandraFirstUnseenDAO.java| 11 ++--
 .../cassandra/mail/CassandraMailboxRecentsDAO.java |  5 +++-
 .../cassandra/mail/CassandraMessageDAOV3.java  | 31 +-
 .../cassandra/mail/CassandraMessageIdDAO.java  | 27 ---
 4 files changed, 50 insertions(+), 24 deletions(-)

diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAO.java
index bd5eeb2aff..53fa2726cf 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAO.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAO.java
@@ -38,10 +38,12 @@ import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 
 import com.datastax.oss.driver.api.core.CqlSession;
+import com.datastax.oss.driver.api.core.ProtocolVersion;
 import com.datastax.oss.driver.api.core.cql.BatchStatement;
 import com.datastax.oss.driver.api.core.cql.BatchStatementBuilder;
 import com.datastax.oss.driver.api.core.cql.BatchType;
 import com.datastax.oss.driver.api.core.cql.PreparedStatement;
+import com.datastax.oss.driver.api.core.cql.Row;
 import com.datastax.oss.driver.api.core.metadata.schema.ClusteringOrder;
 import com.datastax.oss.driver.api.core.type.codec.TypeCodecs;
 import com.google.common.collect.Lists;
@@ -59,6 +61,7 @@ public class CassandraFirstUnseenDAO {
 private final PreparedStatement deleteAllStatement;
 private final PreparedStatement readStatement;
 private final PreparedStatement listStatement;
+private final ProtocolVersion protocolVersion;
 
 @Inject
 public CassandraFirstUnseenDAO(CqlSession session) {
@@ -68,6 +71,7 @@ public class CassandraFirstUnseenDAO {
 this.deleteAllStatement = prepareDeleteAllStatement(session);
 this.readStatement = prepareReadStatement(session);
 this.listStatement = prepareListStatement(session);
+this.protocolVersion = session.getContext().getProtocolVersion();
 }
 
 private PreparedStatement prepareReadStatement(CqlSession session) {
@@ -172,14 +176,17 @@ public class CassandraFirstUnseenDAO {
 return cassandraAsyncExecutor.executeSingleRow(
 readStatement.bind()
 .setUuid(MAILBOX_ID, cassandraId.asUuid()))
-.map(row -> MessageUid.of(row.getLong(UID)));
+.map(this::asMessageUid);
 }
 
 public Flux listUnseen(CassandraId cassandraId) {
 return cassandraAsyncExecutor.executeRows(
 listStatement.bind()
 .set(MAILBOX_ID, cassandraId.asUuid(), 
TypeCodecs.TIMEUUID))
-.map(row -> MessageUid.of(row.getLong(0)));
+.map(this::asMessageUid);
 }
 
+private MessageUid asMessageUid(Row row) {
+return 
MessageUid.of(TypeCodecs.BIGINT.decodePrimitive(row.getBytesUnsafe(0), 
protocolVersion));
+}
 }
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java
index da5552eaa5..f30e4cd907 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxRecentsTable;
 
 import com.datastax.oss.driver.api.core.CqlSession;
+import com.datastax.oss.driver.api.core.ProtocolVersion;
 import com.datastax.oss.driver.api.core.cql.BatchStatement;
 import com.datastax.oss.driver.api.core.cql.BatchStatementBuilder;
 import com.datastax.oss.driver.api.core.cql.BatchType;
@@ -56,6 +57,7 @@ public class CassandraMailboxRecentsDAO {
 private final PreparedStatement deleteStatement;
 private final PreparedStatement deleteAllStatement;
 private final PreparedStatement addStatement;
+private final ProtocolVersion protocolVersion;
 
 @Inject
 public CassandraMailboxRecentsDAO(CqlSession session) {
@@ -64,6 +66,7 @@ public class CassandraMailboxRecentsDAO {
 deleteStatement = createDeleteStatement(session);
 deleteAllStatement = createDeleteAllStatement(session);
 addStatement = createAddStatement(session);
+

[james-project] 04/15: [PERF] Adopt CqlIdentifier within backend-commons/cassandra

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit dc3af393112d0e4ff7bf9f0d6c0ab4686e5ab1bb
Author: Benoit Tellier 
AuthorDate: Tue Nov 1 09:35:37 2022 +0700

[PERF] Adopt CqlIdentifier within backend-commons/cassandra
---
 .../backends/cassandra/init/CassandraZonedDateTimeModule.java | 5 +++--
 .../cassandra/versions/table/CassandraSchemaVersionTable.java | 8 
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git 
a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java
 
b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java
index f1b288d064..b02548ab65 100644
--- 
a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java
+++ 
b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java
@@ -25,14 +25,15 @@ import java.util.Optional;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.utils.ZonedDateTimeRepresentation;
 
+import com.datastax.oss.driver.api.core.CqlIdentifier;
 import com.datastax.oss.driver.api.core.data.UdtValue;
 import com.datastax.oss.driver.api.core.type.DataTypes;
 import com.datastax.oss.driver.api.core.type.UserDefinedType;
 
 public interface CassandraZonedDateTimeModule {
 String ZONED_DATE_TIME = "zonedDateTime";
-String DATE = "date";
-String TIME_ZONE = "timeZone";
+CqlIdentifier DATE = CqlIdentifier.fromCql("date");
+CqlIdentifier TIME_ZONE = CqlIdentifier.fromCql("timeZone");
 
 CassandraModule MODULE = CassandraModule.type(ZONED_DATE_TIME)
 .statement(statement -> statement
diff --git 
a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/table/CassandraSchemaVersionTable.java
 
b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/table/CassandraSchemaVersionTable.java
index 6793d2a483..ef3ecd4412 100644
--- 
a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/table/CassandraSchemaVersionTable.java
+++ 
b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/table/CassandraSchemaVersionTable.java
@@ -19,11 +19,11 @@
 
 package org.apache.james.backends.cassandra.versions.table;
 
+import com.datastax.oss.driver.api.core.CqlIdentifier;
+
 public interface CassandraSchemaVersionTable {
 String TABLE_NAME = "schemaversion";
 
-String KEY = "key";
-String VALUE = "value";
-
-int KEY_FOR_VERSION = 0;
+CqlIdentifier KEY = CqlIdentifier.fromCql("key");
+CqlIdentifier VALUE = CqlIdentifier.fromCql("value");
 }


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] 01/15: [PERF] Adopt CqlIdentifier in mailbox/cassandra

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 6f33b2c3369a81f73797f09372d836061d9bcbd5
Author: Benoit Tellier 
AuthorDate: Fri Dec 2 12:10:58 2022 +0700

[PERF] Adopt CqlIdentifier in mailbox/cassandra
---
 .../cassandra/mail/CassandraApplicableFlagDAO.java |  4 +-
 .../cassandra/mail/CassandraMessageDAO.java|  7 +--
 .../cassandra/mail/CassandraMessageDAOV3.java  | 26 --
 .../cassandra/mail/CassandraMessageIdDAO.java  | 59 +-
 .../mail/CassandraMessageIdToImapUidDAO.java   | 36 +
 .../mailbox/cassandra/mail/FlagsExtractor.java |  9 ++--
 .../cassandra/mail/utils/MailboxBaseTupleUtil.java |  2 +-
 .../cassandra/modules/CassandraMailboxModule.java  |  4 +-
 .../cassandra/modules/CassandraMessageModule.java  |  4 +-
 .../mailbox/cassandra/table/CassandraACLTable.java |  8 +--
 .../cassandra/table/CassandraACLV2Table.java   |  8 +--
 .../cassandra/table/CassandraAnnotationTable.java  | 14 ++---
 .../table/CassandraApplicableFlagTable.java|  6 +--
 .../table/CassandraAttachmentMessageIdTable.java   | 10 ++--
 .../table/CassandraAttachmentOwnerTable.java   |  7 +--
 .../table/CassandraAttachmentV2Table.java  | 16 +++---
 .../cassandra/table/CassandraCurrentQuota.java |  8 +--
 .../table/CassandraDeletedMessageTable.java|  6 ++-
 .../cassandra/table/CassandraDomainMaxQuota.java   |  8 +--
 .../cassandra/table/CassandraFirstUnseenTable.java |  6 ++-
 .../cassandra/table/CassandraGlobalMaxQuota.java   |  8 +--
 .../table/CassandraMailboxCountersTable.java   |  8 +--
 .../cassandra/table/CassandraMailboxPathTable.java | 34 -
 .../table/CassandraMailboxPathV2Table.java | 36 -
 .../table/CassandraMailboxPathV3Table.java | 14 ++---
 .../table/CassandraMailboxRecentsTable.java|  6 ++-
 .../cassandra/table/CassandraMailboxTable.java | 15 +++---
 .../mailbox/cassandra/table/CassandraMaxQuota.java |  8 +--
 .../cassandra/table/CassandraMessageIdTable.java   | 12 ++---
 .../cassandra/table/CassandraMessageIds.java   | 11 ++--
 .../table/CassandraMessageModseqTable.java |  6 ++-
 .../cassandra/table/CassandraMessageUidTable.java  |  6 ++-
 .../cassandra/table/CassandraMessageV2Table.java   | 34 +++--
 .../cassandra/table/CassandraMessageV3Table.java   | 57 +
 .../table/CassandraSubscriptionTable.java  |  7 +--
 .../table/CassandraThreadLookupTable.java  |  7 +--
 .../cassandra/table/CassandraThreadTable.java  | 11 ++--
 .../table/CassandraUserMailboxRightsTable.java |  8 +--
 .../apache/james/mailbox/cassandra/table/Flag.java | 53 +--
 .../cassandra/table/MessageIdToImapUid.java| 15 ++
 .../cassandra/mail/CassandraMessageIdDAOTest.java  | 17 +++
 41 files changed, 268 insertions(+), 353 deletions(-)

diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAO.java
index 16e460085e..9d8270902d 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAO.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAO.java
@@ -23,7 +23,6 @@ import static 
com.datastax.oss.driver.api.querybuilder.QueryBuilder.bindMarker;
 import static com.datastax.oss.driver.api.querybuilder.QueryBuilder.deleteFrom;
 import static com.datastax.oss.driver.api.querybuilder.QueryBuilder.selectFrom;
 import static 
com.datastax.oss.driver.api.querybuilder.relation.Relation.column;
-import static 
org.apache.james.mailbox.cassandra.table.CassandraApplicableFlagTable.FIELDS;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraApplicableFlagTable.MAILBOX_ID;
 import static 
org.apache.james.mailbox.cassandra.table.CassandraApplicableFlagTable.TABLE_NAME;
 import static org.apache.james.mailbox.cassandra.table.Flag.USER_FLAGS;
@@ -35,6 +34,7 @@ import javax.mail.Flags;
 
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
+import org.apache.james.mailbox.cassandra.table.Flag;
 
 import com.datastax.oss.driver.api.core.CqlSession;
 import com.datastax.oss.driver.api.core.cql.PreparedStatement;
@@ -58,7 +58,7 @@ public class CassandraApplicableFlagDAO {
 
 private PreparedStatement prepareSelect(CqlSession session) {
 return session.prepare(selectFrom(TABLE_NAME)
-.columns(FIELDS)
+.columns(Flag.USER_FLAGS)
 .where(column(MAILBOX_ID).isEqualTo(bindMarker(MAILBOX_ID)))
 .build());
 }
diff --git 

[james-project] 06/15: [PERF] Adopt CqlIdentifier within eventbus-cassandra

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit db5cd2366dc47781a44863f2b817c75ee4f94f9e
Author: Benoit Tellier 
AuthorDate: Tue Nov 1 09:41:16 2022 +0700

[PERF] Adopt CqlIdentifier within eventbus-cassandra
---
 .../james/events/tables/CassandraEventDeadLettersGroupTable.java  | 4 +++-
 .../james/events/tables/CassandraEventDeadLettersTable.java   | 8 +---
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git 
a/event-bus/cassandra/src/main/java/org/apache/james/events/tables/CassandraEventDeadLettersGroupTable.java
 
b/event-bus/cassandra/src/main/java/org/apache/james/events/tables/CassandraEventDeadLettersGroupTable.java
index fff28aac92..e6df7a4284 100644
--- 
a/event-bus/cassandra/src/main/java/org/apache/james/events/tables/CassandraEventDeadLettersGroupTable.java
+++ 
b/event-bus/cassandra/src/main/java/org/apache/james/events/tables/CassandraEventDeadLettersGroupTable.java
@@ -19,9 +19,11 @@
 
 package org.apache.james.events.tables;
 
+import com.datastax.oss.driver.api.core.CqlIdentifier;
+
 public interface CassandraEventDeadLettersGroupTable {
 
 String TABLE_NAME = "group_table";
 
-String GROUP = "group";
+CqlIdentifier GROUP = CqlIdentifier.fromCql("group");
 }
diff --git 
a/event-bus/cassandra/src/main/java/org/apache/james/events/tables/CassandraEventDeadLettersTable.java
 
b/event-bus/cassandra/src/main/java/org/apache/james/events/tables/CassandraEventDeadLettersTable.java
index 51cbef8adb..e8e33e2110 100644
--- 
a/event-bus/cassandra/src/main/java/org/apache/james/events/tables/CassandraEventDeadLettersTable.java
+++ 
b/event-bus/cassandra/src/main/java/org/apache/james/events/tables/CassandraEventDeadLettersTable.java
@@ -19,11 +19,13 @@
 
 package org.apache.james.events.tables;
 
+import com.datastax.oss.driver.api.core.CqlIdentifier;
+
 public interface CassandraEventDeadLettersTable {
 
 String TABLE_NAME = "event_dead_letters";
 
-String GROUP = "group";
-String INSERTION_ID = "insertionId";
-String EVENT = "event";
+CqlIdentifier GROUP = CqlIdentifier.fromCql("group");
+CqlIdentifier INSERTION_ID = CqlIdentifier.fromCql("insertionId");
+CqlIdentifier EVENT = CqlIdentifier.fromCql("event");
 }


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] 05/15: [PERF] Adopt CqlIdentifier within eventsourcing-cassandra

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 6ff79b01422243ce96ae0d8ca1cfb56175265126
Author: Benoit Tellier 
AuthorDate: Tue Nov 1 09:38:24 2022 +0700

[PERF] Adopt CqlIdentifier within eventsourcing-cassandra
---
 .../eventstore/cassandra/CassandraEventStoreTable.scala   | 8 +---
 .../james/eventsourcing/eventstore/cassandra/EventStoreDao.scala  | 7 ---
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git 
a/event-sourcing/event-store-cassandra/src/main/scala/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTable.scala
 
b/event-sourcing/event-store-cassandra/src/main/scala/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTable.scala
index 1b901e217f..57c6754976 100644
--- 
a/event-sourcing/event-store-cassandra/src/main/scala/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTable.scala
+++ 
b/event-sourcing/event-store-cassandra/src/main/scala/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTable.scala
@@ -18,9 +18,11 @@
  /
 package org.apache.james.eventsourcing.eventstore.cassandra
 
+import com.datastax.oss.driver.api.core.CqlIdentifier
+
 object CassandraEventStoreTable {
   val EVENTS_TABLE = "eventStore"
-  val AGGREGATE_ID = "aggregateId"
-  val EVENT = "event"
-  val EVENT_ID = "eventId"
+  val AGGREGATE_ID = CqlIdentifier.fromCql("aggregateId")
+  val EVENT = CqlIdentifier.fromCql("event")
+  val EVENT_ID = CqlIdentifier.fromCql("eventId")
 }
\ No newline at end of file
diff --git 
a/event-sourcing/event-store-cassandra/src/main/scala/org/apache/james/eventsourcing/eventstore/cassandra/EventStoreDao.scala
 
b/event-sourcing/event-store-cassandra/src/main/scala/org/apache/james/eventsourcing/eventstore/cassandra/EventStoreDao.scala
index 254ded1cac..b83bb626b2 100644
--- 
a/event-sourcing/event-store-cassandra/src/main/scala/org/apache/james/eventsourcing/eventstore/cassandra/EventStoreDao.scala
+++ 
b/event-sourcing/event-store-cassandra/src/main/scala/org/apache/james/eventsourcing/eventstore/cassandra/EventStoreDao.scala
@@ -20,6 +20,7 @@
 package org.apache.james.eventsourcing.eventstore.cassandra
 
 import com.datastax.oss.driver.api.core.CqlSession
+import com.datastax.oss.driver.api.core.`type`.codec.TypeCodecs
 import com.datastax.oss.driver.api.core.cql.{BatchStatementBuilder, BatchType, 
BoundStatement, PreparedStatement, Row, Statement}
 import com.datastax.oss.driver.api.querybuilder.QueryBuilder
 import com.datastax.oss.driver.api.querybuilder.QueryBuilder.{bindMarker, 
insertInto}
@@ -52,7 +53,7 @@ class EventStoreDao @Inject() (val session: CqlSession,
   private def prepareSelect(session: CqlSession): PreparedStatement =
 session.prepare(QueryBuilder
   .selectFrom(EVENTS_TABLE)
-  .all()
+  .column(EVENT)
   .whereColumn(AGGREGATE_ID).isEqualTo(bindMarker(AGGREGATE_ID))
   .build())
 
@@ -83,7 +84,7 @@ class EventStoreDao @Inject() (val session: CqlSession,
 
   private[cassandra] def getEventsOfAggregate(aggregateId: AggregateId): 
SMono[History] = {
 val preparedStatement = select.bind()
-  .setString(AGGREGATE_ID, aggregateId.asAggregateKey)
+  .set(AGGREGATE_ID, aggregateId.asAggregateKey, TypeCodecs.TEXT)
   .setExecutionProfile(executionProfile)
 val rows: SFlux[Row] = 
SFlux[Row](cassandraAsyncExecutor.executeRows(preparedStatement))
 
@@ -100,6 +101,6 @@ class EventStoreDao @Inject() (val session: CqlSession,
   .setString(AGGREGATE_ID, aggregateId.asAggregateKey)))
   .`then`()
 
-  private def toEvent(row: Row): SMono[Event] = SMono.fromCallable(() => 
jsonEventSerializer.deserialize(row.getString(EVENT)))
+  private def toEvent(row: Row): SMono[Event] = SMono.fromCallable(() => 
jsonEventSerializer.deserialize(row.get(0, TypeCodecs.TEXT)))
 .subscribeOn(ReactorUtils.BLOCKING_CALL_WRAPPER)
 }
\ No newline at end of file


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] 11/15: [PERF] Improve Cassandra rows interpretation in mailbox/cassandra

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 63d865dda3819f3a608beeca87557a8686219ac9
Author: Benoit Tellier 
AuthorDate: Fri Dec 2 12:54:47 2022 +0700

[PERF] Improve Cassandra rows interpretation in mailbox/cassandra
---
 .../cassandra/mail/CassandraMessageIdDAO.java  | 23 +-
 .../mailbox/cassandra/mail/FlagsExtractor.java |  8 +++-
 2 files changed, 21 insertions(+), 10 deletions(-)

diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
index 8e4d26823a..edb99eb80c 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
@@ -70,6 +70,7 @@ import org.apache.james.mailbox.model.UpdatedFlags;
 import org.apache.james.util.streams.Limit;
 
 import com.datastax.oss.driver.api.core.CqlSession;
+import com.datastax.oss.driver.api.core.ProtocolVersion;
 import com.datastax.oss.driver.api.core.cql.BoundStatement;
 import com.datastax.oss.driver.api.core.cql.BoundStatementBuilder;
 import com.datastax.oss.driver.api.core.cql.PreparedStatement;
@@ -109,10 +110,13 @@ public class CassandraMessageIdDAO {
 private final PreparedStatement selectUidRangeLimited;
 private final PreparedStatement update;
 private final PreparedStatement listStatement;
+private final ProtocolVersion protocolVersion;
 
 @Inject
 public CassandraMessageIdDAO(CqlSession session, BlobId.Factory 
blobIdFactory) {
 this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
+this.protocolVersion = session.getContext().getProtocolVersion();
+
 this.blobIdFactory = blobIdFactory;
 this.delete = prepareDelete(session);
 this.insert = prepareInsert(session);
@@ -417,7 +421,7 @@ public class CassandraMessageIdDAO {
 public Flux listUids(CassandraId mailboxId) {
 return cassandraAsyncExecutor.executeRows(selectAllUids.bind()
 .set(MAILBOX_ID, mailboxId.asUuid(), TypeCodecs.TIMEUUID))
-.map(row -> MessageUid.of(row.getLong(0)));
+.map(row -> 
MessageUid.of(TypeCodecs.BIGINT.decodePrimitive(row.getBytesUnsafe(0), 
protocolVersion)));
 }
 
 public Flux 
listMessagesMetadata(CassandraId mailboxId, MessageRange range) {
@@ -426,21 +430,21 @@ public class CassandraMessageIdDAO {
 .setLong(IMAP_UID_GTE, range.getUidFrom().asLong())
 .setLong(IMAP_UID_LTE, range.getUidTo().asLong()))
 .map(row -> {
-CassandraMessageId messageId = 
CassandraMessageId.Factory.of(row.getUuid(MESSAGE_ID));
+CassandraMessageId messageId = 
CassandraMessageId.Factory.of(row.get(MESSAGE_ID, TypeCodecs.TIMEUUID));
 return ComposedMessageIdWithMetaData.builder()
-.modSeq(ModSeq.of(row.getLong(MOD_SEQ)))
+
.modSeq(ModSeq.of(TypeCodecs.BIGINT.decodePrimitive(row.getBytesUnsafe(MOD_SEQ),
 protocolVersion)))
 .threadId(getThreadIdFromRow(row, messageId))
 .flags(FlagsExtractor.getFlags(row))
 .composedMessageId(new ComposedMessageId(mailboxId,
 messageId,
-MessageUid.of(row.getLong(IMAP_UID
+
MessageUid.of(TypeCodecs.BIGINT.decodePrimitive(row.getBytesUnsafe(IMAP_UID), 
protocolVersion
 .build();
 });
 }
 
 public Flux listNotDeletedUids(CassandraId mailboxId, 
MessageRange range) {
 return cassandraAsyncExecutor.executeRows(selectNotDeletedRange.bind()
-.setUuid(MAILBOX_ID, mailboxId.asUuid())
+.set(MAILBOX_ID, mailboxId.asUuid(), TypeCodecs.TIMEUUID)
 .setLong(IMAP_UID_GTE, range.getUidFrom().asLong())
 .setLong(IMAP_UID_LTE, range.getUidTo().asLong()))
 .filter(row -> 
!row.getBoolean(org.apache.james.mailbox.cassandra.table.Flag.DELETED))
@@ -449,10 +453,10 @@ public class CassandraMessageIdDAO {
 
 private Flux doListUids(CassandraId mailboxId, MessageRange 
range) {
 return cassandraAsyncExecutor.executeRows(selectUidOnlyRange.bind()
-.setUuid(MAILBOX_ID, mailboxId.asUuid())
+.set(MAILBOX_ID, mailboxId.asUuid(), TypeCodecs.TIMEUUID)
 .setLong(IMAP_UID_GTE, range.getUidFrom().asLong())
 .setLong(IMAP_UID_LTE, range.getUidTo().asLong()))
-.map(row -> MessageUid.of(row.getLong(IMAP_UID)));
+.map(row -> 
MessageUid.of(TypeCodecs.BIGINT.decodePrimitive(row.getBytesUnsafe(0), 

[james-project] 03/15: [PERF] Adopt CqlIdentifier within server/data/data-jmap-cassandra

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit baede3f6cc9eb947c32352c2fd8cc1172871f38e
Author: Benoit Tellier 
AuthorDate: Tue Nov 1 09:32:19 2022 +0700

[PERF] Adopt CqlIdentifier within server/data/data-jmap-cassandra
---
 .../cassandra/access/CassandraAccessTokenDAO.java  |  7 +--
 .../access/table/CassandraAccessTokenTable.java|  6 ++-
 .../cassandra/change/EmailChangeRepositoryDAO.java | 21 
 .../change/MailboxChangeRepositoryDAO.java | 21 
 .../change/tables/CassandraEmailChangeTable.java   | 17 ---
 .../change/tables/CassandraMailboxChangeTable.java | 20 
 .../projections/CassandraEmailQueryView.java   | 57 ++
 .../CassandraMessageFastViewProjection.java| 11 ++---
 .../table/CassandraEmailQueryViewTable.java| 11 ++---
 .../CassandraMessageFastViewProjectionTable.java   | 10 ++--
 .../tables/CassandraPushSubscriptionTable.java | 23 +
 .../james/jmap/cassandra/upload/UploadModule.java  | 13 ++---
 .../identity/CassandraCustomIdentityModule.scala   |  6 +--
 .../tables/CassandraCustomIdentityTable.scala  | 29 ++-
 .../cassandra/utils/EmailAddressTupleUtil.scala|  2 +-
 15 files changed, 132 insertions(+), 122 deletions(-)

diff --git 
a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenDAO.java
 
b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenDAO.java
index d104bc9f34..b4facc69ea 100644
--- 
a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenDAO.java
+++ 
b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenDAO.java
@@ -37,6 +37,7 @@ import 
org.apache.james.jmap.cassandra.access.table.CassandraAccessTokenTable;
 
 import com.datastax.oss.driver.api.core.CqlSession;
 import com.datastax.oss.driver.api.core.cql.PreparedStatement;
+import com.datastax.oss.driver.api.core.type.codec.TypeCodecs;
 import com.google.common.primitives.Ints;
 
 import reactor.core.publisher.Mono;
@@ -67,7 +68,7 @@ public class CassandraAccessTokenDAO {
 .build());
 
 this.selectStatement = 
session.prepare(selectFrom(CassandraAccessTokenTable.TABLE_NAME)
-.all()
+.column(CassandraAccessTokenTable.USERNAME)
 .whereColumn(CassandraAccessTokenTable.TOKEN)
 .isEqualTo(bindMarker(CassandraAccessTokenTable.TOKEN))
 .build());
@@ -87,8 +88,8 @@ public class CassandraAccessTokenDAO {
 
 public Mono getUsernameFromToken(AccessToken accessToken) {
 return cassandraAsyncExecutor.executeSingleRow(selectStatement.bind()
-.setUuid(CassandraAccessTokenTable.TOKEN, 
accessToken.asUUID()))
-.map(row -> row.getString(CassandraAccessTokenTable.USERNAME))
+.set(CassandraAccessTokenTable.TOKEN, accessToken.asUUID(), 
TypeCodecs.UUID))
+.map(row -> row.get(0, TypeCodecs.TEXT))
 .map(Username::of);
 }
 }
diff --git 
a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/table/CassandraAccessTokenTable.java
 
b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/table/CassandraAccessTokenTable.java
index 482e4ef62f..026f80eb99 100644
--- 
a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/table/CassandraAccessTokenTable.java
+++ 
b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/table/CassandraAccessTokenTable.java
@@ -19,11 +19,13 @@
 
 package org.apache.james.jmap.cassandra.access.table;
 
+import com.datastax.oss.driver.api.core.CqlIdentifier;
+
 public interface CassandraAccessTokenTable {
 
 String TABLE_NAME = "access_token";
 
-String TOKEN = "access_token";
-String USERNAME = "username";
+CqlIdentifier TOKEN = CqlIdentifier.fromCql("access_token");
+CqlIdentifier USERNAME = CqlIdentifier.fromCql("username");
 
 }
diff --git 
a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/EmailChangeRepositoryDAO.java
 
b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/EmailChangeRepositoryDAO.java
index c34bf02e49..adb6c35224 100644
--- 
a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/EmailChangeRepositoryDAO.java
+++ 
b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/EmailChangeRepositoryDAO.java
@@ -55,6 +55,7 @@ import com.datastax.oss.driver.api.core.cql.Row;
 import com.datastax.oss.driver.api.core.type.DataTypes;
 import com.datastax.oss.driver.api.core.type.UserDefinedType;
 import 

[james-project] 10/15: [PERF] Fix tests that was timing out

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 10ffe707920f5850d3af3c734adefa85b5458a8e
Author: Benoit Tellier 
AuthorDate: Sat Dec 3 11:26:06 2022 +0700

[PERF] Fix tests that was timing out
---
 .../apache/james/mailbox/cassandra/mail/CassandraACLMapperV2Test.java | 4 ++--
 .../src/test/java/org/apache/james/CassandraCacheQueryTest.java   | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperV2Test.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperV2Test.java
index f3e56ea0cf..16b6b2d33f 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperV2Test.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperV2Test.java
@@ -85,7 +85,7 @@ class CassandraACLMapperV2Test extends 
CassandraACLMapperContract {
 .registerScenario(awaitOn(barrier)
 .thenExecuteNormally()
 .times(2)
-.whenQueryStartsWith("SELECT * FROM eventstore WHERE 
aggregateid=:aggregateid"));
+.whenQueryStartsWith("SELECT event FROM eventstore WHERE 
aggregateid=:aggregateid"));
 
 MailboxACL.EntryKey keyBob = new MailboxACL.EntryKey("bob", 
MailboxACL.NameType.user, false);
 MailboxACL.Rfc4314Rights rights = new 
MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
@@ -113,7 +113,7 @@ class CassandraACLMapperV2Test extends 
CassandraACLMapperContract {
 .registerScenario(awaitOn(barrier)
 .thenExecuteNormally()
 .times(2)
-.whenQueryStartsWith("SELECT * FROM eventstore WHERE 
aggregateid=:aggregateid"));
+.whenQueryStartsWith("SELECT event FROM eventstore WHERE 
aggregateid=:aggregateid"));
 
 MailboxACL.EntryKey keyBob = new MailboxACL.EntryKey("bob", 
MailboxACL.NameType.user, false);
 MailboxACL.EntryKey keyAlice = new MailboxACL.EntryKey("alice", 
MailboxACL.NameType.user, false);
diff --git 
a/server/apps/distributed-app/src/test/java/org/apache/james/CassandraCacheQueryTest.java
 
b/server/apps/distributed-app/src/test/java/org/apache/james/CassandraCacheQueryTest.java
index 54ebcaae8e..f67644828f 100644
--- 
a/server/apps/distributed-app/src/test/java/org/apache/james/CassandraCacheQueryTest.java
+++ 
b/server/apps/distributed-app/src/test/java/org/apache/james/CassandraCacheQueryTest.java
@@ -141,7 +141,7 @@ class CassandraCacheQueryTest {
 @Test
 void cacheShouldBeRead() {
 assertThat(statementRecorder.listExecutedStatements(
-
StatementRecorder.Selector.preparedStatementStartingWith("SELECT * FROM 
blob_cache")))
+
StatementRecorder.Selector.preparedStatementStartingWith("SELECT data FROM 
blob_cache")))
 .isNotEmpty();
 }
 


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] 13/15: [PERF] Quota: avoid streaming where possible

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 033d7bdecc942e3fd75146a50bd0f169d7c37d35
Author: Benoit Tellier 
AuthorDate: Mon Dec 5 14:52:58 2022 +0700

[PERF] Quota: avoid streaming where possible
---
 .../api/src/main/java/org/apache/james/mailbox/model/Quota.java| 7 +++
 .../main/java/org/apache/james/mailbox/quota/MaxQuotaManager.java  | 1 -
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Quota.java 
b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Quota.java
index 5d1ed44d78..8f64fbb83f 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Quota.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Quota.java
@@ -18,9 +18,8 @@
  /
 package org.apache.james.mailbox.model;
 
-import java.util.Arrays;
-import java.util.List;
 import java.util.Map;
+import java.util.stream.Stream;
 
 import org.apache.james.core.quota.QuotaLimitValue;
 import org.apache.james.core.quota.QuotaUsageValue;
@@ -37,8 +36,8 @@ public class Quota, U extends 
QuotaUsageValue
 User
 }
 
-public static List allScopes() {
-return Arrays.asList(Quota.Scope.User, Quota.Scope.Domain, 
Quota.Scope.Global);
+public static Stream allScopes() {
+return Stream.of(Quota.Scope.User, Quota.Scope.Domain, 
Quota.Scope.Global);
 }
 
 public static ,  U extends QuotaUsageValue> Builder builder() {
diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/MaxQuotaManager.java 
b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/MaxQuotaManager.java
index 0e30eecb2d..367f79fec2 100644
--- 
a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/MaxQuotaManager.java
+++ 
b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/MaxQuotaManager.java
@@ -128,7 +128,6 @@ public interface MaxQuotaManager {
 
 default Optional getMaxStorage(Map maxStorageDetails) {
 return Quota.allScopes()
-.stream()
 .map(maxStorageDetails::get)
 .filter(Objects::nonNull)
 .findFirst();


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] 02/15: [PERF] Adopt CqlIdentifier within server/data/data-cassandra

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 51582169c5b8e6248585974fc7a2e630cca57955
Author: Benoit Tellier 
AuthorDate: Tue Nov 1 09:01:37 2022 +0700

[PERF] Adopt CqlIdentifier within server/data/data-cassandra
---
 .../james/domainlist/cassandra/CassandraDomainList.java  |  9 +
 .../domainlist/cassandra/tables/CassandraDomainsTable.java   |  4 +++-
 .../rrt/cassandra/tables/CassandraMappingsSourcesTable.java  |  8 +---
 .../sieve/cassandra/tables/CassandraSieveActiveTable.java|  8 +---
 .../cassandra/tables/CassandraSieveClusterQuotaTable.java|  6 --
 .../sieve/cassandra/tables/CassandraSieveQuotaTable.java |  6 --
 .../sieve/cassandra/tables/CassandraSieveSpaceTable.java |  6 --
 .../james/sieve/cassandra/tables/CassandraSieveTable.java| 12 +++-
 .../james/user/cassandra/tables/CassandraUserTable.java  | 12 +++-
 9 files changed, 44 insertions(+), 27 deletions(-)

diff --git 
a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
 
b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
index 015eb8abbc..3440be908d 100644
--- 
a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
+++ 
b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
@@ -38,6 +38,7 @@ import org.apache.james.domainlist.lib.AbstractDomainList;
 
 import com.datastax.oss.driver.api.core.CqlSession;
 import com.datastax.oss.driver.api.core.cql.PreparedStatement;
+import com.datastax.oss.driver.api.core.type.codec.TypeCodecs;
 
 public class CassandraDomainList extends AbstractDomainList {
 private final CassandraAsyncExecutor executor;
@@ -73,7 +74,7 @@ public class CassandraDomainList extends AbstractDomainList {
 @Override
 protected List getDomainListInternal() throws DomainListException {
 return executor.executeRows(readAllStatement.bind())
-.map(row -> Domain.of(row.getString(DOMAIN)))
+.map(row -> Domain.of(row.get(0, TypeCodecs.TEXT)))
 .collectList()
 .block();
 }
@@ -81,7 +82,7 @@ public class CassandraDomainList extends AbstractDomainList {
 @Override
 protected boolean containsDomainInternal(Domain domain) throws 
DomainListException {
 return executor.executeSingleRowOptional(readStatement.bind()
-.setString(DOMAIN, domain.asString()))
+.set(DOMAIN, domain.asString(), TypeCodecs.TEXT))
 .block()
 .isPresent();
 }
@@ -89,7 +90,7 @@ public class CassandraDomainList extends AbstractDomainList {
 @Override
 public void addDomain(Domain domain) throws DomainListException {
 boolean executed = executor.executeReturnApplied(insertStatement.bind()
-.setString(DOMAIN, domain.asString()))
+.set(DOMAIN, domain.asString(), TypeCodecs.TEXT))
 .block();
 if (!executed) {
 throw new DomainListException(domain.name() + " already exists.");
@@ -99,7 +100,7 @@ public class CassandraDomainList extends AbstractDomainList {
 @Override
 public void doRemoveDomain(Domain domain) throws DomainListException {
 boolean executed = executor.executeReturnApplied(removeStatement.bind()
-.setString(DOMAIN, domain.asString()))
+.set(DOMAIN, domain.asString(), TypeCodecs.TEXT))
 .block();
 if (!executed) {
 throw new DomainListException(domain.name() + " was not found");
diff --git 
a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/tables/CassandraDomainsTable.java
 
b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/tables/CassandraDomainsTable.java
index 451346785a..2313516a9f 100644
--- 
a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/tables/CassandraDomainsTable.java
+++ 
b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/tables/CassandraDomainsTable.java
@@ -19,8 +19,10 @@
 
 package org.apache.james.domainlist.cassandra.tables;
 
+import com.datastax.oss.driver.api.core.CqlIdentifier;
+
 public interface CassandraDomainsTable {
 String TABLE_NAME = "domains";
 
-String DOMAIN = "domain";
+CqlIdentifier DOMAIN = CqlIdentifier.fromCql("domain");
 }
diff --git 
a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/tables/CassandraMappingsSourcesTable.java
 
b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/tables/CassandraMappingsSourcesTable.java
index 81a3c3103f..0161b3f890 100644
--- 

[james-project] 08/15: [PERF] Remove logger call in LockLessConcurrencyLimitingRequestThrottler

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 9389ca477fd5ffc901e7c5c4971b9ae6c88fc56f
Author: Benoit Tellier 
AuthorDate: Thu Nov 24 13:34:07 2022 +0700

[PERF] Remove logger call in LockLessConcurrencyLimitingRequestThrottler

~10% CPU when submitting Cassandra requests, for a trace call reasonably 
not used in production.
---
 .../utils/LockLessConcurrencyLimitingRequestThrottler.java  | 6 --
 1 file changed, 6 deletions(-)

diff --git 
a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/LockLessConcurrencyLimitingRequestThrottler.java
 
b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/LockLessConcurrencyLimitingRequestThrottler.java
index 54f1b6d6c4..af3cc408e4 100644
--- 
a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/LockLessConcurrencyLimitingRequestThrottler.java
+++ 
b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/LockLessConcurrencyLimitingRequestThrottler.java
@@ -69,18 +69,14 @@ public class LockLessConcurrencyLimitingRequestThrottler 
implements RequestThrot
 public void register(Throttled request) {
 int requestNumber = concurrentRequests.incrementAndGet();
 if (closed) {
-LOG.trace("[{}] Rejecting request after shutdown", logPrefix);
 fail(request, "The session is shutting down");
 } else if (requestNumber < maxConcurrentRequests) {
 // We have capacity for one more concurrent request
-LOG.trace("[{}] Starting newly registered request", logPrefix);
 request.onThrottleReady(false);
 } else if (requestNumber < maxQueueSize + maxConcurrentRequests) {
-LOG.trace("[{}] Enqueuing request", logPrefix);
 queue.add(request);
 } else {
 concurrentRequests.decrementAndGet();
-LOG.trace("[{}] Rejecting request because of full queue", 
logPrefix);
 fail(
 request,
 String.format(
@@ -105,7 +101,6 @@ public class LockLessConcurrencyLimitingRequestThrottler 
implements RequestThrot
 if (!closed) {
 if (queue.remove(request)) { // The request timed out before it 
was active
 concurrentRequests.decrementAndGet();
-LOG.trace("[{}] Removing timed out request from the queue", 
logPrefix);
 } else {
 onRequestDone();
 }
@@ -117,7 +112,6 @@ public class LockLessConcurrencyLimitingRequestThrottler 
implements RequestThrot
 concurrentRequests.decrementAndGet();
 Throttled throttled = queue.poll();
 if (throttled != null) {
-LOG.trace("[{}] Starting dequeued request", logPrefix);
 throttled.onThrottleReady(true);
 // don't touch concurrentRequests since we finished one but 
started another
 }


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org



[james-project] 07/15: [PERF] Adopt CqlIdentifier within cassandra blob store

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit c5a3958e8f0b462cfa49e0b012674b2b5d420705
Author: Benoit Tellier 
AuthorDate: Wed Nov 2 16:27:14 2022 +0700

[PERF] Adopt CqlIdentifier within cassandra blob store
---
 .../apache/james/blob/cassandra/BlobTables.java| 32 --
 .../cassandra/cache/CassandraBlobStoreCache.java   |  5 ++--
 .../blob/cassandra/cache/CachedBlobStoreTest.java  |  3 +-
 3 files changed, 22 insertions(+), 18 deletions(-)

diff --git 
a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/BlobTables.java
 
b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/BlobTables.java
index 09a6823911..11ca1d40f0 100644
--- 
a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/BlobTables.java
+++ 
b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/BlobTables.java
@@ -19,40 +19,42 @@
 
 package org.apache.james.blob.cassandra;
 
+import com.datastax.oss.driver.api.core.CqlIdentifier;
+
 public interface BlobTables {
 
 interface DefaultBucketBlobTable {
 String TABLE_NAME = "blobs";
-String ID = "id";
-String NUMBER_OF_CHUNK = "position";
+CqlIdentifier ID = CqlIdentifier.fromCql("id");
+CqlIdentifier NUMBER_OF_CHUNK = CqlIdentifier.fromCql("position");
 }
 
 interface DefaultBucketBlobParts {
 String TABLE_NAME = "blobParts";
-String ID = "id";
-String CHUNK_NUMBER = "chunkNumber";
-String DATA = "data";
+CqlIdentifier ID = CqlIdentifier.fromCql("id");
+CqlIdentifier CHUNK_NUMBER = CqlIdentifier.fromCql("chunkNumber");
+CqlIdentifier DATA = CqlIdentifier.fromCql("data");
 }
 
 interface BucketBlobTable {
 String TABLE_NAME = "blobsInBucket";
-String BUCKET = "bucket";
-String ID = "id";
-String NUMBER_OF_CHUNK = "position";
+CqlIdentifier BUCKET = CqlIdentifier.fromCql("bucket");
+CqlIdentifier ID = CqlIdentifier.fromCql("id");
+CqlIdentifier NUMBER_OF_CHUNK = CqlIdentifier.fromCql("position");
 }
 
 interface BucketBlobParts {
 String TABLE_NAME = "blobPartsInBucket";
-String BUCKET = "bucket";
-String ID = "id";
-String CHUNK_NUMBER = "chunkNumber";
-String DATA = "data";
+CqlIdentifier BUCKET = CqlIdentifier.fromCql("bucket");
+CqlIdentifier ID = CqlIdentifier.fromCql("id");
+CqlIdentifier CHUNK_NUMBER = CqlIdentifier.fromCql("chunkNumber");
+CqlIdentifier DATA = CqlIdentifier.fromCql("data");
 }
 
 interface BlobStoreCache {
 String TABLE_NAME = "blob_cache";
-String ID = "id";
-String DATA = "data";
-String TTL_FOR_ROW = "ttl";
+CqlIdentifier ID = CqlIdentifier.fromCql("id");
+CqlIdentifier DATA = CqlIdentifier.fromCql("data");
+CqlIdentifier TTL_FOR_ROW = CqlIdentifier.fromCql("ttl");
 }
 }
diff --git 
a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/cache/CassandraBlobStoreCache.java
 
b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/cache/CassandraBlobStoreCache.java
index 8d66ccc8bc..cdfd3d3d47 100644
--- 
a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/cache/CassandraBlobStoreCache.java
+++ 
b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/cache/CassandraBlobStoreCache.java
@@ -45,6 +45,7 @@ import com.datastax.oss.driver.api.core.CqlSession;
 import com.datastax.oss.driver.api.core.config.DriverExecutionProfile;
 import com.datastax.oss.driver.api.core.cql.PreparedStatement;
 import com.datastax.oss.driver.api.core.cql.Row;
+import com.datastax.oss.driver.api.core.type.codec.TypeCodecs;
 import com.google.common.annotations.VisibleForTesting;
 
 import reactor.core.publisher.Mono;
@@ -75,7 +76,7 @@ public class CassandraBlobStoreCache implements 
BlobStoreCache {
 .build());
 
 this.selectStatement = session.prepare(selectFrom(TABLE_NAME)
-.all()
+.column(DATA)
 .whereColumn(ID).isEqualTo(bindMarker(ID))
 .build());
 
@@ -130,7 +131,7 @@ public class CassandraBlobStoreCache implements 
BlobStoreCache {
 }
 
 private byte[] toByteArray(Row row) {
-ByteBuffer byteBuffer = row.getByteBuffer(DATA);
+ByteBuffer byteBuffer = row.get(0, TypeCodecs.BLOB);
 assert byteBuffer != null;
 byte[] data = new byte[byteBuffer.remaining()];
 byteBuffer.get(data);
diff --git 
a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java
 
b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java
index f7a20799ba..c273a25316 100644
--- 

[james-project] branch master updated (7153ee2277 -> e3904e5dab)

2022-12-06 Thread btellier
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git


from 7153ee2277 Bump commons-net from 3.8.0 to 3.9.0 (#1351)
 new 6f33b2c336 [PERF] Adopt CqlIdentifier in mailbox/cassandra
 new 51582169c5 [PERF] Adopt CqlIdentifier within server/data/data-cassandra
 new baede3f6cc [PERF] Adopt CqlIdentifier within 
server/data/data-jmap-cassandra
 new dc3af39311 [PERF] Adopt CqlIdentifier within backend-commons/cassandra
 new 6ff79b0142 [PERF] Adopt CqlIdentifier within eventsourcing-cassandra
 new db5cd2366d [PERF] Adopt CqlIdentifier within eventbus-cassandra
 new c5a3958e8f [PERF] Adopt CqlIdentifier within cassandra blob store
 new 9389ca477f [PERF] Remove logger call in 
LockLessConcurrencyLimitingRequestThrottler
 new f4f3d35fb1 [PERF] Increase forked process timeout for mailbox/cassandra
 new 10ffe70792 [PERF] Fix tests that was timing out
 new 63d865dda3 [PERF] Improve Cassandra rows interpretation in 
mailbox/cassandra
 new 64c6fb24a4 [PERF] Improve Cassandra rows interpretation in 
mailbox/cassandra
 new 033d7bdecc [PERF] Quota: avoid streaming where possible
 new faafc02dd4 [PERF] Continue improve mailbox/cassandra row reading
 new e3904e5dab [PERF] Allow disabling SERIAL read for non critical 
UID/ModSeq read operations

The 15 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../init/CassandraZonedDateTimeModule.java |   5 +-
 .../init/configuration/CassandraConfiguration.java |  44 +++-
 ...ockLessConcurrencyLimitingRequestThrottler.java |   6 --
 .../table/CassandraSchemaVersionTable.java |   8 +-
 .../CassandraEventDeadLettersGroupTable.java   |   4 +-
 .../tables/CassandraEventDeadLettersTable.java |   8 +-
 .../cassandra/CassandraEventStoreTable.scala   |   8 +-
 .../eventstore/cassandra/EventStoreDao.scala   |   7 +-
 .../java/org/apache/james/mailbox/model/Quota.java |   7 +-
 .../james/mailbox/quota/MaxQuotaManager.java   |   1 -
 mailbox/cassandra/pom.xml  |   1 +
 .../mailbox/cassandra/mail/CassandraACLDAOV2.java  |   3 +-
 .../cassandra/mail/CassandraApplicableFlagDAO.java |   4 +-
 .../cassandra/mail/CassandraDeletedMessageDAO.java |   7 +-
 .../cassandra/mail/CassandraFirstUnseenDAO.java|  14 ++-
 .../cassandra/mail/CassandraMailboxCounterDAO.java |   3 +-
 .../cassandra/mail/CassandraMailboxDAO.java|  16 ++-
 .../cassandra/mail/CassandraMailboxPathV3DAO.java  |  17 +--
 .../cassandra/mail/CassandraMailboxRecentsDAO.java |   8 +-
 .../cassandra/mail/CassandraMessageDAO.java|   7 +-
 .../cassandra/mail/CassandraMessageDAOV3.java  |  84 +++
 .../cassandra/mail/CassandraMessageIdDAO.java  | 119 -
 .../mail/CassandraMessageIdToImapUidDAO.java   |  49 -
 .../cassandra/mail/CassandraModSeqProvider.java|  27 +++--
 .../mailbox/cassandra/mail/CassandraThreadDAO.java |  19 ++--
 .../cassandra/mail/CassandraThreadLookupDAO.java   |  19 ++--
 .../cassandra/mail/CassandraUidProvider.java   |  25 +++--
 .../mailbox/cassandra/mail/FlagsExtractor.java |  15 ++-
 .../cassandra/mail/utils/MailboxBaseTupleUtil.java |   2 +-
 .../cassandra/modules/CassandraMailboxModule.java  |   4 +-
 .../cassandra/modules/CassandraMessageModule.java  |   4 +-
 .../mailbox/cassandra/table/CassandraACLTable.java |   8 +-
 .../cassandra/table/CassandraACLV2Table.java   |   8 +-
 .../cassandra/table/CassandraAnnotationTable.java  |  14 +--
 .../table/CassandraApplicableFlagTable.java|   6 +-
 .../table/CassandraAttachmentMessageIdTable.java   |  10 +-
 .../table/CassandraAttachmentOwnerTable.java   |   7 +-
 .../table/CassandraAttachmentV2Table.java  |  16 +--
 .../cassandra/table/CassandraCurrentQuota.java |   8 +-
 .../table/CassandraDeletedMessageTable.java|   6 +-
 .../cassandra/table/CassandraDomainMaxQuota.java   |   8 +-
 .../cassandra/table/CassandraFirstUnseenTable.java |   6 +-
 .../cassandra/table/CassandraGlobalMaxQuota.java   |   8 +-
 .../table/CassandraMailboxCountersTable.java   |   8 +-
 .../cassandra/table/CassandraMailboxPathTable.java |  34 --
 .../table/CassandraMailboxPathV2Table.java |  36 ---
 .../table/CassandraMailboxPathV3Table.java |  14 +--
 .../table/CassandraMailboxRecentsTable.java|   6 +-
 .../cassandra/table/CassandraMailboxTable.java |  15 +--
 .../mailbox/cassandra/table/CassandraMaxQuota.java |   8 +-
 .../cassandra/table/CassandraMessageIdTable.java   |  12 +--
 .../cassandra/table/CassandraMessageIds.java   |  11 +-
 .../table/CassandraMessageModseqTable.java |   6 +-
 

[GitHub] [james-project] chibenwa merged pull request #1285: Adopt CQL identifier in Cassandra projects

2022-12-06 Thread GitBox


chibenwa merged PR #1285:
URL: https://github.com/apache/james-project/pull/1285


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org