I have a Data61Bpmn2Chaincode Project where there is a nodeJS server running which handle post reqeuests to chaincode API where a couchDB is also running.
I want to store a large JSON (4kb, 16KB, 128KB, 512KB, 8MB, 16MB). The first two large messages work but as i send the 128kb message i always have this
node:internal/child_process:420 throw errno Exception(err, 'spawn'); ^Error: spawn E2BIG
Error: spawn E2BIG
at ChildProcess.spawn (node:internal/child_process:420:11)
at spawn (node:child_process:733:9)
at Object.execFile (node:child_process:331:17)
at Object.exec (node:child_process:228:25)
at Object.<anonymous> (/home/Desktop/Data61BPMNtoChaincode/node_modules/shelljs/src/exec-child.js:19:22)
at Module._compile (node:internal/modules/cjs/loader:1198:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)
at Module.load (node:internal/modules/cjs/loader:1076:32)
at Function.Module._load (node:internal/modules/cjs/loader:911:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
errno: -7,
code: 'E2BIG',
syscall: 'spawn'
}
[String: ''] {
stdout: '',
stderr: '',
code: 1,
cat: [Function: bound ],
exec: [Function: bound ],
grep: [Function: bound ],
head: [Function: bound ],
sed: [Function: bound ],
sort: [Function: bound ],
tail: [Function: bound ],
to: [Function: bound ],
toEnd: [Function: bound ],
uniq: [Function: bound ]
}
Creation of large content: generateLargeMessage(128, true); (Java)
public String generateLargeMessage(int size, boolean isKB) {
StringBuilder sb = new StringBuilder();
int messageSize = size;
if(isKB) {
messageSize = size * 1024;
} else {
messageSize = size * 1024 * 1024;
}
String alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ?";
for (int i = 0; i < messageSize; i++) {
Random rnd = new Random();
sb.append(alphabet.charAt(rnd.nextInt(alphabet.length())));
}
return sb.toString();
}
Message - completely it has more than 133000 characters :
{"fnName":"A4 [R]","contractAddress":"Z180TiT","sessionId":"92e4f305-6ecd-424e-918d-509771424d8d","fnParams":[{"value":"95Ageih?sdla4Hwy6n9UBor8jm73caPfIkwugsTeI1SyEophCc1YMJ8vSsYWg5RMXYfnRznOAJujnPz1cZBrID7aSDMtRO1W8TE49HrzTJGQMCgO7zCC0PjOEj4xOiSudO00epZi1iv12dASzBZxdE0LbSprHEgZiwYJSmtRWLs8sNjQU6OGHKs5jRAazr9wpOhV0GHE3op8SugIO15OGBM2CkioggxUgqF0MhNHYM9TuNy9oIodg86EMGKfFWK296wNdiPbgRKbcaFOaNx?ZnGWA5NbuoKhT64OPIwDKxodcnNVMkeoFPMlKN9LonXMMinCIuya7pqsMtW4?FIYpRuiL75iHrLbMIBem?9WWOGn3CJWNC3zG59CV5m?Iar4JNYLcP1cyjFY7JhHpwPZBaQA4ejGCLGYy?pJ5Fvz1bO?ifgArca2D?A9d215vtVCMnmmbanmi1M91ceXXU?Xg5liNvOIBCBGSLgPIH1bqDl2AsWLxXS078XaKX8tKrkyZCUBUwJ1syJ6PUT5UJoYITrTtvR?EO0emmViDG9P4U3dP2XONt4B3ECEeraFDueOACcdrNse0lj1qtTz4rV28BBBzH00EgwW?zvoghmgU00aR?XoA20?WzZmBR9nxXvbXOMUUEPf13T2AtfGjnOnpG8KjeXo1EKYyRx0JIV7LuHpwHzj7DnfNPDfIV80cIqtel8TqAl0nRKcquPiWmmhX38xEgz8w3mZZuP8WglD3elHb3vh48pm2g1?7geteYwnCwzWolv4duTmyUA0HZXhtmLA6VN8dOmAaC1TvqaLLPRRsDI3nIwnTXkrjsr1WR?bhL1RSxdBgTasf41RUjZcjaCWX8BqNCwKddp18C2uqFLylw9O2zl6wkWAJfHpeEq86amyyLxr4HBefZDoDO0fgt357OHOeun8fzYDjPXnrjAMupzRjVZi2619k7B3FVETwG50?TQYEbl5JSUiFEaRSEOyE4vS6ScqOA49dw1p4j20?cmwevfIRaxOaxhPHLd9u4?EbCpLixIWK5cEcjvJL1MK?78FcI6rBAcYH2exAvfxYm3sct9ap0938b?oTvCFXGBDUJ4rYLnnHQrcgEBDTv2QEO29MH4SLPfbKQVBqJo7scKawdg1Fr0x30WFilL76LfWfsY6gKqgf8gM0aCYRKyfx64QRy0T6DkOkcozLxdLoOMisxtbTwv3fyn6lmQOtY7K?kr4t3oRi2UPKnJUv1ogkC5nGv4VkKvTsZGSFki0WFaLYvCxqqYILe1hmJ0h6ydmzv3Zo63edzer75n?fkfdj6MKepnRBx8nDjTmTlZccAfmBAgaS9wm9GVSupH789kZIJtwDb9VmQSnd4LHfwGvvQmKKvn2Wp8pNl2NMCdbZoDm5WjOCIyEaZqbkzilrUvTBknhDEQ8gS3NSWPua2xAz5piDbdr7FCH1RoRowOdHopROmo840OOPJiGTdsXqINPQAsAQJG1gy6gQ31umJOPiIxHJOsK6CqDRLMObCOAyUkoQRTWUtOH0QGcpzmkNgiXbcylOJ9?mretXup6UxYxdgMjAfpZtjC9?ArYjIjfMSGu0Eb5uL1DndIJ1N6ebrtbH0X68YeHaRH5sdnVx21TWhFclZvdKTTyAlNACzL3Cl0YgO5PwVZsopPMw2eeSYGjHkrsk9z425VnFJd5S8ZM?oBETWPrmLYPWt79qJeyACRushr0tE?86Fk1niH5Xyc3Iq8jZuaPoc9TBDoDPtwBD5DJ5WfbrOSGKcIsV2e7R02oAB3mRSWOkT5hpTEZ1ARVok?v78lwW0IYQU7e2VQP5bzaR5SSrAEGTrHQjXlZFb1pScMMpEgdgUMTaSMqK4pKLvloWcA?4b2VGg41bkCRh24hxrKnWKWo9JyKxz8w4JChEAWYKZRAFAMN1syY0CVmFZiynSQwhETq3QLkyzbMBxFwR9KXQ4LDxwvF2eJE5gtvnHbsE?kySHVDUu?uUX76y75TcPC3w4awoRhMrMzWdAQuRFf5FEQWKvR4NMTdksMMv9Y50sRweyzX9qiHP2aFlENK0nDGKPfjhEVuI16hrahvqJUaMI063K3pUsshXPQtYLazXTuPPSqp3nPieLk4dSu?YHYiDDke6O96oA2lipsFCetfH1MN4o157BFgXJyuWC?LlPoVZqypoLJgHdEyJVQ?psVqIJrXwg1QbOLhyO1PtWosWVhuEbPa6ruKerUo3zY66qyMYQprkJlW4E9bCgPYLEdapBDHR3UGwChi5h7GiAjP0LEDw3pOMytbusZ5IfkCOXa1rvJDMuSy?6UR67IwSas1ozeBcelmWMabOFsoLoQ19WHwpDG8dzyu1KdHoGdSGoZO91ruWVxB6MOBDS6d559gD16baewMFYqVrVQGs6bLDOOsD3HxeRumTbretTyaCFHDqkJE1RP4jUMmea70qXlcTK8B6oZvlTFlxJvg1wPMuYeStNjTOgvxH4rWfgLH?b27yHavFw2JOnaVunDc9ZM0fiSgf?3?S?YCpkRJQGEu2o8q61dSrsfyCAPe0byxMyNb1LnTFkMC39b1VTJO0YCOtrCs1OcAV9iYV09cYv3NN0JzLBEvkuXDzpa8SikGAJmYJtvmOUDIQ6DnZFU5062G5zcYvEt1QLukaemA7JahwZmfY1U9WnkdsRxgCG46OLGtDX8BsZ7GhuRKYc56h9PAYlMJZWDS13EILhvep8ynVk1Nb1P0y0lWJeUWKSPa?XGzaxba5xSnXuHLhRart?NM0mTBTdFTNaBSiFhtxb88sD?lnhIVHlE1DPPjn3zTjhXI36wiOuppYRNpn58kWGZFzvVo9g5igtg37W8a5zFmrFcGEnmIYvaBO7byp3qN8Bg5gIYKOsVpMsz5zReWUCi33dQYRmgML2kklAjUNZfuCWiaqMJTNXhuML9jelDjGjiXapeIoJNIux06XcVRt7TIkDC6V9UxKcEDufVBOaKL7P90tG2dOgWBog8WVC4JunMJ8d5t1I17PvU7HC2vtgKRuX?VZUxUwGUi1MJCG4rBv?jVGp7R4XcihMJmASF4DgBdr9DSHWvZ0Nax4i9qjmyTOqh49mOvCVfHQgAZPcu5XnbOghMFT87pejViPJ3fZeyIsLBdvOqhL1U4pnBM0vOZ1NPfYGVZ5vpBoxtjAeSKtQs3iUqXSwGO7AzQsVI9MqGHTSSdoxuK3RsdjQVnCvOxG6?SRa8n4SBb8nw?LZp8RhCvyX5p9kxyQn6rCvvHpIgHRNoanapswxFCMqEX5O7Ox?wvOYJB2Rj7A8OCR9umJ5XDhOxoxLbnGgBNdaRLmfDssp?oo?...d"},{"value":"[D2]{R}"}],"txParams":{"from":"R"}}
Get message on nodeJS: i have two parameters attached to fnParams (param[0] == content, param1 == documentID):
let textToWriteToChannel = { variable: parameters[0] };
let document = paramters[1];
var parameters = [textToWriteToChannel.variable]
var paramString = '';
for(var iter = 0; iter<parameters.length;iter++){
paramString += ', \"'+parameters[iter] + '\"';
}
Execute request to running peer on docker:
obj = shell.exec("docker exec -t " + orgName + "_" + unique_id + "_cli peer chaincode invoke --waitForEvent --waitForEvent -o orderer." + orgDomain + ":7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/" + orgDomain + "/orderers/orderer."+ orgDomain + "/msp/tlscacerts/tlsca." + orgDomain + "-cert.pem -C " + channelName + " -n " + sessionId + " -c '{\"Args\":[\"" + "set" + "\"" + ", \"" + document + "\"" + paramString + "]}'", {silent:false})
If i exceed more than 130702 signs to the json then there comes this error, if less then the document will be stored. (getconf ARG_MAX == 2097152)
So my question is now, is there any configuration file where i can increase this limit? A 128KB message is actually not soo big, so why cant i store this, as i even want to store up to 16MB. Is this no common practise to store this in such a "simulated" format?
I extracted the linux-source-5-4-0 which lies on usr/src
I found some limitation and changed it but still no effect visible (again e2big)
I also changed limits.h but again no effect.
Do i need to recompile the kernel, if yes how to?
If i run make i get error that .config cannot be found.
Thanks for any advice!