diff --git a/ais/backend/ais.go b/ais/backend/ais.go index 8d1720c7b15..1a8b3cb30fe 100644 --- a/ais/backend/ais.go +++ b/ais/backend/ais.go @@ -601,7 +601,7 @@ func (m *AISBackendProvider) PutObj(r io.ReadCloser, lom *cluster.LOM) (errCode Reader: r.(cos.ReadOpenCloser), Size: uint64(size), } - if oah, err = api.PutObject(args); err != nil { + if oah, err = api.PutObject(&args); err != nil { errCode, err = extractErrCode(err, remAis.uuid) return } diff --git a/ais/test/archive_test.go b/ais/test/archive_test.go index 974394728e7..a5fa10e5dbe 100644 --- a/ais/test/archive_test.go +++ b/ais/test/archive_test.go @@ -322,7 +322,7 @@ func testArch(t *testing.T, bck *meta.Bck) { msg.ListRange.ObjNames = list msg.InclSrcBname = test.inclSrcBckName - xids, err := api.ArchiveMultiObj(baseParams, m.bck, msg) + xids, err := api.ArchiveMultiObj(baseParams, m.bck, &msg) tassert.CheckFatal(t, err) tlog.Logf("[%s] %2d: arch list %d objects %s => %s\n", xids, i, len(list), m.bck, bckTo) }(archName, list, i) @@ -339,7 +339,7 @@ func testArch(t *testing.T, bck *meta.Bck) { msg.ListRange.Template = fmt.Sprintf(fmtRange, m.prefix, start, start+numInArch-1) msg.InclSrcBname = test.inclSrcBckName - xids, err := api.ArchiveMultiObj(baseParams, m.bck, msg) + xids, err := api.ArchiveMultiObj(baseParams, m.bck, &msg) tassert.CheckFatal(t, err) tlog.Logf("[%s] %2d: arch range %s %s => %s\n", xids, i, msg.ListRange.Template, m.bck, bckTo) @@ -401,7 +401,7 @@ func testArch(t *testing.T, bck *meta.Bck) { msg.AppendIfExists = true // here - xids, err := api.ArchiveMultiObj(baseParams, m.bck, msg) + xids, err := api.ArchiveMultiObj(baseParams, m.bck, &msg) tassert.CheckFatal(t, err) tlog.Logf("[%s] APPEND %s/%s => %s/%s\n", xids, m.bck, msg.ListRange.Template, bckTo, archName) @@ -530,7 +530,7 @@ func TestAppendToArch(t *testing.T) { } msg.ListRange.ObjNames = list - _, err := api.ArchiveMultiObj(baseParams, m.bck, msg) + _, err := api.ArchiveMultiObj(baseParams, m.bck, &msg) tassert.CheckFatal(t, err) }(archName, list) } @@ -561,7 +561,7 @@ func TestAppendToArch(t *testing.T) { msg.AppendIfExists = true msg.ListRange.ObjNames = list go func() { - _, err = api.ArchiveMultiObj(baseParams, bckFrom, msg) + _, err = api.ArchiveMultiObj(baseParams, bckFrom, &msg) tassert.CheckError(t, err) }() } else { @@ -583,7 +583,7 @@ func TestAppendToArch(t *testing.T) { if sparsePrint.Inc()%13 == 0 { tlog.Logf("APPEND local rand => %s/%s/%s\n", bckTo, archName, archpath) } - err = api.PutApndArch(appendArchArgs) + err = api.PutApndArch(&appendArchArgs) tassert.CheckError(t, err) } } diff --git a/ais/test/auth_test.go b/ais/test/auth_test.go index 83825a67206..22a2d31cc31 100644 --- a/ais/test/auth_test.go +++ b/ais/test/auth_test.go @@ -54,7 +54,7 @@ func TestAuthObj(t *testing.T) { r, _ := readers.NewRand(fileSize, cos.ChecksumNone) objName := trand.String(10) - _, err = api.PutObject(api.PutArgs{ + _, err = api.PutObject(&api.PutArgs{ BaseParams: unAuthBP, Bck: bck, Reader: r, @@ -64,7 +64,7 @@ func TestAuthObj(t *testing.T) { expectUnauthorized(t, err) r, _ = readers.NewRand(fileSize, cos.ChecksumNone) - _, err = api.PutObject(api.PutArgs{ + _, err = api.PutObject(&api.PutArgs{ BaseParams: authBP, Bck: bck, Reader: r, diff --git a/ais/test/bucket_test.go b/ais/test/bucket_test.go index 06ec7136d89..135285d398a 100644 --- a/ais/test/bucket_test.go +++ b/ais/test/bucket_test.go @@ -61,7 +61,7 @@ func TestHTTPProviderBucket(t *testing.T) { tassert.Fatalf(t, err != nil, "expected error") reader, _ := readers.NewRand(cos.KiB, cos.ChecksumNone) - _, err = api.PutObject(api.PutArgs{ + _, err = api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: "something", @@ -465,7 +465,7 @@ func overwriteLomCache(mdwrite apc.WritePolicy, t *testing.T) { for _, en := range objList.Entries { reader, err := readers.NewRand(nsize, cos.ChecksumNone) tassert.CheckFatal(t, err) - _, err = api.PutObject(api.PutArgs{ + _, err = api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: m.bck, ObjName: en.Name, @@ -1396,7 +1396,7 @@ func TestListObjectsPrefix(t *testing.T) { objNames = append(objNames, objName) r, _ := readers.NewRand(fileSize, cos.ChecksumNone) - _, err := api.PutObject(api.PutArgs{ + _, err := api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: objName, @@ -3386,7 +3386,7 @@ func TestListObjectsNoRecursion(t *testing.T) { for _, nm := range objs { objectSize := int64(rand.Intn(256) + 20) reader, _ := readers.NewRand(objectSize, cos.ChecksumNone) - _, err := api.PutObject(api.PutArgs{ + _, err := api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: nm, diff --git a/ais/test/cp_multiobj_test.go b/ais/test/cp_multiobj_test.go index a178239e280..c1214766744 100644 --- a/ais/test/cp_multiobj_test.go +++ b/ais/test/cp_multiobj_test.go @@ -64,7 +64,7 @@ func TestCopyMultiObjSimple(t *testing.T) { tlog.Logf("PUT %d => %s\n", len(objList), bckFrom.Cname("")) for _, objName := range objList { r, _ := readers.NewRand(objSize, cksumType) - _, err := api.PutObject(api.PutArgs{ + _, err := api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bckFrom, ObjName: objName, @@ -80,7 +80,7 @@ func TestCopyMultiObjSimple(t *testing.T) { msg := cmn.TCObjsMsg{ToBck: bckTo} msg.Template = template - xid, err = api.CopyMultiObj(baseParams, bckFrom, msg) + xid, err = api.CopyMultiObj(baseParams, bckFrom, &msg) tassert.CheckFatal(t, err) } @@ -194,9 +194,9 @@ func testCopyMobj(t *testing.T, bck *meta.Bck) { ) msg.ObjNames = list if m.bck.IsRemote() && test.evictRemoteSrc { - xid, err = api.CopyMultiObj(baseParams, m.bck, msg, apc.FltExists) + xid, err = api.CopyMultiObj(baseParams, m.bck, &msg, apc.FltExists) } else { - xid, err = api.CopyMultiObj(baseParams, m.bck, msg) + xid, err = api.CopyMultiObj(baseParams, m.bck, &msg) } if err != nil { erv.Store(err) @@ -228,9 +228,9 @@ func testCopyMobj(t *testing.T, bck *meta.Bck) { ) msg.Template = template if m.bck.IsRemote() && test.evictRemoteSrc { - xid, err = api.CopyMultiObj(baseParams, m.bck, msg, apc.FltExists) + xid, err = api.CopyMultiObj(baseParams, m.bck, &msg, apc.FltExists) } else { - xid, err = api.CopyMultiObj(baseParams, m.bck, msg) + xid, err = api.CopyMultiObj(baseParams, m.bck, &msg) } if err != nil { erv.Store(err) diff --git a/ais/test/downloader_test.go b/ais/test/downloader_test.go index 2faa2fa7dcb..af0ac2d3542 100644 --- a/ais/test/downloader_test.go +++ b/ais/test/downloader_test.go @@ -512,7 +512,7 @@ func TestDownloadRemote(t *testing.T) { tassert.CheckFatal(t, err) objName := fmt.Sprintf("%s%0*d%s", prefix, 5, i, suffix) - _, err = api.PutObject(api.PutArgs{ + _, err = api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: test.srcBck, ObjName: objName, @@ -927,7 +927,7 @@ func TestDownloadOverrideObject(t *testing.T) { // Update the file r, _ := readers.NewRand(10, p.Cksum.Type) - _, err := api.PutObject(api.PutArgs{ + _, err := api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: objName, @@ -974,7 +974,7 @@ func TestDownloadOverrideObjectWeb(t *testing.T) { // Update the file r, _ := readers.NewRand(newSize, p.Cksum.Type) - _, err := api.PutObject(api.PutArgs{ + _, err := api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: objName, diff --git a/ais/test/dsort_test.go b/ais/test/dsort_test.go index 1cacd2b42a4..125759de497 100644 --- a/ais/test/dsort_test.go +++ b/ais/test/dsort_test.go @@ -2003,7 +2003,7 @@ func TestDsortOrderFile(t *testing.T) { ObjName: orderFileName, Reader: readers.NewBytes(buffer.Bytes()), } - _, err = api.PutObject(args) + _, err = api.PutObject(&args) tassert.CheckFatal(t, err) tlog.Logln(startingDS) @@ -2111,7 +2111,7 @@ func TestDsortOrderJSONFile(t *testing.T) { ObjName: orderFileName, Reader: readers.NewBytes(jsonBytes), } - _, err = api.PutObject(args) + _, err = api.PutObject(&args) tassert.CheckFatal(t, err) tlog.Logln(startingDS) diff --git a/ais/test/ec_test.go b/ais/test/ec_test.go index cdef636cd17..4907d2ed3b1 100644 --- a/ais/test/ec_test.go +++ b/ais/test/ec_test.go @@ -342,7 +342,7 @@ func doECPutsAndCheck(t *testing.T, baseParams api.BaseParams, bck cmn.Bck, o *e }() tassert.CheckFatal(t, err) putArgs := api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r} - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) tassert.CheckFatal(t, err) foundParts, _ := waitForECFinishes(t, totalCnt, objSize, sliceSize, doEC, bck, objPath) @@ -449,7 +449,7 @@ func bucketSize(t *testing.T, baseParams api.BaseParams, bck cmn.Bck) int { func putRandomFile(t *testing.T, baseParams api.BaseParams, bck cmn.Bck, objPath string, size int) { r, err := readers.NewRand(int64(size), cos.ChecksumNone) tassert.CheckFatal(t, err) - _, err = api.PutObject(api.PutArgs{ + _, err = api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: objPath, @@ -622,7 +622,7 @@ func createECReplicas(t *testing.T, baseParams api.BaseParams, bck cmn.Bck, objN tlog.Logf("Creating %s, size %8d\n", objPath, objSize) r, err := readers.NewRand(objSize, cos.ChecksumNone) tassert.CheckFatal(t, err) - _, err = api.PutObject(api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r}) + _, err = api.PutObject(&api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r}) tassert.CheckFatal(t, err) tlog.Logf("waiting for %s\n", objPath) @@ -650,7 +650,7 @@ func createECObject(t *testing.T, baseParams api.BaseParams, bck cmn.Bck, objNam tlog.LogfCond(!o.silent, "Creating %s, size %8d [%2s]\n", objPath, objSize, ecStr) r, err := readers.NewRand(objSize, cos.ChecksumNone) tassert.CheckFatal(t, err) - _, err = api.PutObject(api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r}) + _, err = api.PutObject(&api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r}) tassert.CheckFatal(t, err) tlog.LogfCond(!o.silent, "waiting for %s\n", objPath) @@ -689,7 +689,7 @@ func createDamageRestoreECFile(t *testing.T, baseParams api.BaseParams, bck cmn. tlog.LogfCond(!o.silent, "Creating %s, size %8d [%2s] [%s]\n", objPath, objSize, ecStr, delStr) r, err := readers.NewRand(objSize, cos.ChecksumNone) tassert.CheckFatal(t, err) - _, err = api.PutObject(api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r}) + _, err = api.PutObject(&api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r}) tassert.CheckFatal(t, err) tlog.LogfCond(!o.silent, "waiting for %s\n", objPath) @@ -929,7 +929,7 @@ func putECFile(baseParams api.BaseParams, bck cmn.Bck, objName string) error { if err != nil { return err } - _, err = api.PutObject(api.PutArgs{ + _, err = api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: objPath, @@ -1416,7 +1416,7 @@ func ecStressCore(t *testing.T, o *ecOptions, proxyURL string, bck cmn.Bck) { r, err := readers.NewRand(objSize, cos.ChecksumNone) tassert.Errorf(t, err == nil, "Failed to create reader: %v", err) putArgs := api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r} - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) tassert.Errorf(t, err == nil, "PUT failed: %v", err) totalSlices.Add(int64(totalCnt)) @@ -1508,7 +1508,7 @@ func TestECXattrs(t *testing.T) { tlog.Logf("Creating %s, size %8d [%2s] [%s]\n", objPath, objSize, ecStr, delStr) r, err := readers.NewRand(objSize, cos.ChecksumNone) tassert.CheckFatal(t, err) - _, err = api.PutObject(api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r}) + _, err = api.PutObject(&api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r}) tassert.CheckFatal(t, err) tlog.Logf("waiting for %s\n", objPath) @@ -1730,7 +1730,7 @@ func TestECEmergencyTargetForSlices(t *testing.T) { tlog.Logf("Creating %s, size %8d [%2s]\n", objPath, objSize, ecStr) r, err := readers.NewRand(objSize, cos.ChecksumNone) tassert.CheckFatal(t, err) - _, err = api.PutObject(api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r}) + _, err = api.PutObject(&api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r}) tassert.CheckFatal(t, err) t.Logf("Object %s put in %v", objName, time.Since(start)) start = time.Now() @@ -1978,7 +1978,7 @@ func TestECEmergencyMountpath(t *testing.T) { tlog.Logf("Creating %s, size %8d [%2s]\n", objPath, objSize, ecStr) r, err := readers.NewRand(objSize, cos.ChecksumNone) tassert.CheckFatal(t, err) - _, err = api.PutObject(api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r}) + _, err = api.PutObject(&api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objPath, Reader: r}) tassert.CheckFatal(t, err) foundParts, mainObjPath := waitForECFinishes(t, totalCnt, objSize, sliceSize, doEC, bck, objPath) diff --git a/ais/test/etl_cp_multiobj_test.go b/ais/test/etl_cp_multiobj_test.go index 41fd2eccbba..8f972da690b 100644 --- a/ais/test/etl_cp_multiobj_test.go +++ b/ais/test/etl_cp_multiobj_test.go @@ -86,7 +86,7 @@ func TestETLMultiObj(t *testing.T) { tlog.Logf("PUT %d objects (size %d) => %s/test/a-*\n", objCnt, objSize, m.bck) for i := 0; i < objCnt; i++ { r, _ := readers.NewRand(objSize, cksumType) - _, err := api.PutObject(api.PutArgs{ + _, err := api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: m.bck, ObjName: fmt.Sprintf("test/a-%04d", i), @@ -159,9 +159,9 @@ func testETLMultiObj(t *testing.T, etlName string, bckFrom, bckTo cmn.Bck, fileR tlog.Logf("Starting multi-object ETL[%s] ...\n", etlName) if evictRemoteSrc { - xid, err = api.ETLMultiObj(baseParams, bckFrom, tcomsg, apc.FltExists) + xid, err = api.ETLMultiObj(baseParams, bckFrom, &tcomsg, apc.FltExists) } else { - xid, err = api.ETLMultiObj(baseParams, bckFrom, tcomsg) + xid, err = api.ETLMultiObj(baseParams, bckFrom, &tcomsg) } tassert.CheckFatal(t, err) diff --git a/ais/test/etl_stress_test.go b/ais/test/etl_stress_test.go index 29da02c7839..31cb9cb255b 100644 --- a/ais/test/etl_stress_test.go +++ b/ais/test/etl_stress_test.go @@ -160,7 +160,7 @@ def transform(input_bytes): m = ioContext{ t: t, num: 200_000, - fileSize: 20 * cos.KiB, // 4Gib total + fileSize: 20 * cos.KiB, // 4GiB total fixedSize: true, bck: bckFrom, } diff --git a/ais/test/etl_tar2tf_test.go b/ais/test/etl_tar2tf_test.go index abd91dad92a..18503c4997b 100644 --- a/ais/test/etl_tar2tf_test.go +++ b/ais/test/etl_tar2tf_test.go @@ -80,7 +80,7 @@ func TestETLTar2TFS3(t *testing.T) { Cksum: f.Cksum(), Reader: f, } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) tassert.CheckFatal(t, err) defer api.DeleteObject(baseParams, bck, tarObjName) @@ -158,7 +158,7 @@ func TestETLTar2TFRanges(t *testing.T) { Cksum: f.Cksum(), Reader: f, } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) tassert.CheckFatal(t, err) etlName := startTar2TfTransformer(t) diff --git a/ais/test/etl_test.go b/ais/test/etl_test.go index d21333f77e7..5bb9d8409c3 100644 --- a/ais/test/etl_test.go +++ b/ais/test/etl_test.go @@ -186,7 +186,7 @@ func testETLObjectCloud(t *testing.T, bck cmn.Bck, etlName string, onlyLong, cac reader, err := readers.NewRand(cos.KiB, cos.ChecksumNone) tassert.CheckFatal(t, err) - _, err = api.PutObject(api.PutArgs{ + _, err = api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: objName, @@ -373,7 +373,7 @@ func TestETLInlineMD5SingleObj(t *testing.T) { reader, err := readers.NewRand(cos.MiB, cos.ChecksumMD5) tassert.CheckFatal(t, err) - _, err = api.PutObject(api.PutArgs{ + _, err = api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: objName, diff --git a/ais/test/fshc_test.go b/ais/test/fshc_test.go index a3692adc5f2..265cdf8ecd6 100644 --- a/ais/test/fshc_test.go +++ b/ais/test/fshc_test.go @@ -135,7 +135,7 @@ func (md *checkerMD) runTestSync(method string, target *meta.Snode, mpath string tassert.CheckFatal(md.t, err) for _, objName := range objList { r, _ := readers.NewRand(md.fileSize, p.Cksum.Type) - _, err := api.PutObject(api.PutArgs{ + _, err := api.PutObject(&api.PutArgs{ BaseParams: md.baseParams, Bck: md.bck, ObjName: path.Join(fshcDir, objName), @@ -297,7 +297,7 @@ func runAsyncJob(t *testing.T, bck cmn.Bck, wg *sync.WaitGroup, op, mpath string switch op { case "PUT": r, _ := readers.NewRand(fileSize, p.Cksum.Type) - api.PutObject(api.PutArgs{ + api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: path.Join(fshcDir, fname), diff --git a/ais/test/integration_test.go b/ais/test/integration_test.go index e56ee0e267d..c356e94dee1 100644 --- a/ais/test/integration_test.go +++ b/ais/test/integration_test.go @@ -1244,7 +1244,7 @@ func TestAtimeLocalGet(t *testing.T) { tools.CreateBucket(t, proxyURL, bck, nil, true /*cleanup*/) - _, err := api.PutObject(api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objectName, Reader: objectContent}) + _, err := api.PutObject(&api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objectName, Reader: objectContent}) tassert.CheckFatal(t, err) putAtime, putAtimeFormatted := tools.GetObjectAtime(t, baseParams, bck, objectName, time.RFC3339Nano) @@ -1318,7 +1318,7 @@ func TestAtimePrefetch(t *testing.T) { go func(idx int) { defer wg.Done() object := objPath + strconv.FormatUint(uint64(idx), 10) - _, err := api.PutObject(api.PutArgs{ + _, err := api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: object, @@ -1384,7 +1384,7 @@ func TestAtimeLocalPut(t *testing.T) { tools.CreateBucket(t, proxyURL, bck, nil, true /*cleanup*/) timeBeforePut := time.Now() - _, err := api.PutObject(api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objectName, Reader: objectContent}) + _, err := api.PutObject(&api.PutArgs{BaseParams: baseParams, Bck: bck, ObjName: objectName, Reader: objectContent}) tassert.CheckFatal(t, err) putAtime, putAtimeFormatted := tools.GetObjectAtime(t, baseParams, bck, objectName, time.RFC3339Nano) diff --git a/ais/test/maintain_test.go b/ais/test/maintain_test.go index 488d4210eb0..43720e8d7d3 100644 --- a/ais/test/maintain_test.go +++ b/ais/test/maintain_test.go @@ -209,7 +209,7 @@ func TestMaintenanceDecommissionRebalance(t *testing.T) { for i := 0; i < objCount; i++ { objName := fmt.Sprintf("%sobj%04d", objPath, i) r, _ := readers.NewRand(int64(fileSize), cos.ChecksumXXHash) - _, err := api.PutObject(api.PutArgs{ + _, err := api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: objName, diff --git a/ais/test/multiproxy_test.go b/ais/test/multiproxy_test.go index 5aa4162ea43..14ed0ac6c58 100644 --- a/ais/test/multiproxy_test.go +++ b/ais/test/multiproxy_test.go @@ -705,7 +705,7 @@ func proxyPutGetDelete(count int, proxyURL string, bck cmn.Bck, cksumType string Cksum: reader.Cksum(), Reader: reader, } - if _, err = api.PutObject(putArgs); err != nil { + if _, err = api.PutObject(&putArgs); err != nil { return fmt.Errorf("error executing put: %v", err) } if _, err = api.GetObject(baseParams, bck, keyname, nil); err != nil { @@ -775,7 +775,7 @@ loop: Cksum: reader.Cksum(), Reader: reader, } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) if err != nil { errCh <- err continue diff --git a/ais/test/object_test.go b/ais/test/object_test.go index a7d277e60a9..7709b704bcd 100644 --- a/ais/test/object_test.go +++ b/ais/test/object_test.go @@ -92,7 +92,7 @@ func TestObjectInvalidName(t *testing.T) { case putOP: reader, err := readers.NewRand(cos.KiB, cos.ChecksumNone) tassert.CheckFatal(t, err) - _, err = api.PutObject(api.PutArgs{ + _, err = api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: test.objName, @@ -144,7 +144,7 @@ func TestRemoteBucketObject(t *testing.T) { switch test.ty { case putOP: var oah api.ObjAttrs - oah, err = api.PutObject(api.PutArgs{ + oah, err = api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: object, @@ -156,7 +156,7 @@ func TestRemoteBucketObject(t *testing.T) { } case getOP: if test.exists { - _, err = api.PutObject(api.PutArgs{ + _, err = api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck, ObjName: object, @@ -262,7 +262,7 @@ func TestAppendObject(t *testing.T) { Handle: handle, Reader: cos.NewByteHandle([]byte(body)), } - handle, err = api.AppendObject(args) + handle, err = api.AppendObject(&args) tassert.CheckFatal(t, err) _, err = cksum.H.Write([]byte(body)) @@ -271,7 +271,7 @@ func TestAppendObject(t *testing.T) { // Flush object with cksum to make it persistent in the bucket. cksum.Finalize() - err = api.FlushObject(api.FlushArgs{ + err = api.FlushObject(&api.FlushArgs{ BaseParams: baseParams, Bck: bck, Object: objName, @@ -332,7 +332,7 @@ func Test_SameLocalAndRemoteBckNameValidate(t *testing.T) { // PUT/GET/DEL Without ais bucket tlog.Logf("Validating responses for non-existent ais bucket...\n") - _, err := api.PutObject(putArgsLocal) + _, err := api.PutObject(&putArgsLocal) if err == nil { t.Fatalf("ais bucket %s does not exist: Expected an error.", bckLocal.String()) } @@ -379,16 +379,16 @@ func Test_SameLocalAndRemoteBckNameValidate(t *testing.T) { // PUT tlog.Logf("PUT %s and %s into buckets...\n", fileName1, fileName2) - _, err = api.PutObject(putArgsLocal) + _, err = api.PutObject(&putArgsLocal) tassert.CheckFatal(t, err) putArgsLocal.ObjName = fileName2 - _, err = api.PutObject(putArgsLocal) + _, err = api.PutObject(&putArgsLocal) tassert.CheckFatal(t, err) - _, err = api.PutObject(putArgsRemote) + _, err = api.PutObject(&putArgsRemote) tassert.CheckFatal(t, err) putArgsRemote.ObjName = fileName2 - _, err = api.PutObject(putArgsRemote) + _, err = api.PutObject(&putArgsRemote) tassert.CheckFatal(t, err) // Check ais bucket has 2 objects @@ -484,7 +484,7 @@ func Test_SameAISAndRemoteBucketName(t *testing.T) { ObjName: fileName, Reader: readers.NewBytes(dataLocal), } - _, err := api.PutObject(putArgs) + _, err := api.PutObject(&putArgs) tassert.CheckFatal(t, err) resLocal, err := api.ListObjects(baseParams, bckLocal, msg, api.ListArgs{}) @@ -497,7 +497,7 @@ func Test_SameAISAndRemoteBucketName(t *testing.T) { ObjName: fileName, Reader: readers.NewBytes(dataRemote), } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) tassert.CheckFatal(t, err) resRemote, err := api.ListObjects(baseParams, bckRemote, msg, api.ListArgs{}) @@ -1419,7 +1419,7 @@ func TestPutObjectWithChecksum(t *testing.T) { putArgs.Cksum = cos.NewCksum(cksumType, badCksumVal) putArgs.ObjName = fileName - _, err := api.PutObject(putArgs) + _, err := api.PutObject(&putArgs) if err == nil { t.Errorf("Bad checksum provided by the user, Expected an error") } @@ -1429,7 +1429,7 @@ func TestPutObjectWithChecksum(t *testing.T) { t.Errorf("Object %s exists despite bad checksum", fileName) } putArgs.Cksum = cos.NewCksum(cksumType, cksumValue) - oah, err := api.PutObject(putArgs) + oah, err := api.PutObject(&putArgs) if err != nil { t.Errorf("Correct checksum provided, Err encountered %v", err) } @@ -1470,7 +1470,7 @@ func TestOperationsWithRanges(t *testing.T) { } for _, objName := range objList { r, _ := readers.NewRand(objSize, cksumType) - _, err := api.PutObject(api.PutArgs{ + _, err := api.PutObject(&api.PutArgs{ BaseParams: baseParams, Bck: bck.Clone(), ObjName: objName, diff --git a/ais/test/objprops_test.go b/ais/test/objprops_test.go index 1b7cf1c3961..844662700a7 100644 --- a/ais/test/objprops_test.go +++ b/ais/test/objprops_test.go @@ -52,7 +52,7 @@ func propsUpdateObjects(t *testing.T, proxyURL string, bck cmn.Bck, oldVersions Cksum: r.Cksum(), Reader: r, } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) if err != nil { t.Errorf("Failed to PUT new data to object %s: %v", bck.Cname(fname), err) } diff --git a/ais/test/regression_test.go b/ais/test/regression_test.go index 4ab1fe453bf..d3e6308328e 100644 --- a/ais/test/regression_test.go +++ b/ais/test/regression_test.go @@ -1047,7 +1047,7 @@ func TestStressDeleteRange(t *testing.T) { Cksum: reader.Cksum(), Reader: reader, } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) if err != nil { errCh <- err } diff --git a/ais/test/rwstress_test.go b/ais/test/rwstress_test.go index 9a3749cd93f..674e79c3667 100644 --- a/ais/test/rwstress_test.go +++ b/ais/test/rwstress_test.go @@ -78,7 +78,7 @@ func opPut(objName, cksumType string, bck cmn.Bck) opRes { Cksum: r.Cksum(), Reader: r, } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) return opRes{http.MethodPut, err} } diff --git a/ais/test/target_test.go b/ais/test/target_test.go index e98b5f46a20..39bb2ebbca8 100644 --- a/ais/test/target_test.go +++ b/ais/test/target_test.go @@ -45,7 +45,7 @@ func TestPutObjectNoDaemonID(t *testing.T) { Cksum: reader.Cksum(), Reader: reader, } - if _, err := api.PutObject(putArgs); err == nil { + if _, err := api.PutObject(&putArgs); err == nil { t.Errorf("Error is nil, expected Bad Request error on a PUT to target with no daemon ID query string") } } diff --git a/api/multiobj.go b/api/multiobj.go index b98133e249c..7d936ce1fb5 100644 --- a/api/multiobj.go +++ b/api/multiobj.go @@ -20,7 +20,7 @@ import ( // (not necessarily distinct) // For supported archiving formats, see `archive.FileExtensions`. // See also: api.PutApndArch -func ArchiveMultiObj(bp BaseParams, bckFrom cmn.Bck, msg cmn.ArchiveBckMsg) (string, error) { +func ArchiveMultiObj(bp BaseParams, bckFrom cmn.Bck, msg *cmn.ArchiveBckMsg) (string, error) { bp.Method = http.MethodPut q := bckFrom.NewQuery() return dolr(bp, bckFrom, apc.ActArchive, msg, q) @@ -29,7 +29,7 @@ func ArchiveMultiObj(bp BaseParams, bckFrom cmn.Bck, msg cmn.ArchiveBckMsg) (str // `fltPresence` applies exclusively to remote `bckFrom` (is ignored if the source is ais://) // and is one of: { apc.FltExists, apc.FltPresent, ... } - for complete enum, see api/apc/query.go -func CopyMultiObj(bp BaseParams, bckFrom cmn.Bck, msg cmn.TCObjsMsg, fltPresence ...int) (xid string, err error) { +func CopyMultiObj(bp BaseParams, bckFrom cmn.Bck, msg *cmn.TCObjsMsg, fltPresence ...int) (xid string, err error) { bp.Method = http.MethodPost q := bckFrom.NewQuery() if len(fltPresence) > 0 { @@ -38,7 +38,7 @@ func CopyMultiObj(bp BaseParams, bckFrom cmn.Bck, msg cmn.TCObjsMsg, fltPresence return dolr(bp, bckFrom, apc.ActCopyObjects, msg, q) } -func ETLMultiObj(bp BaseParams, bckFrom cmn.Bck, msg cmn.TCObjsMsg, fltPresence ...int) (xid string, err error) { +func ETLMultiObj(bp BaseParams, bckFrom cmn.Bck, msg *cmn.TCObjsMsg, fltPresence ...int) (xid string, err error) { bp.Method = http.MethodPost q := bckFrom.NewQuery() if len(fltPresence) > 0 { diff --git a/api/object.go b/api/object.go index ff483e96712..818b578a37b 100644 --- a/api/object.go +++ b/api/object.go @@ -412,7 +412,7 @@ func EvictObject(bp BaseParams, bck cmn.Bck, object string) error { // // Assumes that `args.Reader` is already opened and ready for usage. // Returns `ObjAttrs` that can be further used to get the size and other object metadata. -func PutObject(args PutArgs) (oah ObjAttrs, err error) { +func PutObject(args *PutArgs) (oah ObjAttrs, err error) { var ( resp *http.Response query = args.Bck.NewQuery() @@ -445,7 +445,7 @@ func PutObject(args PutArgs) (oah ObjAttrs, err error) { // See also: // - api.ArchiveMultiObj(msg.AppendIfExists = true) // - api.AppendObject -func PutApndArch(args PutApndArchArgs) (err error) { +func PutApndArch(args *PutApndArchArgs) (err error) { q := make(url.Values, 4) q = args.Bck.AddToQuery(q) q.Set(apc.QparamArchpath, args.ArchPath) @@ -475,7 +475,7 @@ func PutApndArch(args PutApndArchArgs) (err error) { // Once all the "appending" is done, the caller must call `api.FlushObject` // to finalize the object. // NOTE: object becomes visible and accessible only _after_ the call to `api.FlushObject`. -func AppendObject(args AppendArgs) (string /*handle*/, error) { +func AppendObject(args *AppendArgs) (string /*handle*/, error) { q := make(url.Values, 4) q.Set(apc.QparamAppendType, apc.AppendOp) q.Set(apc.QparamAppendHandle, args.Handle) @@ -500,7 +500,7 @@ func AppendObject(args AppendArgs) (string /*handle*/, error) { // FlushObject must be called after all the appends (via `api.AppendObject`). // To "flush", it uses the handle returned by `api.AppendObject`. // This call will create a fully operational and accessible object. -func FlushObject(args FlushArgs) error { +func FlushObject(args *FlushArgs) error { var ( header http.Header q = make(url.Values, 4) diff --git a/bench/tools/aisloader/client.go b/bench/tools/aisloader/client.go index 81182c49fe0..c14b01a336c 100644 --- a/bench/tools/aisloader/client.go +++ b/bench/tools/aisloader/client.go @@ -206,7 +206,7 @@ func put(proxyURL string, bck cmn.Bck, objName string, cksum *cos.Cksum, reader SkipVC: true, } ) - _, err = api.PutObject(args) + _, err = api.PutObject(&args) return } diff --git a/bench/tools/aisloader/test/ci-test.sh b/bench/tools/aisloader/test/ci-test.sh index 111316c638e..bb774e6e592 100755 --- a/bench/tools/aisloader/test/ci-test.sh +++ b/bench/tools/aisloader/test/ci-test.sh @@ -31,9 +31,9 @@ if [[ -z ${bucket_name} ]]; then fi if [ "$etl" = true ]; then - aisloader -bucket="${bucket_name}" -duration="$duration" -pctput=100 -provider=ais -maxsize=10Mib -minsize=1Mib -totalputsize=5Gib -cleanup=false -numworkers=8 -readertype=tar - aisloader -bucket="${bucket_name}" -duration="$duration" -pctput=10 -provider=ais -maxsize=10Mib -minsize=1Mib -totalputsize=5Gib -cleanup=true -numworkers=8 -readertype=tar -etl=tar2tf + aisloader -bucket="${bucket_name}" -duration="$duration" -pctput=100 -provider=ais -maxsize=10MiB -minsize=1MiB -totalputsize=5GiB -cleanup=false -numworkers=8 -readertype=tar + aisloader -bucket="${bucket_name}" -duration="$duration" -pctput=10 -provider=ais -maxsize=10MiB -minsize=1MiB -totalputsize=5GiB -cleanup=true -numworkers=8 -readertype=tar -etl=tar2tf else - aisloader -bucket="${bucket_name}" -duration="$duration" -pctput=100 -provider=ais -maxsize=10Mib -minsize=1Mib -totalputsize=10Gib -cleanup=false -numworkers=8 - aisloader -bucket="${bucket_name}" -duration="$duration" -pctput=10 -provider=ais -maxsize=10Mib -minsize=1Mib -totalputsize=10Gib -cleanup=true -numworkers=8 + aisloader -bucket="${bucket_name}" -duration="$duration" -pctput=100 -provider=ais -maxsize=10MiB -minsize=1MiB -totalputsize=10GiB -cleanup=false -numworkers=8 + aisloader -bucket="${bucket_name}" -duration="$duration" -pctput=10 -provider=ais -maxsize=10MiB -minsize=1MiB -totalputsize=10GiB -cleanup=true -numworkers=8 fi diff --git a/cmd/cli/cli/arch_hdlr.go b/cmd/cli/cli/arch_hdlr.go index 6fac0227c73..351cb753377 100644 --- a/cmd/cli/cli/arch_hdlr.go +++ b/cmd/cli/cli/arch_hdlr.go @@ -227,7 +227,7 @@ func archMultiObjHandler(c *cli.Context) error { return nil } // do - _, err := api.ArchiveMultiObj(apiBP, a.rsrc.bck, msg) + _, err := api.ArchiveMultiObj(apiBP, a.rsrc.bck, &msg) if err != nil { return V(err) } @@ -379,7 +379,7 @@ func a2aRegular(c *cli.Context, a *archput) error { debug.Assert(!a.appendOnly) putApndArchArgs.Flags = apc.ArchAppendIfExist } - err = api.PutApndArch(putApndArchArgs) + err = api.PutApndArch(&putApndArchArgs) if progress != nil { progress.Wait() } @@ -507,7 +507,7 @@ loop: Reader: sgl, SkipVC: true, } - _, err := api.PutObject(putArgs) + _, err := api.PutObject(&putArgs) return V(err) } }(shardNum, shardName)) diff --git a/cmd/cli/cli/multiobj.go b/cmd/cli/cli/multiobj.go index dab5636c83e..2ec7838c10f 100644 --- a/cmd/cli/cli/multiobj.go +++ b/cmd/cli/cli/multiobj.go @@ -73,10 +73,10 @@ func multiobjTCO(c *cli.Context, bckFrom, bckTo cmn.Bck, listObjs, tmplObjs, etl msg.Name = etlName text = "Transforming objects" xkind = apc.ActETLObjects - xid, err = api.ETLMultiObj(apiBP, bckFrom, msg) + xid, err = api.ETLMultiObj(apiBP, bckFrom, &msg) } else { xkind = apc.ActCopyObjects - xid, err = api.CopyMultiObj(apiBP, bckFrom, msg) + xid, err = api.CopyMultiObj(apiBP, bckFrom, &msg) } if err != nil { return err diff --git a/cmd/cli/cli/object.go b/cmd/cli/cli/object.go index 716990fb402..69d9477c57e 100644 --- a/cmd/cli/cli/object.go +++ b/cmd/cli/cli/object.go @@ -197,7 +197,7 @@ func concatObject(c *cli.Context, bck cmn.Bck, objName string, fileNames []strin Reader: fh, Handle: handle, } - handle, err = api.AppendObject(appendArgs) + handle, err = api.AppendObject(&appendArgs) if err != nil { return fmt.Errorf("%v. Object not created", err) } @@ -210,7 +210,7 @@ func concatObject(c *cli.Context, bck cmn.Bck, objName string, fileNames []strin if progress != nil { progress.Wait() } - err := api.FlushObject(api.FlushArgs{ + err := api.FlushObject(&api.FlushArgs{ BaseParams: apiBP, Bck: bck, Object: objName, diff --git a/cmd/cli/cli/verbfobj.go b/cmd/cli/cli/verbfobj.go index 2bc8df39716..da638d5d94d 100644 --- a/cmd/cli/cli/verbfobj.go +++ b/cmd/cli/cli/verbfobj.go @@ -194,7 +194,7 @@ func (p *uparams) _putOne(c *cli.Context, fobj fobj, reader cos.ReadOpenCloser, Size: uint64(fobj.size), SkipVC: skipVC, } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) return } @@ -233,7 +233,7 @@ func (p *uparams) _a2aOne(c *cli.Context, fobj fobj, reader cos.ReadOpenCloser, debug.Assert(!a.appendOnly) putApndArchArgs.Flags = apc.ArchAppendIfExist } - return api.PutApndArch(putApndArchArgs) + return api.PutApndArch(&putApndArchArgs) } ////////// @@ -377,7 +377,7 @@ func putRegular(c *cli.Context, bck cmn.Bck, objName, path string, finfo os.File Cksum: cksum, SkipVC: flagIsSet(c, skipVerCksumFlag), } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) if progress != nil { progress.Wait() } @@ -430,7 +430,7 @@ func putAppendChunks(c *cli.Context, bck cmn.Bck, objName string, r io.Reader, c pi.printProgress(int64(n)) }) } - handle, err = api.AppendObject(api.AppendArgs{ + handle, err = api.AppendObject(&api.AppendArgs{ BaseParams: apiBP, Bck: bck, Object: objName, @@ -449,7 +449,7 @@ func putAppendChunks(c *cli.Context, bck cmn.Bck, objName string, r io.Reader, c if cksumType != cos.ChecksumNone { cksum.Finalize() } - return api.FlushObject(api.FlushArgs{ + return api.FlushObject(&api.FlushArgs{ BaseParams: apiBP, Bck: bck, Object: objName, diff --git a/cmd/cli/go.mod b/cmd/cli/go.mod index 4a13f1847dd..603f2e11857 100644 --- a/cmd/cli/go.mod +++ b/cmd/cli/go.mod @@ -4,7 +4,7 @@ go 1.21 // direct require ( - github.com/NVIDIA/aistore v1.3.22-0.20231122173923-dfc4900d4807 + github.com/NVIDIA/aistore v1.3.22-0.20231125154206-22015e78a64d github.com/fatih/color v1.16.0 github.com/json-iterator/go v1.1.12 github.com/onsi/ginkgo v1.16.5 diff --git a/cmd/cli/go.sum b/cmd/cli/go.sum index 61102429455..c5bad65c39a 100644 --- a/cmd/cli/go.sum +++ b/cmd/cli/go.sum @@ -1,7 +1,7 @@ code.cloudfoundry.org/bytefmt v0.0.0-20190710193110-1eb035ffe2b6/go.mod h1:wN/zk7mhREp/oviagqUXY3EwuHhWyOvAdsn5Y4CzOrc= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/NVIDIA/aistore v1.3.22-0.20231122173923-dfc4900d4807 h1:izU/ATdRjTgzrtthnnMWcZE5xMYbdqBe/lMnx77Bhcg= -github.com/NVIDIA/aistore v1.3.22-0.20231122173923-dfc4900d4807/go.mod h1:cOTgDt5fVCQOB+rnvYZgVFRF3dEzPqu8f22F3F+Yvtg= +github.com/NVIDIA/aistore v1.3.22-0.20231125154206-22015e78a64d h1:M2Wa2gSi3yAUz8flRUF1yHZBSUVAxLL437rBgXqoso0= +github.com/NVIDIA/aistore v1.3.22-0.20231125154206-22015e78a64d/go.mod h1:cOTgDt5fVCQOB+rnvYZgVFRF3dEzPqu8f22F3F+Yvtg= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA= diff --git a/tools/client.go b/tools/client.go index 5b066bdee34..f0cbe0744c3 100644 --- a/tools/client.go +++ b/tools/client.go @@ -101,7 +101,7 @@ func Put(proxyURL string, bck cmn.Bck, objName string, reader readers.Reader, er Cksum: reader.Cksum(), Reader: reader, } - _, err := api.PutObject(putArgs) + _, err := api.PutObject(&putArgs) if err == nil { return } @@ -357,7 +357,7 @@ func PutRandObjs(args PutObjectsArgs) ([]string, int, error) { // We could PUT while creating files, but that makes it // begin all the puts immediately (because creating random files is fast // compared to the list objects call that getRandomFiles does) - _, err = api.PutObject(api.PutArgs{ + _, err = api.PutObject(&api.PutArgs{ BaseParams: bp, Bck: args.Bck, ObjName: objName, @@ -389,7 +389,7 @@ func PutRandObjs(args PutObjectsArgs) ([]string, int, error) { func PutObjectInRemoteBucketWithoutCachingLocally(t *testing.T, bck cmn.Bck, object string, objContent cos.ReadOpenCloser) { bp := BaseAPIParams() - _, err := api.PutObject(api.PutArgs{ + _, err := api.PutObject(&api.PutArgs{ BaseParams: bp, Bck: bck, ObjName: object, diff --git a/tools/client_test.go b/tools/client_test.go index 61e461fdfc2..705097d1d35 100644 --- a/tools/client_test.go +++ b/tools/client_test.go @@ -59,7 +59,7 @@ func putFile(size int64, cksumType string) error { Cksum: r.Cksum(), Reader: r, } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) os.Remove(path.Join(dir, fn)) return err } @@ -76,7 +76,7 @@ func putRand(size int64, cksumType string) error { Cksum: r.Cksum(), Reader: r, } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) return err } @@ -93,7 +93,7 @@ func putSG(sgl *memsys.SGL, size int64, cksumType string) error { Cksum: r.Cksum(), Reader: r, } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) return err } diff --git a/tools/common.go b/tools/common.go index 5516107e4de..ceaf7eea504 100644 --- a/tools/common.go +++ b/tools/common.go @@ -138,7 +138,7 @@ func PutObjRR(bp api.BaseParams, bck cmn.Bck, objName string, objSize int64, cks Cksum: reader.Cksum(), Reader: reader, } - _, err = api.PutObject(putArgs) + _, err = api.PutObject(&putArgs) return err }