I assume in your second thread that you call factory.getTx() before calling
graph.addVertex() and graph isn't cached beforehand.
Is that accurate?
You said that if you restart the application it works. Do you mean if you
restart the application and just execute the second thread's task (in other
words you're not calling alter class again)?
Just trying to clarify the situation.
Thanks,
-Colin
On Friday, April 17, 2015 at 4:16:47 AM UTC-5, Zaraka wrote:
>
> So I have two threads that works with Database.
> Both threads have opened database in OrientGraphFactory (database is
> opened once at program start in both threads)
> new OrientGraphFactory(host, user, password).setupPool(1, 10);
>
> In first thread I create clusters by code like this
> OrientGraph graph = factory.getTx();
> try {
> project.vertexTransaction(graph);
>
> //Vertices clusters
> new OCommandSQL(
> "ALTER CLASS Resource ADDCLUSTER " +
> DatabaseClasses.RESOURCE.getName() + project.getCluster()
> ).execute();
> //... more code like this
>
> } finally {
> graph.shutdown();
> }
> The second thread is actually a Java Service and executes its code
> seconds/minutes/hours later after this command is finished I pass cluster
> names to this thread so it knows which clusters it should use.
>
>
> Dne Ätvrtek 16. dubna 2015 23:50:51 UTC+2 Colin napsal(a):
>>
>> Hi Zaraka,
>>
>> When you create the vertex in the completely different thread do you do
>> this immediately after you create the new cluster? You had mentioned
>> seeing it in OrientDB Studio, so it appears that the different thread
>> executes much later.
>>
>> How do you synchronize the threads so that the create vertex thread knows
>> when the cluster has been created?
>>
>> How are you obtaining the OrientGraph object in each thread?
>>
>> Thanks,
>>
>> -Colin
>>
>> Orient Technologies
>>
>> The Company behind OrientDB
>>
>>
>>
>>
>> On Thursday, April 16, 2015 at 4:34:52 PM UTC-5, Zaraka wrote:
>>>
>>> Hello,
>>>
>>> I'm using orientdb-community-2.0.6 graph mode
>>>
>>> My problem:
>>> 1) At one place in code a create a new cluster by command
>>> ALTER CLASS X ADDCLUSTER X_CLUSTER
>>> 2) I see new cluster in OrientDB Studio
>>> 3) Then I try to create a vertex in that cluster (in completely
>>> different thread)
>>> OrientVertex vertex = graph.addVertex(X,X_CLUSTER);
>>> But I got
>>> SEVERE: java.lang.IllegalArgumentException: Cluster name 'X_CLUSTER'
>>> (id=26) is not configured to store the class 'X', valid are [11, 20]
>>> at
>>> com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:2266)
>>> at
>>> com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:118)
>>> at
>>> com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1706)
>>> at
>>> com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1702)
>>> at
>>> com.tinkerpop.blueprints.impls.orient.OrientElement.save(OrientElement.java:303)
>>> at
>>> com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.addVertex(OrientBaseGraph.java:617)
>>>
>>> When I restart my program and try it second time it works.
>>>
>>> Kindly please, what did I messed up?
>>>
>>
--
---
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.