Thanks Kirk,
I've tried your code. Which was very similar to what I have:
new LocatorLauncher.Builder()
.setBindAddress(TRANSPORT_IP.get())
.setPort(LOCATOR_PORT.get())
.setWorkingDirectory("/opt/ccio/geode/locator")
.build()
.start();
new ServerLauncher.Builder()
.setServerBindAddress(TRANSPORT_IP.get())
.setServerPort(TRANSPORT_PORT.get())
.setWorkingDirectory("/opt/ccio/geode/server")
.build()
.start();
So, all I was missing is
.set("locators", LOCATORS.get())
for Server Launcher.
But as soon as I've added it, I've started getting exception:
Exception in thread "main" java.lang.IllegalStateException: A connection to
a distributed system already exists in this VM. It has the following
configuration:
ack-severe-alert-threshold="0"
ack-wait-threshold="15"
archive-disk-space-limit="0"
archive-file-size-limit="0"
async-distribution-timeout="0"
async-max-queue-size="8"
async-queue-timeout="60000"
bind-address=""
cache-xml-file="" ***(wanted "cache.xml")***
cluster-configuration-dir="/Users/es/git/ccio/ccio-image"
cluster-ssl-ciphers="any"
cluster-ssl-enabled="false"
cluster-ssl-keystore=""
cluster-ssl-keystore-password=""
cluster-ssl-keystore-type=""
cluster-ssl-protocols="any"
cluster-ssl-require-authentication="true"
cluster-ssl-truststore=""
cluster-ssl-truststore-password=""
conflate-events="server"
conserve-sockets="true"
delta-propagation="true"
deploy-working-dir="."
disable-auto-reconnect="false"
disable-tcp="false"
distributed-system-id="-1"
distributed-transactions="false"
durable-client-id=""
durable-client-timeout="300"
enable-cluster-configuration="true"
enable-network-partition-detection="false"
enable-time-statistics="false"
enforce-unique-host="false"
gateway-ssl-ciphers="any"
gateway-ssl-enabled="false"
gateway-ssl-keystore=""
gateway-ssl-keystore-password=""
gateway-ssl-keystore-type=""
gateway-ssl-protocols="any"
gateway-ssl-require-authentication="true"
gateway-ssl-truststore=""
gateway-ssl-truststore-password=""
groups=""
http-service-bind-address=""
http-service-port="7070"
http-service-ssl-ciphers="any"
http-service-ssl-enabled="false"
http-service-ssl-keystore=""
http-service-ssl-keystore-password=""
http-service-ssl-keystore-type=""
http-service-ssl-protocols="any"
http-service-ssl-require-authentication="false"
http-service-ssl-truststore=""
http-service-ssl-truststore-password=""
jmx-manager="true" ***(wanted "false")***
jmx-manager-access-file=""
jmx-manager-bind-address=""
jmx-manager-hostname-for-clients=""
jmx-manager-http-port="7070"
jmx-manager-password-file=""
jmx-manager-port="1099"
jmx-manager-ssl="false"
jmx-manager-ssl-ciphers="any"
jmx-manager-ssl-enabled="false"
jmx-manager-ssl-keystore=""
jmx-manager-ssl-keystore-password=""
jmx-manager-ssl-keystore-type=""
jmx-manager-ssl-protocols="any"
jmx-manager-ssl-require-authentication="true"
jmx-manager-ssl-truststore=""
jmx-manager-ssl-truststore-password=""
jmx-manager-start="false"
jmx-manager-update-rate="2000"
load-cluster-configuration-from-dir="false"
locator-wait-time="0"
locators="10.36.76.221[9300]" ***(wanted "localhost[9300]")***
lock-memory="false"
log-disk-space-limit="50"
log-file="/opt/ccio/geode/logs/geode.log"
log-file-size-limit="10"
log-level="config"
max-num-reconnect-tries="3"
max-wait-time-reconnect="60000"
mcast-address="/239.192.81.1"
mcast-flow-control="1048576, 0.25, 5000"
mcast-port="0"
mcast-recv-buffer-size="1048576"
mcast-send-buffer-size="65535"
mcast-ttl="32"
member-timeout="5000"
membership-port-range="[1024,65535]"
memcached-bind-address=""
memcached-port="0"
memcached-protocol="ASCII"
name=""
off-heap-memory-size=""
redis-bind-address=""
redis-password=""
redis-port="0"
redundancy-zone=""
remote-locators=""
remove-unresponsive-client="false"
roles=""
security-=""
security-client-accessor=""
security-client-accessor-pp=""
security-client-auth-init=""
security-client-authenticator=""
security-client-dhalgo=""
security-log-file=""
security-log-level="config"
security-peer-auth-init=""
security-peer-authenticator=""
security-peer-verifymember-timeout="1000"
server-bind-address=""
server-ssl-ciphers="any"
server-ssl-enabled="false"
server-ssl-keystore=""
server-ssl-keystore-password=""
server-ssl-keystore-type=""
server-ssl-protocols="any"
server-ssl-require-authentication="true"
server-ssl-truststore=""
server-ssl-truststore-password=""
socket-buffer-size="32768"
socket-lease-time="60000"
ssl-ciphers="any"
ssl-enabled="false"
ssl-protocols="any"
ssl-require-authentication="true"
start-dev-rest-api="false"
start-locator=""
statistic-archive-file=""
statistic-sample-rate="1000"
statistic-sampling-enabled="true"
tcp-port="0"
udp-fragment-size="60000"
udp-recv-buffer-size="1048576"
udp-send-buffer-size="65535"
use-cluster-configuration="true"
user-command-packages=""
at
com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.validateSameProperties(InternalDistributedSystem.java:2890)
at
com.gemstone.gemfire.distributed.DistributedSystem.connect(DistributedSystem.java:1628)
at com.gemstone.gemfire.cache.CacheFactory.create(CacheFactory.java:224)
at
com.gemstone.gemfire.distributed.ServerLauncher.startWithGemFireApi(ServerLauncher.java:822)
at
com.gemstone.gemfire.distributed.ServerLauncher.start(ServerLauncher.java:718)
at ccio.image.ImageServer.main(ImageServer.java:80)
This exception happens on start of the ServerLauncher.
And without "locators" property it worked.
Do you have any idea why this could be?
Thanks,
Eugene
On Wed, Apr 20, 2016 at 7:10 PM, Kirk Lund <[email protected]> wrote:
> Hi Eugene,
>
> You can run a server and a locator on the same machine or even in the same
> process.
>
> Distributed system properties (see javadocs on DistributedSystem [1]):
> locators -- use this to specify one or more locators
> start-locator -- use this to embed a locator in a server process
>
> Launcher APIs:
> LocatorLauncher.Builder.set(String, String) and
> ServerLauncher.Builder.set(String, String) can be used to set any
> distributed system properties:
> new ServerLauncher.Builder().setMemberName("myname").set("locators",
> value).build().start();
>
> System Properties:
> Simply prepend any distributed system property with "gemfire." and it can
> be specified via a system property.
> a) Java API: System.setProperty("gemfire.locators", value);
> b) Java command-line: -Dgemfire.locators=value
> c) gfsh start command: --J-Dgemfire.locators=value
>
> CacheFactory API:
> Properties properties = new Properties();
> properties.set("locators", value);
> Cache cache = new CacheFactory(properties).create();
>
> The banner (first section) of the Geode log file will show how each
> distributed system property was specified (ie, the source of the values)
> for the Geode process.
>
> (I'm not sure if there are online geode javadocs or not so the following
> are gemfire 8.1 javadocs)
>
> [0]
> http://data-docs-samples.cfapps.io/docs-gemfire/latest/javadocs/japi/index.html
> [1]
> http://data-docs-samples.cfapps.io/docs-gemfire/latest/javadocs/japi/com/gemstone/gemfire/distributed/DistributedSystem.html
>
> -Kirk
>
>
> On Wed, Apr 20, 2016 at 1:24 PM, Eugene Strokin <[email protected]>
> wrote:
>
>> It looks like DigitalOcean does not support Multicast IP.
>> In this case, from what I understood, I should be running Locators.
>> My idea was to start a server and a locator on the same node using API
>> (ServerLauncher, LocatorLauncher).
>> My assumption, that the server will read a list of locators from
>> gemfire.properties file and register itself there.
>> If this is correct, my only question is: Can I specify the list of
>> locators via API as well? Or maybe as a system property?
>> If I'm wrong about servers registering themselves using the list of
>> locators, please point me to the right direction.
>>
>> Thanks,
>> Eugene
>>
>
>