You only need one ClientCache in each JVM.  You can create the cache and region 
once and then pass it to each worker thread.

Anthony

> On Jan 22, 2019, at 1:25 AM, Philippe CEROU <philippe.ce...@gfi.fr> wrote:
> 
> Hi,
>  
> We try to tune a single program using multi-threading for storage interface.
>  
> The problem we have is if we launch this code with THREADS=1 then all run 
> well, starting with THREADS=2 then we always have this exception when we 
> create connection (On yellow row).
>  
> Exception in thread "main" java.lang.IllegalStateException: Existing cache's 
> default pool was not compatible
>         at 
> org.apache.geode.internal.cache.GemFireCacheImpl.validatePoolFactory(GemFireCacheImpl.java:2933)
>         at 
> org.apache.geode.cache.client.ClientCacheFactory.basicCreate(ClientCacheFactory.java:252)
>         at 
> org.apache.geode.cache.client.ClientCacheFactory.create(ClientCacheFactory.java:213)
>         at 
> com.gfi.rt.lib.database.connectors.nosql.CxDrvGEODE.DoConnect(CxDrvGEODE.java:35)
>         at com.gfi.rt.lib.database.connectors.CxObj.DoConnect(CxObj.java:121)
>         at 
> com.gfi.rt.lib.database.connectors.CxInterface.Connect(CxInterface.java:91)
>         at 
> com.gfi.rt.lib.database.connectors.CxInterface.Connect(CxInterface.java:149)
>        ...
>  
> Here is the data interface code.
>  
> package com.gfi.rt.lib.database.connectors.nosql;
>  
> import java.util.HashMap;
> import org.apache.geode.cache.Region;
> import org.apache.geode.cache.client.ClientCache;
> import org.apache.geode.cache.client.ClientCacheFactory;
> import org.apache.geode.cache.client.ClientRegionShortcut;
> import org.apache.geode.pdx.ReflectionBasedAutoSerializer;
>  
> public class CxDrvGEODEThread extends CxObjNOSQL {
>        ClientCache oCache = null;
>        boolean IsConnected = false;
>  
>        // Connexion
>  
>        public CxDrvGEODEThread() {
>              Connector = "geode-native";
>        }
>  
>        public void DoConnect() {
>              if (!IsConnected) {
>                     ReflectionBasedAutoSerializer rbas = 
> newReflectionBasedAutoSerializer("com.gfi.rt.lib.database.connectors.nosql.CxDrvGEODERow");
>                     oCache = new 
> ClientCacheFactory().addPoolLocator(this.GetNode(), 
> Integer.valueOf(this.Port)).set("log-level", 
> "WARN").setPdxSerializer(rbas).create();
>                     IsConnected = true;
>              }
>        }
>  
>        // Déconnexion de la connexion courante à la base de données
>  
>        public void DoClose() {
>              if (oCache != null) {
>                     oCache.close();
>                     oCache = null;
>                     IsConnected = false;
>              }
>        }
>  
>        // Insertion de données
>  
>        public boolean TableInsert(String CTable, String[][] TColumns, 
> Object[][] TOValues,boolean BCommit, boolean BForceBlocMode) {
>              boolean BResult = false;
>              final HashMap<Long, CxDrvGEODERow> mrows = new HashMap<Long, 
> CxDrvGEODERow>();
>  
>              ...
>  
>              if (!mrows.isEmpty()) {
>                            Region<Long, CxDrvGEODERow> oRegion = 
> oCache.<Long, 
> CxDrvGEODERow>createClientRegionFactory(ClientRegionShortcut.PROXY).create(this.Base
>  + '-' +CTable);
>                     if (oRegion != null) {
>                            oRegion.putAll(mrows);
>                            oRegion.close();
>                     }
>              }
>              mrows.clear();
>              BResult = true;
>              return BResult;
>        }
> }
>  
> Note that cluster, disk stores, regions and indexes are pre-created on GEODE.
>  
> Every thread is isolated and create its own CxDrvGEODEThread class instance 
> and do « DoConnect » à N x « TableInsert » à « DoClose ».
>  
> Here is a master thread class call example:
>  
>         private DataThread launchOneDataThread(long LNbProcess, long 
> LNbLines, int LBatchSize, long LProcessID, String BenchId) {
>                 final CxObj POCX = CXI.Connect(CXO.Connector, CXO.Server, 
> CXO.Port, CXO.Base, CXO.User, CXO.Password, BTrace);
>                 final DataThread BT = new DataThread(LNbProcess, LNbLines, 
> LBatchSize, LProcessID, new DataObject(POCX, BenchId,CBenchParams, CTable));
>                 new Thread(new Runnable() {
>                         @Override
>                         public void run() {
>                                 BT.start();
>                         }
>                 }).start();
>                 return BT;
>         }
>  
> I’m sure we are doing something really bad, any idea ?
>  
> Cordialement,
> 
> —
> NOTE : n/a
> —
> Gfi Informatique
> Philippe Cerou
> Architecte & Expert Système
> GFI Production / Toulouse
> philippe.cerou @gfi.fr
> —
> 1 Rond-point du Général Eisenhower, 31400 Toulouse
> Tél. : +33 (0)5.62.85.11.55 <tel:+33%205.62.85.11.55>
> Mob. : +33 (0)6.03.56.48.62 <tel:+33%206.03.56.48.62>
> www.gfi.world 
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.gfi.world_&d=DwMGaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=oRx8X40ShLlxiIIYBg-SFkQ_Kkw5Ic3lnhtwLgN9ZDw&m=RcNF18aqobgQeYlr2MylGZVq9m8pf_sDuSY067gLjIw&s=FWqgfwPtqmvASPXsAuq88CoAzZiF9wRuQJEpXArZ4kg&e=>
>  
> — 
> <image001.png> 
> <https://urldefense.proofpoint.com/v2/url?u=https-3A__www.facebook.com_gfiinformatique&d=DwMGaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=oRx8X40ShLlxiIIYBg-SFkQ_Kkw5Ic3lnhtwLgN9ZDw&m=RcNF18aqobgQeYlr2MylGZVq9m8pf_sDuSY067gLjIw&s=Y-m_AcPqNYz6oz5orp1rMZS_KdYRmbcUsFvj6AaIprI&e=>
>  <image002.png> 
> <https://urldefense.proofpoint.com/v2/url?u=https-3A__twitter.com_gfiinformatique&d=DwMGaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=oRx8X40ShLlxiIIYBg-SFkQ_Kkw5Ic3lnhtwLgN9ZDw&m=RcNF18aqobgQeYlr2MylGZVq9m8pf_sDuSY067gLjIw&s=j3b0MNZZlpcvogNg2pC9MD6B9rhKXj5Et-YiHqfZogE&e=>
>  <image003.png> 
> <https://urldefense.proofpoint.com/v2/url?u=https-3A__www.instagram.com_gfiinformatique_&d=DwMGaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=oRx8X40ShLlxiIIYBg-SFkQ_Kkw5Ic3lnhtwLgN9ZDw&m=RcNF18aqobgQeYlr2MylGZVq9m8pf_sDuSY067gLjIw&s=3j79LCFW1Ey72TkJcMHwsFK0o2vO38fQDFbO0VH6pEY&e=>
>  <image004.png> 
> <https://urldefense.proofpoint.com/v2/url?u=https-3A__www.linkedin.com_company_gfi-2Dinformatique&d=DwMGaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=oRx8X40ShLlxiIIYBg-SFkQ_Kkw5Ic3lnhtwLgN9ZDw&m=RcNF18aqobgQeYlr2MylGZVq9m8pf_sDuSY067gLjIw&s=KbOBhON1qk5FcAwwRtRODcOxwfHcNCIPYk_ql-LwSdA&e=>
>  <image005.png> 
> <https://urldefense.proofpoint.com/v2/url?u=https-3A__www.youtube.com_user_GFIinformatique&d=DwMGaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=oRx8X40ShLlxiIIYBg-SFkQ_Kkw5Ic3lnhtwLgN9ZDw&m=RcNF18aqobgQeYlr2MylGZVq9m8pf_sDuSY067gLjIw&s=0T27NgqJxc1Lb1q71yM7mDATuZJEXuClx1sqm3E3RRI&e=>
> —
> <image006.jpg> 
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.gfi.world_&d=DwMGaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=oRx8X40ShLlxiIIYBg-SFkQ_Kkw5Ic3lnhtwLgN9ZDw&m=RcNF18aqobgQeYlr2MylGZVq9m8pf_sDuSY067gLjIw&s=FWqgfwPtqmvASPXsAuq88CoAzZiF9wRuQJEpXArZ4kg&e=>

Reply via email to