I maybe making some stupid question but I'm from HDFS world where I don't have to care where data's physical location is. (You just connect to Namenode and you are good.) Bear with me.
On Fri, Sep 23, 2016 at 5:26 PM, jun aoki <ja...@apache.org> wrote: > Hi Dan, thank you for sharing your insightful information. > > We only know how to get a cache from a locator as client cache. > e.g. clientCache = new ClientCacheFactory().addPoolLocator(LOCATOR_HOST, > LOCATOR_PORT).create(); > > This way, when we try to create a PROXY region, we don't know which server > we are connecting to thus we don't know which region is available to the > client. (in Goutam's case, it seems it is actually connecting to server1 > thus region1 is visible but not region2) > > Is there any way we can specify which server to connect so that under this > inconsistent configuration (each server holds different region) so that we > access to a target region appropriately? > Is this inconsistent configuration a valid configuration since it doesn't > error out at least, or it is a bad practice where Geode might not work as > we expect? > > > > On Fri, Sep 23, 2016 at 5:02 PM, Goutam Tadi <gt...@pivotal.io> wrote: > >> Thanks a lot Dan :-). >> >> Yeah, that was intentional. >> Your solution solves my problem. >> >> Thanks, >> Goutam Tadi. >> >> On Fri, Sep 23, 2016 at 4:58 PM Dan Smith <dsm...@pivotal.io> wrote: >> >> > Hi Goutam, >> > >> > It looks like you configured your two servers to have different regions. >> > Was that intentional? What's happening is that the client is connecting >> to >> > only one of the servers, which has one of your regions but not the >> other. >> > >> > Generally, when you configure gemfire servers, you should configure the >> > same regions on all servers. In this case I would put both of your >> regions >> > in the same cache.xml and use that for both servers. By default a geode >> > client will assume that all of your servers have the same regions and >> will >> > connect to one or more servers as it sees fit to minimize the number of >> > connections and reduce the number of network hops. >> > >> > If you really want to have servers that have different regions, you will >> > need to make use of the server-groups property on the server and create >> two >> > different pools on the client, using PoolFactory.setServerGroup to >> control >> > which group the client connects to. But I would say that's a less common >> > use case. >> > >> > -Dan >> > >> > On Fri, Sep 23, 2016 at 4:47 PM, Goutam Tadi <gt...@pivotal.io> wrote: >> > >> > > Hi, >> > > >> > > I was facing the *"Region not found"* exception when I do the >> following >> > on >> > > local machine (single Node) : >> > > And, I don't see the exception when I was trying to perform remote >> debug >> > > which introduced some time lapse. I tried to introduce some `sleep` , >> but >> > > of no use >> > > Can you please help and let me know what I could be possibly doing >> wrong? >> > > >> > > *Geode version: 1.0.0-incubating.M3* >> > > >> > > 1. *Start a locator : * >> > > >> > > start locator --name=testlocator --include-system-classpath >> > > >> > > >> > > 2. *Start two servers:* >> > > >> > > - start server --name=testserver1 >> > > --cache-xml-file=SITMultiServerMultiRegion1.cache.xml >> > > --locators=localhost[10334] --server-port=30303 >> > > --include-system-classpath >> > > >> > > - start server --name=testserver2 >> > > --cache-xml-file=SITMultiServerMultiRegion2.cache.xml >> > > --locators=localhost[10334] --server-port=30304 >> > > --include-system-classpath >> > > >> > > >> > > 3. *Java code to create ClientRegion and perform region.put()* >> > > >> > > private final static String LOCATOR_HOST = "localhost"; >> > > private final static int LOCATOR_PORT = 10334; >> > > >> > > clientCache = new ClientCacheFactory().addPoolLocator(LOCATOR_HOST, >> > > LOCATOR_PORT).create(); >> > > >> > > Region region1 = clientCache. >> > > createClientRegionFactory("PROXY").create(REGION1); >> > > assertNotNull(region1); >> > > >> > > Region region2 = clientCache.createClientRegionFactory(" >> > > PROXY").create(REGION2); >> > > assertNotNull(region2); >> > > >> > > region1.put("key1", "region1"); // SUCCESSFUL >> > > region2.put("key2", "region2"); // ERROR OCCURRED. >> > > >> > > >> > > 4.* Cache xmls used:* >> > > >> > > *Cache-XML- 1* >> > > >> > > <?xml version="1.0" encoding="UTF-8"?> >> > > >> > > <cache >> > > xmlns="http://schema.pivotal.io/gemfire/cache" >> > > xmlns:gpdb="http://schema.pivotal.io/gemfire/gpdb" >> > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> > > xsi:schemaLocation="http://schema.pivotal.io/gemfire/cache >> > > http://schema.pivotal.io/gemfire/cache/cache-8.1.xsd" >> > > version="8.1"> >> > > >> > > <pdx read-serialized="true" persistent="false"/> >> > > >> > > <region name="SITMultiServerMultiRegion1"> >> > > <region-attributes data-policy="partition"> >> > > <partition-attributes redundant-copies="1" /> >> > > </region> >> > > >> > > </cache> >> > > >> > > >> > > >> > > >> > > *Cache-XML- 2* >> > > >> > > <?xml version="1.0" encoding="UTF-8"?> >> > > >> > > <cache >> > > xmlns="http://schema.pivotal.io/gemfire/cache" >> > > xmlns:gpdb="http://schema.pivotal.io/gemfire/gpdb" >> > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> > > xsi:schemaLocation="http://schema.pivotal.io/gemfire/cache >> > > http://schema.pivotal.io/gemfire/cache/cache-8.1.xsd" >> > > version="8.1"> >> > > >> > > <pdx read-serialized="true" persistent="false"/> >> > > >> > > <region name="SITMultiServerMultiRegion2"> >> > > <region-attributes data-policy="partition"> >> > > <partition-attributes redundant-copies="1" /> >> > > </region> >> > > >> > > </cache> >> > > >> > > >> > > >> > > 5. *StackTrace*: >> > > >> > > >> > > com.gemstone.gemfire.cache.client.ServerOperationException: remote >> > > server on gpdb(28401:loner):45180:20c75e59: : While performing a >> > > remote put >> > > >> > > at com.gemstone.gemfire.cache.client.internal.PutOp$ >> > > PutOpImpl.processAck(PutOp.java:445) >> > > >> > > at com.gemstone.gemfire.cache.client.internal.PutOp$ >> > > PutOpImpl.processResponse(PutOp.java:355) >> > > >> > > at com.gemstone.gemfire.cache.client.internal.PutOp$ >> > > PutOpImpl.attemptReadResponse(PutOp.java:540) >> > > >> > > at com.gemstone.gemfire.cache.client.internal.AbstractOp. >> > > attempt(AbstractOp.java:378) >> > > >> > > at com.gemstone.gemfire.cache.client.internal.ConnectionImpl.ex >> ecute( >> > > ConnectionImpl.java:274) >> > > >> > > at com.gemstone.gemfire.cache.client.internal.pooling. >> > > PooledConnection.execute(PooledConnection.java:328) >> > > >> > > at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl. >> > > executeWithPossibleReAuthentication(OpExecutorImpl.java:937) >> > > >> > > at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.ex >> ecute( >> > > OpExecutorImpl.java:155) >> > > >> > > at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.ex >> ecute( >> > > OpExecutorImpl.java:110) >> > > >> > > at com.gemstone.gemfire.cache.client.internal.PoolImpl. >> > > execute(PoolImpl.java:700) >> > > >> > > at com.gemstone.gemfire.cache.client.internal.PutOp.execute( >> > > PutOp.java:102) >> > > >> > > at com.gemstone.gemfire.cache.client.internal.ServerRegionProxy >> .put( >> > > ServerRegionProxy.java:175) >> > > >> > > at com.gemstone.gemfire.internal.cache.LocalRegion.serverPut( >> > > LocalRegion.java:3173) >> > > >> > > at com.gemstone.gemfire.internal.cache.LocalRegion. >> > > cacheWriteBeforePut(LocalRegion.java:3300) >> > > >> > > at com.gemstone.gemfire.internal.cache.ProxyRegionMap.basicPut( >> > > ProxyRegionMap.java:230) >> > > >> > > at com.gemstone.gemfire.internal.cache.LocalRegion.virtualPut( >> > > LocalRegion.java:5955) >> > > >> > > at com.gemstone.gemfire.internal.cache.LocalRegionDataView. >> > > putEntry(LocalRegionDataView.java:132) >> > > >> > > at com.gemstone.gemfire.internal.cache.LocalRegion.basicPut( >> > > LocalRegion.java:5350) >> > > >> > > at com.gemstone.gemfire.internal.cache.LocalRegion. >> > > validatedPut(LocalRegion.java:1668) >> > > >> > > at com.gemstone.gemfire.internal.cache.LocalRegion.put( >> > > LocalRegion.java:1655) >> > > >> > > at com.gemstone.gemfire.internal.cache.AbstractRegion.put( >> > > AbstractRegion.java:288) >> > > >> > > at io.pivotal.gemfire.gpdb.SITSample.testMultiRegion( >> > > SITSample.java:104) >> > > >> > > Caused by: com.gemstone.gemfire.cache.RegionDestroyedException: >> Server >> > > connection from >> > > [identity(gpdb(28401:loner):45180:20c75e59,connection=1; port=45180]: >> > > Region named /SITMultiServerMultiRegion2 was not found during put >> > > request >> > > >> > > at com.gemstone.gemfire.internal.cache.tier.sockets.BaseCommand. >> > > writeRegionDestroyedEx(BaseCommand.java:642) >> > > >> > > at com.gemstone.gemfire.internal.cache.tier.sockets.command. >> > > Put65.cmdExecute(Put65.java:195) >> > > >> > > at com.gemstone.gemfire.internal.cache.tier.sockets. >> > > BaseCommand.execute(BaseCommand.java:146) >> > > >> > > at com.gemstone.gemfire.internal.cache.tier.sockets. >> > > ServerConnection.doNormalMsg(ServerConnection.java:783) >> > > >> > > at com.gemstone.gemfire.internal.cache.tier.sockets. >> > > ServerConnection.doOneMessage(ServerConnection.java:913) >> > > >> > > at com.gemstone.gemfire.internal.cache.tier.sockets. >> > > ServerConnection.run(ServerConnection.java:1180) >> > > >> > > at java.util.concurrent.ThreadPoolExecutor.runWorker( >> > > ThreadPoolExecutor.java:1142) >> > > >> > > at java.util.concurrent.ThreadPoolExecutor$Worker.run( >> > > ThreadPoolExecutor.java:617) >> > > >> > > at com.gemstone.gemfire.internal.cache.tier.sockets. >> > > AcceptorImpl$1$1.run(AcceptorImpl.java:555) >> > > >> > > at java.lang.Thread.run(Thread.java:745) >> > > >> > > >> > > >> > > Thanks, >> > > >> > > Goutam Tadi. >> > > >> > > -- >> > > Regards, >> > > *Goutam Tadi.* >> > > >> > >> -- >> Regards, >> *Goutam Tadi.* >> > > > > -- > -jun > -- -jun