You’re trying to update all of the documents in the “input” collection in a 
single transaction, the default scope of a JavaScript module. For small numbers 
of documents (hundreds or thousands) that will work. For large or unknown 
numbers of documents that will generally overwhelm some resource. In your case, 
you’ve blown out your expanded tree cache. Your best bet is to break the 
transformation into multiple transactions and spread those out over multiple 
hosts in a cluster. The MarkLogic Data Movement SDK is designed for exactly 
such workloads. Take a look at the docs 
<https://docs.marklogic.com/guide/java/data-movement#id_51555> for more 
information on how to orchestrate a bulk transformation from Java.

Justin

--
Justin Makeig
Senior Director, Product Management
MarkLogic
jmak...@marklogic.com<mailto:jmak...@marklogic.com>

On Jan 24, 2018, at 10:19 AM, C. Yaswanth 
<rocking...@gmail.com<mailto:rocking...@gmail.com>> wrote:

Hi All,

Actually i have a set of json files(i.e.Total : 1M with Size 500MB). Each json 
file has 18 Keys. I tried to implement Envelope pattern using below Javascript

    'use strict';
    declareUpdate()
    var docs = fn.collection("input");
    for(var doc of docs) {
      var transformed = {};

      transformed.Metadata = { "Last Used" : ""};
      transformed.Updated = { "University" : "UCLA"}
      transformed.Source = doc; //Sending original data under Source section
      xdmp.nodeReplace(doc,transformed)
    }

I tried invoking this `JS.sjs` using JAVA API of marklogic 9. But i encountered 
below error :

    Exception in thread "main" com.marklogic.client.FailedRequestException: 
Local message: failed to apply resource at invoke: Internal Server Error. 
Server Message: XDMP-EXPNTREECACHEFULL: for(var doc of docs) { -- Expanded tree 
cache full on host localhost uri file.json-0-968991
     at 
com.marklogic.client.impl.OkHttpServices.checkStatus(OkHttpServices.java:4317)
     at 
com.marklogic.client.impl.OkHttpServices.postIteratedResourceImpl(OkHttpServices.java:3831)
     at 
com.marklogic.client.impl.OkHttpServices.postEvalInvoke(OkHttpServices.java:3768)
     at 
com.marklogic.client.impl.ServerEvaluationCallImpl.eval(ServerEvaluationCallImpl.java:164)
     at 
com.marklogic.client.impl.ServerEvaluationCallImpl.eval(ServerEvaluationCallImpl.java:153)
     at 
com.marklogic.client.impl.ServerEvaluationCallImpl.evalAs(ServerEvaluationCallImpl.java:144)
     at bulkimport.Tsm.main(Tsm.java:19)

I went through documentation 
(i.e.https://help.marklogic.com/knowledgebase/article/View/9/16/resolving-xdmp-expntreecachefull-errors)
  where they had mentioned ways to resolve this error. Following that i had 
increased `expanded tree cache size*` to `2048` but still i am facing same 
error.

How can i optimize by above code (i.e.`JS.sjs`) to avoid this error ?

Any help is appreciated.
_______________________________________________
General mailing list
General@developer.marklogic.com<mailto:General@developer.marklogic.com>
Manage your subscription at:
http://developer.marklogic.com/mailman/listinfo/general

_______________________________________________
General mailing list
General@developer.marklogic.com
Manage your subscription at: 
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to