2015-10-14 1 views
0

Ok, j'essaie de décoder un document rtf codé en base64 dans MarkLogic.pas assez de mémoire transformant base64 rtf doc en xml?

xquery version "1.0-ml"; 

declare namespace cdm = "http://example.nl/cdm/1.2"; 

let $inh := <cdm:inhoud> 

Large base64 encoded RTF doc here 

</cdm:inhoud> 
let $pv   := $inh/text() 
(: 
let $decodedDoc := document {xdmp:document-filter(text{ xdmp:base64-decode($pv) })} 
:) 
return document {xdmp:document-filter(text{ xdmp:base64-decode($pv) })} 

-je obtenir cette erreur:

SVC-PROCESSRUN: xdmp:document-filter(text{"{\rtf1\ansi\ansicpg1252\uc1\deff1{\fonttbl&#13;&#10;{\f0\fnil\fc..."}) -- Process run error: fork: Cannot allocate memory 

Courir seulement

xdmp:base64-decode($pv) 

décode le fichier rtf mais vraiment désordre ...

Est-ce que mon serveur pas assez de mémoire?

+0

le problème est maintenant disparu, le décodage fonctionne à nouveau. Aucune idée de ce qui a causé cela ... un gros fichier de log error.txt pourrait-il avoir quelque chose à voir avec ça? –

Répondre

0

Je pense que le problème est principalement que vous forcez MarkLogic à conserver toute la chaîne décodée ainsi que le résultat filtré en mémoire. Cela serait utile si vous n'aviez pas besoin de décoder dans ce code, et de chercher un document ou un corps de requête directement dans le filtre de document. N'enveloppez pas non plus le résultat du filtre de document dans un constructeur de document. Il renvoie déjà un noeud de document.

HTH!