geode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bruce Schuchardt <bschucha...@pivotal.io>
Subject Re: [PROPOSAL] Add getCache and getLocator to Launchers
Date Tue, 06 Nov 2018 19:22:50 GMT
Cool - okay, I'm convinced


On 11/2/18 6:02 PM, John Blum wrote:
> To make this example a bit more concrete for everyone else...
>
>
>
> gfsh>start server --name=*Server1* --log-level=config
> Starting a Geode Server in /Users/jblum/pivdev/lab/Server1...
> ....
> Server in /Users/jblum/pivdev/lab/Server1 on 10.99.199.7[*40404*] as
> Server1 is currently online.
> Process ID: 49850
> Uptime: 3 seconds
> Geode Version: 1.6.0
> Java Version: 1.8.0_192
> Log File: /Users/jblum/pivdev/lab/Server1/Server1.log
> JVM Arguments: -Dgemfire.default.locators=10.99.199.7[10334]
> -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true
> -Dgemfire.log-level=config -XX:OnOutOfMemoryError=kill -KILL %p
> -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true
> -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
> Class-Path:
> /Users/jblum/pivdev/apache-geode-1.6.0/lib/geode-core-1.6.0.jar:/Users/jblum/pivdev/apache-geode-1.6.0/lib/geode-dependencies.jar
>
>
>
> gfsh>show log --member=*Server1* --lines=20
> SystemLog:
>
> [info 2018/11/02 17:52:53.523 PDT Server1 <main> tid=0x1] Initialization of
> region _monitoringRegion_10.99.199.7<v1>1025 completed
>
> [info 2018/11/02 17:52:54.146 PDT Server1 <main> tid=0x1] Initialized cache
> service org.apache.geode.connectors.jdbc.internal.JdbcConnectorServiceImpl
>
> [info 2018/11/02 17:52:54.160 PDT Server1 <main> tid=0x1] Initialized cache
> service org.apache.geode.cache.lucene.internal.LuceneServiceImpl
>
> [info 2018/11/02 17:52:54.161 PDT Server1 <main> tid=0x1] Initialized cache
> service com.gemstone.gemfire.OldClientSupportProvider
>
> [info 2018/11/02 17:52:54.171 PDT Server1 <main> tid=0x1] Initializing
> region PdxTypes
>
> [info 2018/11/02 17:52:54.173 PDT Server1 <main> tid=0x1] Initialization of
> region PdxTypes completed
>
> [info 2018/11/02 17:52:54.226 PDT Server1 <main> tid=0x1] Cache server
> connection listener bound to address 10.99.199.7-0.0.0.0/0.0.0.0:40404 with
> backlog 1,000.
>
> [info 2018/11/02 17:52:54.235 PDT Server1 <main> tid=0x1]
> ClientHealthMonitorThread maximum allowed time between pings: 60,000
>
> [warning 2018/11/02 17:52:54.236 PDT Server1 <main> tid=0x1] Handshaker max
> Pool size: 4
>
> [info 2018/11/02 17:52:54.242 PDT *Server1* <main> tid=0x1] *CacheServer
> Configuration:   port=40404* max-connections=800 max-threads=0
> notify-by-subscription=true socket-buffer-size=32768
> maximum-time-between-pings=60000 maximum-message-count=230000
> message-time-to-live=180 eviction-policy=none capacity=1 overflow
> directory=. groups=[] loadProbe=ConnectionCountProbe loadPollInterval=5000
> tcpNoDelay=true
>
>
>
> gfsh>start server --name=*Server2* --log-level=config --server-port=51515
> Starting a Geode Server in /Users/jblum/pivdev/lab/Server2...
> ...
> Server in /Users/jblum/pivdev/lab/Server2 on 10.99.199.7[*51515*] as
> Server2 is currently online.
> Process ID: 49916
> Uptime: 3 seconds
> Geode Version: 1.6.0
> Java Version: 1.8.0_192
> Log File: /Users/jblum/pivdev/lab/Server2/Server2.log
> JVM Arguments: -Dgemfire.default.locators=10.99.199.7[10334]
> -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true
> -Dgemfire.log-level=config -XX:OnOutOfMemoryError=kill -KILL %p
> -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true
> -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
> Class-Path:
> /Users/jblum/pivdev/apache-geode-1.6.0/lib/geode-core-1.6.0.jar:/Users/jblum/pivdev/apache-geode-1.6.0/lib/geode-dependencies.jar
>
>
>
> gfsh>show log --member=Server2 --lines=20
> SystemLog:
>
> [info 2018/11/02 17:54:36.776 PDT Server2 <main> tid=0x1] Initialized cache
> service org.apache.geode.cache.lucene.internal.LuceneServiceImpl
>
> [info 2018/11/02 17:54:36.777 PDT Server2 <main> tid=0x1] Initialized cache
> service com.gemstone.gemfire.OldClientSupportProvider
>
> [info 2018/11/02 17:54:36.788 PDT Server2 <main> tid=0x1] Initializing
> region PdxTypes
>
> [info 2018/11/02 17:54:36.793 PDT Server2 <main> tid=0x1] Region PdxTypes
> requesting initial image from 10.99.199.7(Server1:49850)<v1>:1025
>
> [info 2018/11/02 17:54:36.797 PDT Server2 <main> tid=0x1] PdxTypes is done
> getting image from 10.99.199.7(Server1:49850)<v1>:1025. isDeltaGII is false
>
> [info 2018/11/02 17:54:36.797 PDT Server2 <main> tid=0x1] Initialization of
> region PdxTypes completed
>
> [info 2018/11/02 17:54:36.852 PDT Server2 <main> tid=0x1] Cache server
> connection listener bound to address 10.99.199.7-0.0.0.0/0.0.0.0:51515 with
> backlog 1,000.
>
> [info 2018/11/02 17:54:36.859 PDT Server2 <main> tid=0x1]
> ClientHealthMonitorThread maximum allowed time between pings: 60,000
>
> [warning 2018/11/02 17:54:36.860 PDT Server2 <main> tid=0x1] Handshaker max
> Pool size: 4
>
> [info 2018/11/02 17:54:36.867 PDT *Server2* <main> tid=0x1] *CacheServer
> Configuration:   port=51515* max-connections=800 max-threads=0
> notify-by-subscription=true socket-buffer-size=32768
> maximum-time-between-pings=60000 maximum-message-count=230000
> message-time-to-live=180 eviction-policy=none capacity=1 overflow
> directory=. groups=[] loadProbe=ConnectionCountProbe loadPollInterval=5000
> tcpNoDelay=true
>
>
>
> gfsh>start server --name=*Server3* --log-level=config
> --disable-default-server
> Starting a Geode Server in /Users/jblum/pivdev/lab/Server3...
> ....
> Server in /Users/jblum/pivdev/lab/Server3 on 10.99.199.7 as Server3 is
> currently online.
> Process ID: 49955
> Uptime: 3 seconds
> Geode Version: 1.6.0
> Java Version: 1.8.0_192
> Log File: /Users/jblum/pivdev/lab/Server3/Server3.log
> JVM Arguments: -Dgemfire.default.locators=10.99.199.7[10334]
> -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true
> -Dgemfire.log-level=config -XX:OnOutOfMemoryError=kill -KILL %p
> -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true
> -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
> Class-Path:
> /Users/jblum/pivdev/apache-geode-1.6.0/lib/geode-core-1.6.0.jar:/Users/jblum/pivdev/apache-geode-1.6.0/lib/geode-dependencies.jar
>
>
>
> gfsh>show log --member=*Server3* --lines=20
> SystemLog:
>
> [info 2018/11/02 17:55:19.144 PDT Server3 <main> tid=0x1] Region
> _monitoringRegion_10.99.199.7<v3>1027 requesting initial image from
> 10.99.199.7(Locator1:49705:locator)<ec><v0>:1024
>
> [info 2018/11/02 17:55:19.147 PDT Server3 <main> tid=0x1]
> _monitoringRegion_10.99.199.7<v3>1027 is done getting image from
> 10.99.199.7(Locator1:49705:locator)<ec><v0>:1024. isDeltaGII is false
>
> [info 2018/11/02 17:55:19.147 PDT Server3 <main> tid=0x1] Initialization of
> region _monitoringRegion_10.99.199.7<v3>1027 completed
>
> [info 2018/11/02 17:55:19.811 PDT Server3 <main> tid=0x1] Initialized cache
> service org.apache.geode.connectors.jdbc.internal.JdbcConnectorServiceImpl
>
> [info 2018/11/02 17:55:19.823 PDT Server3 <main> tid=0x1] Initialized cache
> service org.apache.geode.cache.lucene.internal.LuceneServiceImpl
>
> [info 2018/11/02 17:55:19.824 PDT Server3 <main> tid=0x1] Initialized cache
> service com.gemstone.gemfire.OldClientSupportProvider
>
> [info 2018/11/02 17:55:19.834 PDT Server3 <main> tid=0x1] Initializing
> region PdxTypes
>
> [info 2018/11/02 17:55:19.842 PDT Server3 <main> tid=0x1] Region PdxTypes
> requesting initial image from 10.99.199.7(Server2:49916)<v2>:1026
>
> [info 2018/11/02 17:55:19.846 PDT Server3 <main> tid=0x1] PdxTypes is done
> getting image from 10.99.199.7(Server2:49916)<v2>:1026. isDeltaGII is false
>
> [info 2018/11/02 17:55:19.846 PDT Server3 <main> tid=0x1] Initialization of
> region PdxTypes completed
>
>
>
> gfsh>start server --name=*Server4* --log-level=config
> --disable-default-server
> Starting a Geode Server in /Users/jblum/pivdev/lab/Server4...
> ....
> Server in /Users/jblum/pivdev/lab/Server4 on 10.99.199.7 as Server4 is
> currently online.
> Process ID: 49972
> Uptime: 3 seconds
> Geode Version: 1.6.0
> Java Version: 1.8.0_192
> Log File: /Users/jblum/pivdev/lab/Server4/Server4.log
> JVM Arguments: -Dgemfire.default.locators=10.99.199.7[10334]
> -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true
> -Dgemfire.log-level=config -XX:OnOutOfMemoryError=kill -KILL %p
> -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true
> -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
> Class-Path:
> /Users/jblum/pivdev/apache-geode-1.6.0/lib/geode-core-1.6.0.jar:/Users/jblum/pivdev/apache-geode-1.6.0/lib/geode-dependencies.jar
>
>
>
> gfsh>show log --member=*Server4* --lines=20
> SystemLog:
>
> [info 2018/11/02 17:55:48.826 PDT Server4 <main> tid=0x1] Region
> _monitoringRegion_10.99.199.7<v4>1028 requesting initial image from
> 10.99.199.7(Locator1:49705:locator)<ec><v0>:1024
>
> [info 2018/11/02 17:55:48.829 PDT Server4 <main> tid=0x1]
> _monitoringRegion_10.99.199.7<v4>1028 is done getting image from
> 10.99.199.7(Locator1:49705:locator)<ec><v0>:1024. isDeltaGII is false
>
> [info 2018/11/02 17:55:48.829 PDT Server4 <main> tid=0x1] Initialization of
> region _monitoringRegion_10.99.199.7<v4>1028 completed
>
> [info 2018/11/02 17:55:49.475 PDT Server4 <main> tid=0x1] Initialized cache
> service org.apache.geode.connectors.jdbc.internal.JdbcConnectorServiceImpl
>
> [info 2018/11/02 17:55:49.489 PDT Server4 <main> tid=0x1] Initialized cache
> service org.apache.geode.cache.lucene.internal.LuceneServiceImpl
>
> [info 2018/11/02 17:55:49.499 PDT Server4 <main> tid=0x1] Initialized cache
> service com.gemstone.gemfire.OldClientSupportProvider
>
> [info 2018/11/02 17:55:49.509 PDT Server4 <main> tid=0x1] Initializing
> region PdxTypes
>
> [info 2018/11/02 17:55:49.517 PDT Server4 <main> tid=0x1] Region PdxTypes
> requesting initial image from 10.99.199.7(Server3:49955)<v3>:1027
>
> [info 2018/11/02 17:55:49.521 PDT Server4 <main> tid=0x1] PdxTypes is done
> getting image from 10.99.199.7(Server3:49955)<v3>:1027. isDeltaGII is false
>
> [info 2018/11/02 17:55:49.521 PDT Server4 <main> tid=0x1] Initialization of
> region PdxTypes completed
>
>
>
> gfsh>list members
>    Name   | Id
> -------- | --------------------------------------------------------------
> Locator1 | 10.99.199.7(Locator1:49705:locator)<ec><v0>:1024 [Coordinator]
> Server1  | 10.99.199.7(Server1:49850)<v1>:1025
> Server2  | 10.99.199.7(Server2:49916)<v2>:1026
> Server3  | 10.99.199.7(Server3:49955)<v3>:1027
> Server4  | 10.99.199.7(Server4:49972)<v4>:1028
>
>
>
> However, if I not started Server5 using the default port (i.e. *40404*) or
> mistakenly tried to reuse port 51515, then I would get...
>
>
>
> gfsh>debug --state=ON
> Debug is ON
>
>
>
> gfsh>start server --name=*Server5* --log-level=config
> /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre/bin/java
> -server -classpath
> /Users/jblum/pivdev/apache-geode-1.6.0/lib/geode-core-1.6.0.jar:/Users/jblum/pivdev/apache-geode-1.6.0/lib/geode-dependencies.jar
> -Dgemfire.default.locators=10.99.199.7[10334]
> -Dgemfire.start-dev-rest-api=false -Dgemfire.use-cluster-configuration=true
> -Dgemfire.log-level=config -XX:OnOutOfMemoryError=kill -KILL %p
> -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true
> -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
> org.apache.geode.distributed.ServerLauncher start Server5 --debug
> --server-port=40404
> Starting a Geode Server in /Users/jblum/pivdev/lab/Server5...
> The Cache Server process terminated unexpectedly with exit status 1. Please
> refer to the log file in /Users/jblum/pivdev/lab/Server5 for full details.
>
> Exception in thread "main" java.lang.RuntimeException: An IO error occurred
> while starting a Server in /Users/jblum/pivdev/lab/Server5 on
> 10.99.199.7[40404]: Network is unreachable; port (40404) is not available
> on localhost.
>
>      at
> org.apache.geode.distributed.ServerLauncher.start(ServerLauncher.java:804)
>
>      at
> org.apache.geode.distributed.ServerLauncher.run(ServerLauncher.java:692)
>
>      at
> org.apache.geode.distributed.ServerLauncher.main(ServerLauncher.java:225)
>
> Caused by: *java.net.BindException: Network is unreachable; port (40404) is
> not available on localhost.*
>
>      at
> org.apache.geode.distributed.AbstractLauncher.assertPortAvailable(AbstractLauncher.java:129)
>
>      at
> org.apache.geode.distributed.ServerLauncher.start(ServerLauncher.java:749)
>
>      ... 2 more
>
>
> Cheers,
> -John
>
>
>
> On Fri, Nov 2, 2018 at 5:49 PM, John Blum <jblum@pivotal.io> wrote:
>
>> Damn it! Correction to my previous email...
>>
>> '--disable-default-port' should read '--disable-default-server' in my
>> *Gfsh* `start server` command examples.
>>
>> Apologies,
>> John
>>
>>
>> On Fri, Nov 2, 2018 at 5:41 PM, John Blum <jblum@pivotal.io> wrote:
>>
>>> Bruce-
>>>
>>> Regarding...
>>>
>>>> "... *but it's the AcceptorImpl thread that keeps the JVM from
>>> exiting, so I don't really agree that you can create a server with gfsh
>>> that doesn't have a CacheServer.*"
>>>
>>> Well, that is not entirely true, and the last bit is definitely not true.
>>>
>>> How do you suppose I can do this...
>>>
>>> gfsh>start server --name=Server1
>>> gfsh>start server --name=Server2 *--server-port*=51515
>>> gfsh>start server --name=Server3 *--disable-default-port*
>>> gfsh>start server --name=Server4 *--disable-default-port*
>>>
>>> ... if I could not disable the CacheServer?
>>>
>>> Clearly, Server1 starts up with the default CacheServer port, 40404.
>>> Server2 explicitly sets the CacheServer port to 51515.  And Servers 3 &
>>> 4 simply do not have CacheServers running.  If they tried to start a
>>> CacheServer, and they did NOT explicitly set the --server-port option,
>>> then Servers 3 & 4 would result in throwing a java.net.BindException.
>>>
>>> So, the ServerLauncher class "blocks" if you do not start a CacheServer
>>> instance, which would not be started if the server was started using `start
>>> server --disable-default-server`).
>>>
>>> See here [1], then here [2], and then here [3] and here [4] as well as
>>> this [5], which gets set from this [6].
>>>
>>> There is a very good reason why I know this.
>>>
>>> Regards,
>>> -John
>>>
>>>
>>> [1] https://github.com/apache/geode/blob/rel/v1.7.0/geode-co
>>> re/src/main/java/org/apache/geode/distributed/ServerLauncher.java#L705
>>> [2] https://github.com/apache/geode/blob/rel/v1.7.0/geode-co
>>> re/src/main/java/org/apache/geode/distributed/ServerLauncher
>>> .java#L906-L928
>>> [3] https://github.com/apache/geode/blob/rel/v1.7.0/geode-co
>>> re/src/main/java/org/apache/geode/distributed/ServerLauncher.java#L953
>>> [4] https://github.com/apache/geode/blob/rel/v1.7.0/geode-co
>>> re/src/main/java/org/apache/geode/distributed/ServerLauncher
>>> .java#L940-L942
>>> [5] https://github.com/apache/geode/blob/rel/v1.7.0/geode-co
>>> re/src/main/java/org/apache/geode/distributed/ServerLauncher
>>> .java#L407-L409
>>> [6] https://github.com/apache/geode/blob/rel/v1.7.0/geode-co
>>> re/src/main/java/org/apache/geode/distributed/ServerLauncher.java#L1487
>>>
>>>
>>> On Fri, Nov 2, 2018 at 3:03 PM, Bruce Schuchardt <bschuchardt@pivotal.io>
>>> wrote:
>>>
>>>> Hmm, but it's the AcceptorImpl thread that keeps the JVM from exiting,
>>>> so I don't really agree that you can create a server with gfsh that doesn't
>>>> have a CacheServer.  One's got to be created through cache.xml or something.
>>>>
>>>> Be that as it may I think the recent talk about this convinces me that
>>>> Kirk's original proposal is sound and we should go with it. Servers can be
>>>> fished out of the cache so it's not a big deal if the launcher API doesn't
>>>> have a getCacheServer method.
>>>>
>>>>
>>>> On 11/1/18 9:38 AM, John Blum wrote:
>>>>
>>>>> Well, ServerLauncher may or may not create a CacheServer instance when
>>>>> it
>>>>> starts a server.  A server can be created without a CacheServer, for
>>>>> instance, when in *Gfsh* `start server --disable-default-server` option
>>>>> is
>>>>>
>>>>> specified.
>>>>>
>>>>> In addition, you can always find or get the list of CacheServers (if
>>>>> present) from the Cache instance, using
>>>>> Cache.getCacheServers():List<CacheServer> [1].  So, I think it
would be
>>>>> better if the ServerLauncher returned a handle to the Cache and then
>>>>> drill
>>>>> down as opposed to up.
>>>>>
>>>>> -j
>>>>>
>>>>>
>>>>> [1]
>>>>> http://geode.apache.org/releases/latest/javadoc/org/apache/g
>>>>> eode/cache/Cache.html#getCacheServers--
>>>>>
>>>>>
>>>>> On Thu, Nov 1, 2018 at 7:31 AM, Bruce Schuchardt <
>>>>> bschuchardt@pivotal.io>
>>>>> wrote:
>>>>>
>>>>> I like this but it might be even better if ServerLauncher gave access
to
>>>>>> the CacheServer it launched and CacheServer gave access to its cache.
>>>>>> The
>>>>>> Locator interface, as well, could have a getCache() method and
>>>>>> deprecate
>>>>>> the getDistributedSystem() method.  These days a Locator always has
a
>>>>>> Cache
>>>>>> and no-one is interested in its DistributedSystem.
>>>>>>
>>>>>>
>>>>>> On 10/31/18 2:48 PM, Kirk Lund wrote:
>>>>>>
>>>>>> LocatorLauncher provides an API which can be used in-process to create
>>>>>>> a
>>>>>>> Locator. There is no public API on that class to get a reference
to
>>>>>>> the
>>>>>>> Locator or its Cache.
>>>>>>>
>>>>>>> Similarly, ServerLauncher provides an API which can be used
>>>>>>> in-process to
>>>>>>> create a Server, but there is no public API in that class to
get a
>>>>>>> reference to its Cache.
>>>>>>>
>>>>>>> The User of either Launcher would then have to resort to invoking
>>>>>>> singletons to get a reference to the Cache.
>>>>>>>
>>>>>>> There are existing package-private getter APIs on both Launchers
but
>>>>>>> they're only used by tests in that same package.
>>>>>>>
>>>>>>> I propose adding public APIs for getCache to both LocatorLauncher
and
>>>>>>> ServerLauncher as well as adding getLocator to LocatorLauncher.
The
>>>>>>> signatures would look like:
>>>>>>>
>>>>>>> /**
>>>>>>>     * Gets a reference to the Cache that was created by this
>>>>>>> ServerLauncher.
>>>>>>>     *
>>>>>>>     * @return a reference to the Cache
>>>>>>>     */
>>>>>>> public org.apache.geode.cache.Cache getCache();
>>>>>>>
>>>>>>> /**
>>>>>>>     * Gets a reference to the Locator that was created by this
>>>>>>> LocatorLauncher.
>>>>>>>     *
>>>>>>>     * @return a reference to the Locator
>>>>>>>     */
>>>>>>> public org.apache.geode.distributed.Locator getLocator();
>>>>>>>
>>>>>>> Any thoughts? Yay or nay?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Kirk
>>>>>>>
>>>>>>>
>>>>>>>
>>>
>>> --
>>> -John
>>> john.blum10101 (skype)
>>>
>>
>>
>> --
>> -John
>> john.blum10101 (skype)
>>
>
>


Mime
View raw message