From 2aa7721e35efe6bedfa51b2fc6952726ae011233 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 4 Jan 2017 14:58:31 +0100 Subject: [PATCH] Introduce Jackrabbit clustering --- demo/argeo_node_cluster_0.properties | 39 +++++++++ demo/argeo_node_cluster_1.properties | 39 +++++++++ dep/org.argeo.dep.cms.sdk/pom.xml | 10 +++ .../cms/internal/kernel/JackrabbitType.java | 2 +- .../cms/internal/kernel/NodeDeployConfig.java | 1 + .../argeo/cms/internal/kernel/RepoConf.java | 4 +- .../internal/kernel/RepositoryBuilder.java | 41 +++++---- .../kernel/repository-postgresql_cluster.xml | 87 +++++++++++++++++++ ...ql-ds.xml => repository-postgresql_ds.xml} | 0 9 files changed, 202 insertions(+), 21 deletions(-) create mode 100644 demo/argeo_node_cluster_0.properties create mode 100644 demo/argeo_node_cluster_1.properties create mode 100644 org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-postgresql_cluster.xml rename org.argeo.cms/src/org/argeo/cms/internal/kernel/{repository-postgresql-ds.xml => repository-postgresql_ds.xml} (100%) diff --git a/demo/argeo_node_cluster_0.properties b/demo/argeo_node_cluster_0.properties new file mode 100644 index 000000000..f5e33445b --- /dev/null +++ b/demo/argeo_node_cluster_0.properties @@ -0,0 +1,39 @@ +argeo.osgi.start.2.node=\ +org.eclipse.equinox.http.servlet,\ +org.eclipse.equinox.http.jetty,\ +org.eclipse.equinox.metatype,\ +org.eclipse.equinox.cm,\ +org.eclipse.rap.rwt.osgi + +argeo.osgi.start.3.node=\ +org.argeo.cms + +argeo.osgi.start.4.apps=\ +org.eclipse.gemini.blueprint.extender + +argeo.osgi.start.4.workbench=\ +org.eclipse.equinox.http.registry,\ + +org.osgi.framework.security=osgi +java.security.policy=file:../../all.policy + +argeo.node.repo.type=postgresql_cluster +argeo.node.repo.clusterId=03233754-16c3-49a1-8a00-58bf89a65182 +argeo.node.repo.dburl=jdbc:postgresql://localhost/argeo_node_cluster +argeo.node.repo.dbuser=argeo +argeo.node.repo.dbpassword=argeo + +# HTTP +org.osgi.service.http.port=7070 + +# i18n +argeo.i18n.locales=en,fr,ru +eclipse.registry.MultiLanguage=true +#argeo.i18n.defaultLocale=en + +# Logging +log4j.configuration=file:../../log4j.properties + +# DON'T CHANGE BELOW +org.eclipse.rap.workbenchAutostart=false +org.eclipse.equinox.http.jetty.autostart=false \ No newline at end of file diff --git a/demo/argeo_node_cluster_1.properties b/demo/argeo_node_cluster_1.properties new file mode 100644 index 000000000..89c76fe75 --- /dev/null +++ b/demo/argeo_node_cluster_1.properties @@ -0,0 +1,39 @@ +argeo.osgi.start.2.node=\ +org.eclipse.equinox.http.servlet,\ +org.eclipse.equinox.http.jetty,\ +org.eclipse.equinox.metatype,\ +org.eclipse.equinox.cm,\ +org.eclipse.rap.rwt.osgi + +argeo.osgi.start.3.node=\ +org.argeo.cms + +argeo.osgi.start.4.apps=\ +org.eclipse.gemini.blueprint.extender + +argeo.osgi.start.4.workbench=\ +org.eclipse.equinox.http.registry,\ + +org.osgi.framework.security=osgi +java.security.policy=file:../../all.policy + +argeo.node.repo.type=postgresql_cluster +argeo.node.repo.clusterId=52463fa3-2917-4814-9ff7-685c41cbc7c7 +argeo.node.repo.dburl=jdbc:postgresql://localhost/argeo_node_cluster +argeo.node.repo.dbuser=argeo +argeo.node.repo.dbpassword=argeo + +# HTTP +org.osgi.service.http.port=7071 + +# i18n +argeo.i18n.locales=en,fr,ru +eclipse.registry.MultiLanguage=true +#argeo.i18n.defaultLocale=en + +# Logging +log4j.configuration=file:../../log4j.properties + +# DON'T CHANGE BELOW +org.eclipse.rap.workbenchAutostart=false +org.eclipse.equinox.http.jetty.autostart=false \ No newline at end of file diff --git a/dep/org.argeo.dep.cms.sdk/pom.xml b/dep/org.argeo.dep.cms.sdk/pom.xml index d21ce0b3a..b699c835a 100644 --- a/dep/org.argeo.dep.cms.sdk/pom.xml +++ b/dep/org.argeo.dep.cms.sdk/pom.xml @@ -76,6 +76,16 @@ org.argeo.tp.sdk org.tmatesoft.svnkit + + + + org.argeo.tp.misc + org.postgresql.postgresql + + + org.argeo.tp.misc + org.h2 + diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/JackrabbitType.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/JackrabbitType.java index b10fd4e49..2e0c371e0 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/JackrabbitType.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/JackrabbitType.java @@ -2,5 +2,5 @@ package org.argeo.cms.internal.kernel; /** The available Jackrabbit node types */ public enum JackrabbitType { - localfs, h2, postgresql, postgresql_ds, memory; + localfs, h2, postgresql, postgresql_ds,postgresql_cluster, memory; } diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeDeployConfig.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeDeployConfig.java index 2f4af2eae..39ca0b34c 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeDeployConfig.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeDeployConfig.java @@ -23,6 +23,7 @@ import org.argeo.naming.LdifParser; import org.argeo.naming.LdifWriter; import org.argeo.node.NodeConstants; +@Deprecated class NodeDeployConfig { private final String BASE = "ou=deploy,ou=node"; private final Path path; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepoConf.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepoConf.java index b039db590..111c86c4a 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepoConf.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepoConf.java @@ -32,7 +32,9 @@ enum RepoConf implements EnumAD { /** Search cache size */ searchCacheSize(1000), /** Max volatile index size */ - maxVolatileIndexSize(1048576); + maxVolatileIndexSize(1048576), + /** Cluster id (if appropriate configuration) */ + clusterId("default"); /** The default value. */ private Object def; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryBuilder.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryBuilder.java index 9bd81211e..f866c2b99 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryBuilder.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryBuilder.java @@ -55,25 +55,26 @@ class RepositoryBuilder { InputStream in = null; try { final String base = "/org/argeo/cms/internal/kernel"; - switch (type) { - case h2: - in = cl.getResourceAsStream(base + "/repository-h2.xml"); - break; - case postgresql: - in = cl.getResourceAsStream(base + "/repository-postgresql.xml"); - break; - case postgresql_ds: - in = cl.getResourceAsStream(base + "/repository-postgresql-ds.xml"); - break; - case memory: - in = cl.getResourceAsStream(base + "/repository-memory.xml"); - break; - case localfs: - in = cl.getResourceAsStream(base + "/repository-localfs.xml"); - break; - default: - throw new ArgeoJcrException("Unsupported node type " + type); - } +// switch (type) { +// case h2: +// in = cl.getResourceAsStream(base + "/repository-h2.xml"); +// break; +// case postgresql: +// in = cl.getResourceAsStream(base + "/repository-postgresql.xml"); +// break; +// case postgresql_ds: +// in = cl.getResourceAsStream(base + "/repository-postgresql-ds.xml"); +// break; +// case memory: +// in = cl.getResourceAsStream(base + "/repository-memory.xml"); +// break; +// case localfs: +// in = cl.getResourceAsStream(base + "/repository-localfs.xml"); +// break; +// default: +// throw new ArgeoJcrException("Unsupported node type " + type); +// } + in = cl.getResourceAsStream(base + "/repository-"+type.name()+".xml"); if (in == null) throw new ArgeoJcrException("Repository configuration not found"); @@ -152,6 +153,8 @@ class RepositoryBuilder { setProp(props, RepoConf.dbpassword, ""); break; case postgresql: + case postgresql_ds: + case postgresql_cluster: dburl = "jdbc:postgresql://localhost/demo"; setProp(props, RepoConf.dburl, dburl); setProp(props, RepoConf.dbuser, "argeo"); diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-postgresql_cluster.xml b/org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-postgresql_cluster.xml new file mode 100644 index 000000000..d8c23e733 --- /dev/null +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-postgresql_cluster.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-postgresql-ds.xml b/org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-postgresql_ds.xml similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-postgresql-ds.xml rename to org.argeo.cms/src/org/argeo/cms/internal/kernel/repository-postgresql_ds.xml -- 2.30.2