-
Type: Bug
-
Status: Resolved
-
Priority: Minor
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 10.10-HF69, 2023.0, 2021.30
-
Component/s: File Upload
-
Release Notes Summary:There is a new optimized implementation of TransientStore for MongoDB
-
Tags:
-
Backlog priority:600
-
Upgrade notes:
-
Team:PLATFORM
-
Sprint:nxplatform #73, nxplatform #74, nxplatform #75, nxplatform #76
-
Story Points:8
Today the S3DirectBatchHandler backed by a KeyValueTransientStore is generating too many roundtrip with the KVStore we need a better implementation to large batch (more than 5k files)
S3DirectBatchHandler completeUpload performance degrades when the number of files in the batch increase.
for instance calling the endoint /nuxeo/api/v1/upload/BATCH_ID/5/complete in a batch of 10 files results in the following kv access:
GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.paraminfo = ["handler","0","1","2","3","4","5","6","8","7","9","10"] GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.handler__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.handler = default GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.0__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.0 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_0 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.1__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.1 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_1 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.2__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.2 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_2 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.3__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.3 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_3 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.4__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.4 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_4 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.5__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.5 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_5 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.6__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.6 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_6 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.8__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.8 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_8 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.7__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.7 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_7 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.9__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.9 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_9 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.10__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.10 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_10 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.paraminfo = ["handler","0","1","2","3","4","5","6","8","7","9","10"] GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.handler__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.handler = default GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.0__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.0 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_0 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.1__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.1 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_1 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.2__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.2 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_2 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.3__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.3 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_3 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.4__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.4 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_4 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.5__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.5 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_5 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.6__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.6 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_6 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.8__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.8 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_8 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.7__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.7 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_7 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.9__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.9 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_9 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.10__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e.param.10 = batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_10 GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_5.paraminfo = ["chunked"] GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_5.param.chunked__format = null GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_5.param.chunked = false TEST batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_5.bloblock = null ? SET true GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_5.blobinfo = {"size":"7680","count":"1"} GET batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_5.blob.0 = {"filename":"myFile.doc","length":"7680","digest":"858a3dadd76959d5c45e60be671dac53","mimetype":"application/msword","encoding":null,"key":"858a3dadd76959d5c45e60be671dac53"} DEL batchId-12a90393-3b4c-4848-8dd8-79f63b58570e_5.bloblock
This is 4xNB_OF_FILES + 10 requests,
this is not noticeable on a a small batch, each roundtrip being sub millisecond,
but as soon as there are hundreds of files this is an observed bottleneck.