Skip to content

Instantly share code, notes, and snippets.

@ableasdale
Created April 30, 2013 14:45
Show Gist options
  • Save ableasdale/5489191 to your computer and use it in GitHub Desktop.
Save ableasdale/5489191 to your computer and use it in GitHub Desktop.
"read-after-write" Cluster XCC Example
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