A quick code ..




import java.util.HashMap;

import java.util.concurrent.BlockingQueue;

import java.util.concurrent.LinkedBlockingQueue;

import java.util.concurrent.ThreadPoolExecutor;

import java.util.concurrent.TimeUnit;


import com.tinkerpop.blueprints.Vertex;

import com.tinkerpop.blueprints.impls.orient.OrientBaseGraph;

import com.tinkerpop.blueprints.impls.orient.OrientGraphFactory;

import com.tinkerpop.blueprints.impls.orient.OrientGraphNoTx;

import com.tinkerpop.blueprints.impls.orient.OrientVertex;


public class TestConnection

{


 private static final String url = "remote:localhost/testdb";

private static final String user = "admin";

private static final String pass = "admin";


 OrientGraphFactory graphFactory;


 private static final ThreadLocal<OrientGraphNoTx> graphNoTx = 
newThreadLocal<OrientGraphNoTx>();

private int counter = 0;


 public TestConnection()

{

graphFactory = new OrientGraphFactory(url, user, pass);

}


 public OrientGraphNoTx getDB()

{

if (graphNoTx.get() == null)

{

graphNoTx.set(graphFactory.getNoTx());

}


 return graphNoTx.get();

}


 public synchronized String getId()

{

counter++;

return "ID: " + counter;

}


 public Vertex query(OrientBaseGraph graph, String uuid)

{

Vertex ret = null;


 Object rec = graph.getRawGraph().getMetadata().getIndexManager().getIndex(
"TestNode.index").get(uuid);


 if (rec != null)

{

ret = graph.getVertex(rec);

}


 return ret;

}


 public Vertex saveNode(OrientBaseGraph graph)

{

String id = this.getId();


 Vertex v = query(graph, id);

if (v == null)

{

HashMap<String, Object> prop = new HashMap<String, Object>();


 prop.put("uuid", id);

prop.put("createTime", System.currentTimeMillis());

prop.put("updateTime", System.currentTimeMillis());

v = graph.addVertex("class:TestNode", prop);


 }


 return v;

}


 public static void main(String[] args)

{

final TestConnection tc = new TestConnection();

BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<Runnable>();


 ThreadPoolExecutor tp = new ThreadPoolExecutor(10, 40, 30, TimeUnit.SECONDS, 
workQueue);


 for (int count = 0; count < 1000; count++)

{

System.out.println("Running : " + count);


 if (tp.getActiveCount() > 40)

{

try

{

Thread.sleep(100);

} catch (InterruptedException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}


 }


 Thread t = new Thread()

{

public void run()

{

OrientGraphNoTx graph = tc.getDB();


 OrientVertex v1 = (OrientVertex) tc.saveNode(graph);

OrientVertex v2 = (OrientVertex) tc.saveNode(graph);

v1.addEdge(null, v2, "CONNECT");

graph.shutdown();


 }


 };


 tp.execute(t);


 }


 }


 }


On Monday, March 17, 2014 11:52:10 AM UTC-4, Dodong Juan wrote:
>
> yes .. 1.7-rc2 ..
> I will create a test case ..
>
> On Monday, March 17, 2014 11:40:39 AM UTC-4, Andrey Lomakin wrote:
>>
>> I would appreciate if you provide test case.
>> You use 1.7-rc2, right ?
>>
>>
>> On Mon, Mar 17, 2014 at 5:34 PM, Dodong Juan <[email protected]> wrote:
>>
>>> In my case, If I do shutdown on the graph, I get an exception of 
>>> IllegalStateException: Database is closed.
>>>
>>> This is 
>>>
>>>
>>> On Monday, March 17, 2014 7:24:22 AM UTC-4, Andrey Lomakin wrote:
>>>
>>>> You should use shutdown as usual to put connection back to the pool.
>>>> And call close only during application shutdown.
>>>>
>>>>
>>>> On Mon, Mar 17, 2014 at 1:14 PM, <[email protected]> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> A have implemented a connection pool based on this: 
>>>>> http://www.orientechnologies.com/new-orientdb-graph-factory/
>>>>>
>>>>>    OrientGraphFactory factory = new 
>>>>> OrientGraphFactory("plocal:/var/www/data/" 
>>>>> + tenant).setupPool(1, 10);
>>>>>    ...
>>>>>    OrientGraph graph = factory.getTx();
>>>>>
>>>>> The documentation implies that calling factory.close() to free 
>>>>> resources, can that that right?
>>>>>
>>>>> Should I not be able to close/return one graph (graph.close() / 
>>>>> graph.release()) at a time?
>>>>>
>>>>> Thank you,
>>>>>   -Stefán
>>>>>
>>>>> -- 
>>>>>
>>>>> --- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "OrientDB" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to [email protected].
>>>>>
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>>
>>>>
>>>> -- 
>>>> Best regards,
>>>> Andrey Lomakin.
>>>>
>>>> Orient Technologies
>>>> the Company behind OrientDB
>>>>
>>>>   -- 
>>>
>>> --- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "OrientDB" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> -- 
>> Best regards,
>> Andrey Lomakin.
>>
>> Orient Technologies
>> the Company behind OrientDB
>>
>> 

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to