You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2019/06/28 07:56:44 UTC

[james-project] 02/07: JAMES-2697 try to limit cassandra memory to not depend on host memory

This is an automated email from the ASF dual-hosted git repository.

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

commit ce7eb5ad2657863f0c4957765ebcb4783124baca
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Thu Mar 21 15:34:58 2019 +0100

    JAMES-2697 try to limit cassandra memory to not depend on host memory
---
 .../apache/james/backends/cassandra/DockerCassandra.java | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java
index f04a4a6..4ebe88d 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandra.java
@@ -25,6 +25,7 @@ import org.slf4j.LoggerFactory;
 import org.testcontainers.DockerClientFactory;
 import org.testcontainers.containers.GenericContainer;
 import org.testcontainers.containers.output.OutputFrame;
+import org.testcontainers.images.builder.ImageFromDockerfile;
 
 import com.github.dockerjava.api.DockerClient;
 import com.google.common.collect.ImmutableMap;
@@ -34,6 +35,10 @@ public class DockerCassandra {
     private static final Logger logger = LoggerFactory.getLogger(DockerCassandra.class);
 
     private static final int CASSANDRA_PORT = 9042;
+    private static final int CASSANDRA_MEMORY = 650;
+
+    private static final String CASSANDRA_CONFIG_DIR = "$CASSANDRA_CONFIG";
+    private static final String JVM_OPTIONS = CASSANDRA_CONFIG_DIR + "/jvm.options";
 
     private final GenericContainer<?> cassandraContainer;
     private final DockerClient client;
@@ -41,7 +46,16 @@ public class DockerCassandra {
     @SuppressWarnings("resource")
     public DockerCassandra() {
         client = DockerClientFactory.instance().client();
-        cassandraContainer = new GenericContainer<>("cassandra:3.11.3")
+        boolean doNotDeleteImageAfterUsage = false;
+        cassandraContainer = new GenericContainer<>(
+            new ImageFromDockerfile("cassandra_3_11_3", doNotDeleteImageAfterUsage)
+                .withDockerfileFromBuilder(builder ->
+                    builder
+                        .from("cassandra:3.11.3")
+                        .env("ENV CASSANDRA_CONFIG", "/etc/cassandra")
+                        .run("echo \"-Xms" + CASSANDRA_MEMORY + "M\" >> " + JVM_OPTIONS)
+                        .run("echo \"-Xmx" + CASSANDRA_MEMORY + "M\" >> " + JVM_OPTIONS)
+                        .build()))
             .withTmpFs(ImmutableMap.of("/var/lib/cassandra", "rw,noexec,nosuid,size=200m"))
             .withExposedPorts(CASSANDRA_PORT)
             .withLogConsumer(DockerCassandra::displayDockerLog);


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org