Just from my head.
tx = graphdb.beginTransaction();
try {
Node lockNode = graphdb.getReferenceNode(); // or another node that is used
for locking this unique index
lockNode.removeProperty("__non_existent_property__");
index=graphdb.index().forNodes("unique-name");
Node user = index.get("name",name).getSingle();
if (user==null) {
user=graphdb.createNode();
user.setProperty("name",name);
index.add(user,"name",name);
}
tx.success();
} finally {
tx.finish();
}
Am 07.08.2011 um 17:40 schrieb etc1:
> Not sure I understand this:
> A consistent, but hackish, attempt to acquire a cluster-wide lock is to
> remove a non-existent node; what does this mean, exactly; code sample?
>
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On
> Behalf Of etc3
> Sent: Thursday, July 07, 2011 11:49 AM
> To: 'Neo4j user discussions'
> Subject: Re: [Neo4j] Unique Constaint on Index
>
> I'm new to this framework, is there an example that demonstrates removing a
> non-existent property and how it would be used in this context?
>
> Thanks
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On
> Behalf Of Chris Gioran
> Sent: Thursday, July 07, 2011 11:04 AM
> To: Neo4j user discussions
> Subject: Re: [Neo4j] Unique Constaint on Index
>
> Hi,
>
> the ability to acquire locks cluster-wide exists, albeit in an ad hoc
> fashion. Grabbing a write lock on the node you want to ensure is uniquely
> indexed will ensure that the operations are serialized across all cluster
> members.
> The most simple way to get that lock currently is the (somewhat hackish but
> entirely correct) removal of a non-existing property.
>
> cheers,
> CG
>
> On Thu, Jul 7, 2011 at 5:53 PM, etc3 <[email protected]> wrote:
>> How do I ensure another request is not performing the same operation
>> on another node in the cluster?
>>
>>
>> -----Original Message-----
>> From: [email protected]
>> [mailto:[email protected]] On Behalf Of Marko Rodriguez
>> Sent: Thursday, July 07, 2011 10:35 AM
>> To: Neo4j user discussions
>> Subject: Re: [Neo4j] Unique Constaint on Index
>>
>> Hi,
>>
>>> We are testing Neo4J and need to support unique emails across all
>>> users. Is this possible with the current API?
>>
>> You can add such a constraint when updating the indices:
>>
>> if(index.get('email', address).hasNext()) {
>> throw new RuntimeException("There are two nodes that share the same
>> email address."); } else {
>> index.put('email', address, node);
>> }
>>
>> Marko.
>>
>> http://markorodriguez.com
>> _______________________________________________
>> Neo4j mailing list
>> [email protected]
>> https://lists.neo4j.org/mailman/listinfo/user
>>
>> _______________________________________________
>> Neo4j mailing list
>> [email protected]
>> https://lists.neo4j.org/mailman/listinfo/user
>>
> _______________________________________________
> Neo4j mailing list
> [email protected]
> https://lists.neo4j.org/mailman/listinfo/user
>
> _______________________________________________
> Neo4j mailing list
> [email protected]
> https://lists.neo4j.org/mailman/listinfo/user
>
> _______________________________________________
> Neo4j mailing list
> [email protected]
> https://lists.neo4j.org/mailman/listinfo/user
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user