1

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) couchDB

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 enter image description here I found some limitation and changed it but still no effect visible (again e2big) enter image description here

I also changed limits.h but again no effect. enter image description here

Do i need to recompile the kernel, if yes how to? If i run make i get error that .config cannot be found. enter image description here enter image description here

enter image description here

Thanks for any advice!

sebi
  • 21
  • 8

0 Answers0