Created
April 30, 2013 14:45
-
-
Save ableasdale/5489191 to your computer and use it in GitHub Desktop.
"read-after-write" Cluster XCC Example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.marklogic; | |
import com.marklogic.xcc.*; | |
import java.net.URI; | |
import java.util.UUID; | |
public class Main { | |
public static void main(String[] args) throws Exception { | |
ContentSource src = ContentSourceFactory.newContentSource(new URI("xcc://name:password@host1:port")); | |
ContentSource dest = ContentSourceFactory.newContentSource(new URI("xcc://name:password@host2:port")); | |
for (int i = 1; i <= 10; i++){ | |
String id = UUID.randomUUID().toString(); | |
String insertDocumentQuery = "xdmp:document-insert(\""+id+"\", <ok/>)"; | |
System.out.println("----------------- START OF INSERT / READ CYCLE ("+i+") -----------------"); | |
// Insert | |
Session session = src.newSession(); | |
Request request = session.newAdhocQuery(insertDocumentQuery); | |
System.out.println("First host timestamp before document is inserted: \t" + session.getCurrentServerPointInTime()); | |
session.submitRequest(request); | |
System.out.println("First host timestamp after document is inserted: \t" + session.getCurrentServerPointInTime()); | |
session.close(); | |
// Read | |
Session session2 = dest.newSession(); | |
System.out.println("Second host timestamp before document is read: \t\t" + session2.getCurrentServerPointInTime()); | |
Request request2 = session2.newAdhocQuery("doc(\""+id+"\")"); | |
ResultSequence rs2 = session2.submitRequest(request2); | |
if(! rs2.asString().contains("<ok/>")) { | |
System.out.println("WARNING: Immediate read failed; performing an immediate retry"); | |
Session session3 = dest.newSession(); | |
Request request3 = session3.newAdhocQuery("doc(\""+id+"\")"); | |
System.out.println("Second host timestamp for read retry: \t\t" + session3.getCurrentServerPointInTime()); | |
ResultSequence rs3 = session3.submitRequest(request3); | |
System.out.println("Result Sequence below:\n"+rs3.asString()); | |
session3.close(); | |
} | |
System.out.println("------------------ END OF INSERT / READ CYCLE ("+i+") ------------------"); | |
session2.close(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment