diff --git a/zboxcore/sdk/chunked_upload_process_js.go b/zboxcore/sdk/chunked_upload_process_js.go index 782400775..2f0941773 100644 --- a/zboxcore/sdk/chunked_upload_process_js.go +++ b/zboxcore/sdk/chunked_upload_process_js.go @@ -57,6 +57,7 @@ type ChunkedUploadFormInfo struct { StorageVersion int EncryptionVersion int PrivateSigningKey ed25519.PrivateKey + bbuf *bytebufferpool.ByteBuffer } // createUploadProgress create a new UploadProgress @@ -463,6 +464,7 @@ func ProcessEventData(data safejs.Value) { formBuilder := CreateChunkedUploadFormBuilder(formInfo.StorageVersion, formInfo.EncryptionVersion, formInfo.PrivateSigningKey) uploadData, err := formBuilder.Build(fileMeta, wp.hasher, formInfo.ConnectionID, blobberID, formInfo.ChunkSize, formInfo.ChunkStartIndex, formInfo.ChunkEndIndex, formInfo.IsFinal, formInfo.EncryptedKey, formInfo.EncryptedKeyPoint, fileShards, thumbnailChunkData, formInfo.ShardSize) + uploadPool.Put(formInfo.bbuf) if err != nil { selfPostMessage(false, false, err.Error(), remotePath, formInfo.ChunkEndIndex, nil) return @@ -599,9 +601,15 @@ func parseEventData(data safejs.Value) (*FileMeta, *ChunkedUploadFormInfo, [][]b if err != nil { return nil, nil, nil, nil, err } - buf := make([]byte, fileShardLen) - safejs.CopyBytesToGo(buf, fileShardUint8) - fileShards := splitData(buf, int(chunkSize)) + bbuf := uploadPool.Get() + if cap(bbuf.B) < fileShardLen { + bbuf.B = make([]byte, fileShardLen) + } else { + bbuf.B = bbuf.B[:fileShardLen] + } + safejs.CopyBytesToGo(bbuf.B, fileShardUint8) + fileShards := splitData(bbuf.B, int(chunkSize)) + formInfo.bbuf = bbuf fileShardUint8.Set("buffer", js.Null()) formInfoUint8.Set("buffer", js.Null()) fileMetaUint8.Set("buffer", js.Null()) diff --git a/zboxcore/sdk/listworker.go b/zboxcore/sdk/listworker.go index d8944557d..590c4c7fe 100644 --- a/zboxcore/sdk/listworker.go +++ b/zboxcore/sdk/listworker.go @@ -174,6 +174,9 @@ func (req *ListRequest) getlistFromBlobbers() ([]*listResponse, error) { for i := 0; i < numList; i++ { go req.getListInfoFromBlobber(req.blobbers[i], i, rspCh) } + if req.storageVersion == StorageV2 { + req.listOnly = true + } listInfos := make([]*listResponse, numList) consensusMap := make(map[string][]*blockchain.StorageNode) var consensusHash string @@ -241,7 +244,7 @@ func (req *ListRequest) GetListFromBlobbers() (*ListResult, error) { } selected := make(map[string]*ListResult) childResultMap := make(map[string]*ListResult) - if !req.forRepair { + if !req.forRepair && req.storageVersion == 0 { req.consensusThresh = 1 } for i := 0; i < len(lR); i++ {