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=>