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.