We’re having quite a bit of trouble with ELBs in AWS.  There is an ELB in 
front of the service/app nodes, and another ELB between them and the three node 
MarkLogic cluster.

   We’ve had problems with the ELB in front of ML marking nodes down if they 
are not responsive enough, which results in 504 responses on calls to ML after 
that.  We’ve had to crank up the timeouts to fairly high levels to avoid one 
slow query from causing subsequent queries to fail.

   That’s annoying but manageable.  What’s really problematic is apparent data 
corruption when using XCC, specifically CORB.

   For most calls to MarkLogic, we’re using our bespoke REST interface using 
URL rewriting on an HTTP appserver.  We don’t use XCC normally.  But we’re 
doing some one time batch reprocessing with CORB.  Pointing CORB at one of the 
E-nodes works fine.  But if we point it at the ELB (which works fine for the 
REST calls) then we randomly get failures like the one below.

   Since I originally wrote XCC, I know that this error message is the result 
of the data stream being out of sync with what XCC is expecting to see.  It’s 
looking for a sub-header in the partitioned response that describes the XDM 
type of the next result item.  It’s seeing something else instead.

   Are there known issues with ELBs and XCC/XDBC and/or CORB?  Is there an ELB 
setting get around this?  I have a feeling that the ELB may be munging the 
response in some way that is tripping up XCC.

   Any help appreciated.

=======

INFO: monitoring 1,171,599 tasks
Jun 30, 2016 3:35:23 PM com.marklogic.developer.corb.Manager populateQueue
INFO: received first uri: 
urn:cambridge.org:id:content-bundle:S0360966900011993:version:1
2016-06-30 15:35:23.454 SEVERE [1] (StreamingResultSequence.next): IOException 
instantiating ResultItem 240: Nodes of type 'rsion' are not supported in XCC 
result sequences
 java.io.IOException: Nodes of type 'rsion' are not supported in XCC result 
sequences
        
com.marklogic.xcc.impl.AbstractResultSequence.nodeFactory(AbstractResultSequence.java:248)
        
com.marklogic.xcc.impl.AbstractResultSequence.instantiateResultItem(AbstractResultSequence.java:202)
        
com.marklogic.xcc.impl.StreamingResultSequence.next(StreamingResultSequence.java:147)
        
com.marklogic.xcc.impl.StreamingResultSequence.next(StreamingResultSequence.java:166)
        
com.marklogic.developer.corb.QueryUrisLoader.next(QueryUrisLoader.java:158)
        com.marklogic.developer.corb.Manager.populateQueue(Manager.java:719)
        com.marklogic.developer.corb.Manager.run(Manager.java:472)
        com.marklogic.developer.corb.Manager.main(Manager.java:162)
Jun 30, 2016 3:35:23 PM com.marklogic.developer.corb.Manager stop
INFO: cleaning up
Jun 30, 2016 3:35:23 PM com.marklogic.developer.corb.QueryUrisLoader close
INFO: closing uris session
Jun 30, 2016 3:35:23 PM com.marklogic.developer.corb.Monitor run
SEVERE: interrupted: exiting
java.lang.InterruptedException
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2088)
        at 
java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
        at 
java.util.concurrent.ExecutorCompletionService.poll(ExecutorCompletionService.java:202)
        at com.marklogic.developer.corb.Monitor.monitorResults(Monitor.java:96)
        at com.marklogic.developer.corb.Monitor.run(Monitor.java:75)
        at java.lang.Thread.run(Thread.java:745)

2016-06-30 15:35:23.475 WARNING [10] (AbstractRequestController.runRequest): 
Cannot obtain connection: null
 java.nio.channels.ClosedByInterruptException
        
java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
        sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:659)
        java.nio.channels.SocketChannel.open(SocketChannel.java:189)
        
com.marklogic.xcc.impl.SocketPoolProvider.obtainConnection(SocketPoolProvider.java:93)
        
com.marklogic.xcc.impl.handlers.AbstractRequestController.runRequest(AbstractRequestController.java:85)
        
com.marklogic.xcc.impl.SessionImpl.submitRequestInternal(SessionImpl.java:437)
        com.marklogic.xcc.impl.SessionImpl.submitRequest(SessionImpl.java:432)
        
com.marklogic.developer.corb.AbstractTask.invokeModule(AbstractTask.java:233)
        com.marklogic.developer.corb.AbstractTask.call(AbstractTask.java:148)
        com.marklogic.developer.corb.AbstractTask.call(AbstractTask.java:56)
        java.util.concurrent.FutureTask.run(FutureTask.java:266)
        java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        java.util.concurrent.FutureTask.run(FutureTask.java:266)
        
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        java.lang.Thread.run(Thread.java:745)
Jun 30, 2016 3:35:23 PM com.marklogic.developer.corb.AbstractTask 
handleRequestException
WARNING: Encountered ServerConnectionException from Marklogic Server. Retrying 
attempt 1 after 60 seconds..: null at URI: 
urn:cambridge.org:id:content-bundle:S0360966900011993:version:1

---
Ron Hitchens {[email protected]}  +44 7879 358212

_______________________________________________
General mailing list
[email protected]
Manage your subscription at: 
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to