@artilleryio/platform-fargate
Version:
Fargate support for Artillery
1 lines • 1.22 kB
JavaScript
const debug=require("debug")("store");async function writeInBatches(ddb,items=[],batchReqWriter){if("function"!=typeof batchReqWriter)throw new Error("batchReqWriter must be callable");let currentBatch=[],currentBatchSizeBytes=0;for(const item of items)if(currentBatch.length<25){var itemSize=JSON.stringify(item).length;if(itemSize<4e5)if(currentBatchSizeBytes+itemSize<25e6)currentBatch.push(item),currentBatchSizeBytes+=itemSize;else{debug("Max batch size in bytes reached, writing batch, size:",currentBatch.length);const batchWriteRequest=batchReqWriter(currentBatch);await ddb.batchWrite(batchWriteRequest).promise(),currentBatch=[item],currentBatchSizeBytes=itemSize}else console.error("Item size exceeds the limit",4e5)}else{debug("Max batch length reached, writing batch, size:",currentBatch.length);const itemSize=JSON.stringify(item).length,batchWriteRequest=batchReqWriter(currentBatch);await ddb.batchWrite(batchWriteRequest).promise(),currentBatch=[item],currentBatchSizeBytes=itemSize}debug("Writing batch, size:",currentBatch.length);const batchWriteRequest=batchReqWriter(currentBatch);items=await ddb.batchWrite(batchWriteRequest).promise();debug(items)}module.exports={writeInBatches:writeInBatches};