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 b6bdfa0703a6c22e6836bf142fef5579763681a6
Author: Benoit Tellier <btell...@linagora.com>
AuthorDate: Fri Jun 30 21:49:36 2023 +0700

    JAMES-3924 Allow conditional Cassandra statement recording
    
    Upon massive operations, recording all statements leads to OOM
---
 .../apache/james/backends/cassandra/StatementRecorder.java |  8 ++++++--
 .../apache/james/backends/cassandra/TestingSession.java    | 14 +++++++++++++-
 .../james/backends/cassandra/TestingSessionTest.java       |  6 +++---
 3 files changed, 22 insertions(+), 6 deletions(-)

diff --git 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/StatementRecorder.java
 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/StatementRecorder.java
index 443ff02e07..840f7799bc 100644
--- 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/StatementRecorder.java
+++ 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/StatementRecorder.java
@@ -52,14 +52,18 @@ public class StatementRecorder {
         List<Statement> select(List<Statement> statements);
     }
 
+    private final StatementRecorder.Selector selector;
     private final ConcurrentLinkedDeque statements;
 
-    public StatementRecorder() {
+    StatementRecorder(Selector selector) {
+        this.selector = selector;
         statements = new ConcurrentLinkedDeque();
     }
 
     void recordStatement(Statement statement) {
-        statements.add(statement);
+        if (statements.addAll(selector.select(ImmutableList.of(statement)))) {
+            System.out.println("recordStatement");
+        }
     }
 
     public List<Statement> listExecutedStatements() {
diff --git 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSession.java
 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSession.java
index 4b9e23545e..7ca271592a 100644
--- 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSession.java
+++ 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSession.java
@@ -69,8 +69,20 @@ public class TestingSession implements Session {
         this.scenario = Scenario.combine(hooks);
     }
 
-    public void recordStatements(StatementRecorder statementRecorder) {
+    public StatementRecorder recordStatements(StatementRecorder 
statementRecorder) {
         this.statementRecorder = Optional.of(statementRecorder);
+        return statementRecorder;
+    }
+
+
+    public StatementRecorder recordStatements() {
+        return recordStatements(StatementRecorder.Selector.ALL);
+    }
+
+    public StatementRecorder recordStatements(StatementRecorder.Selector 
selector) {
+        StatementRecorder statementRecorder = new StatementRecorder(selector);
+        this.statementRecorder = Optional.of(statementRecorder);
+        return statementRecorder;
     }
 
     public void stopRecordingStatements() {
diff --git 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSessionTest.java
 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSessionTest.java
index e6cd6073cf..4b1e93d999 100644
--- 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSessionTest.java
+++ 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSessionTest.java
@@ -89,7 +89,7 @@ class TestingSessionTest {
 
     @Test
     void recordStatementsShouldKeepTraceOfExecutedStatement(CassandraCluster 
cassandra) {
-        StatementRecorder statementRecorder = new StatementRecorder();
+        StatementRecorder statementRecorder = new 
StatementRecorder(Selector.ALL);
         cassandra.getConf().recordStatements(statementRecorder);
 
         dao.getCurrentSchemaVersion().block();
@@ -101,7 +101,7 @@ class TestingSessionTest {
 
     @Test
     void recordStatementsShouldKeepTraceOfExecutedStatements(CassandraCluster 
cassandra) {
-        StatementRecorder statementRecorder = new StatementRecorder();
+        StatementRecorder statementRecorder = new 
StatementRecorder(Selector.ALL);
         cassandra.getConf().recordStatements(statementRecorder);
 
         dao.updateVersion(new SchemaVersion(36)).block();
@@ -118,7 +118,7 @@ class TestingSessionTest {
     void 
recordStatementsShouldNotKeepTraceOfExecutedStatementsBeforeRecording(CassandraCluster
 cassandra) {
         dao.getCurrentSchemaVersion().block();
 
-        StatementRecorder statementRecorder = new StatementRecorder();
+        StatementRecorder statementRecorder = new 
StatementRecorder(Selector.ALL);
         cassandra.getConf().recordStatements(statementRecorder);
 
         assertThat(statementRecorder.listExecutedStatements())


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

Reply via email to