Repository: incubator-brooklyn Updated Branches: refs/heads/master b88a5ad92 -> b34a53e74
Riak startup - It starts with a ulimit configuration based on the Basho's recommentadtions Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/a495af22 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/a495af22 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/a495af22 Branch: refs/heads/master Commit: a495af22cecd2cec9a9d45a0e5f5b95c2e6ee65f Parents: 1a28193 Author: Yavor Yanchev <[email protected]> Authored: Mon Jun 15 19:29:13 2015 +0300 Committer: Yavor Yanchev <[email protected]> Committed: Tue Jun 16 16:56:21 2015 +0300 ---------------------------------------------------------------------- .../src/main/java/brooklyn/entity/nosql/riak/RiakNode.java | 7 ++++++- .../main/java/brooklyn/entity/nosql/riak/RiakNodeImpl.java | 6 ++++++ .../java/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java | 6 +++++- 3 files changed, 17 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a495af22/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNode.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNode.java b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNode.java index 23f86a9..d82c3f4 100644 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNode.java +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNode.java @@ -72,7 +72,12 @@ public interface RiakNode extends SoftwareProcess { ConfigKey<String> RIAK_CONF_ADDITIONAL_CONTENT = ConfigKeys.newStringConfigKey( "riak.riakConf.additionalContent", "Template file (in freemarker format) for setting up additional settings in the riak.conf file", ""); - + + // maxOpenFiles' default value (65536) is based on the Basho's recommendation - http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/ + @SetFromFlag("maxOpenFiles") + ConfigKey<Integer> RIAK_MAX_OPEN_FILES = ConfigKeys.newIntegerConfigKey( + "riak.max.open.files", "Number of the open files required by Riak", 65536); + @SetFromFlag("downloadUrlRhelCentos") AttributeSensorAndConfigKey<String, String> DOWNLOAD_URL_RHEL_CENTOS = ConfigKeys.newTemplateSensorAndConfigKey("download.url.rhelcentos", "URL pattern for downloading the linux RPM installer (will substitute things like ${version} automatically)", http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a495af22/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeImpl.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeImpl.java b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeImpl.java index 25484d2..dea8b87 100644 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeImpl.java +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeImpl.java @@ -43,6 +43,7 @@ import brooklyn.util.config.ConfigBag; import brooklyn.util.guava.Functionals; import brooklyn.util.time.Duration; +import com.google.common.base.Preconditions; import com.google.common.base.Function; import com.google.common.base.Functions; import com.google.common.collect.ContiguousSet; @@ -70,6 +71,11 @@ public class RiakNodeImpl extends SoftwareProcessImpl implements RiakNode { // fail fast if config files not avail Entities.getRequiredUrlConfig(this, RIAK_VM_ARGS_TEMPLATE_URL); Entities.getRequiredUrlConfig(this, RIAK_APP_CONFIG_TEMPLATE_URL); + + Integer defaultMaxOpenFiles = RIAK_MAX_OPEN_FILES.getDefaultValue(); + Integer maxOpenFiles = getConfig(RiakNode.RIAK_MAX_OPEN_FILES); + Preconditions.checkArgument(maxOpenFiles >= defaultMaxOpenFiles , "Specified number of open files : %s : is less than the required minimum", + maxOpenFiles, defaultMaxOpenFiles); } public boolean isPackageDownloadUrlProvided() { http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a495af22/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java index 9ed5ef1..856c029 100644 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/riak/RiakNodeSshDriver.java @@ -314,7 +314,7 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen if (isPackageInstall()) { commands.add(addSbinPathCommand()); - commands.add(sudo("service riak start")); + commands.add(sudo(format("sh -c \"ulimit -n %s && service riak start\"", maxOpenFiles()))); } else { // NOTE: See instructions at http://superuser.com/questions/433746/is-there-a-fix-for-the-too-many-open-files-in-system-error-on-os-x-10-7-1 // for increasing the system limit for number of open files @@ -594,4 +594,8 @@ public class RiakNodeSshDriver extends AbstractSoftwareProcessSshDriver implemen // log.warn("riak command not found on PATH. Altering future commands' environment variables from {} to {}", getShellEnvironment(), newPathVariable); scriptHelper.environmentVariablesReset(newPathVariable); } + + public Integer maxOpenFiles() { + return entity.getConfig(RiakNode.RIAK_MAX_OPEN_FILES); + } }
