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