Documentation
¶
Overview ¶
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2021-2026, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2024-2026, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2026, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2026, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2026, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2026, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2026, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2026, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2022-2025, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2026, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2024-2026, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2026, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved.
Package xact provides core functionality for the AIStore eXtended Actions (xactions).
- Copyright (c) 2021-2025, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2021-2025, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2018-2026, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2021-2026, NVIDIA CORPORATION. All rights reserved.
Package xs contains most of the supported eXtended actions (xactions) with some exceptions that include certain storage services (mirror, EC) and extensions (downloader, lru).
- Copyright (c) 2022-2026, NVIDIA CORPORATION. All rights reserved.
Package xs contains most of the supported eXtended actions (xactions) with some exceptions that include certain storage services (mirror, EC) and extensions (downloader, lru).
- Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved.
Package xs is a collection of eXtended actions (xactions), including multi-object operations, list-objects, (cluster) rebalance and (target) resilver, ETL, and more.
- Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved.
Index ¶
- Constants
- Variables
- func FreeCOI(a *CoiParams)
- func Preg()
- func PrmObjName(objfqn, dirfqn, prefix string) (_ string, err error)
- func RenewBlobDl(xid string, params *core.BlobParams, oa *cmn.ObjAttrs) xreg.RenewRes
- func Treg(coi COI)
- type BckRename
- type COI
- type CoiParams
- type CoiRes
- type Election
- type LsoRsp
- type LsoXact
- type Rebalance
- type Resilver
- type TestBmvFactory
- type XactArch
- func (r *XactArch) BeginMsg(msg *cmn.ArchiveBckMsg, archlom *core.LOM) (err error)
- func (r *XactArch) CtlMsg() string
- func (r *XactArch) DoMsg(msg *cmn.ArchiveBckMsg)
- func (r *XactArch) FromTo() (src, dst *meta.Bck)
- func (r *XactArch) Name() (s string)
- func (r *XactArch) Run(wg *sync.WaitGroup)
- func (r *XactArch) Snap() (snap *core.Snap)
- func (r *XactArch) String() (s string)
- func (r *XactArch) TxnAbort(err error)
- type XactBlobDl
- type XactDirPromote
- type XactMoss
- func (r *XactMoss) Abort(err error) bool
- func (r *XactMoss) Assemble(req *apc.MossReq, w http.ResponseWriter, wid string) error
- func (r *XactMoss) BcastAbort(err error)
- func (r *XactMoss) CtlMsg() string
- func (r *XactMoss) DecPending()
- func (r *XactMoss) IncPending()
- func (r *XactMoss) PrepRx(req *apc.MossReq, smap *meta.Smap, wid string, receiving, usingPrev bool) error
- func (r *XactMoss) RecvObj(hdr *transport.ObjHdr, reader io.Reader, err error) error
- func (*XactMoss) Run(*sync.WaitGroup)
- func (r *XactMoss) Send(req *apc.MossReq, smap *meta.Smap, dt *meta.Snode, wid string, usingPrev bool) error
- func (r *XactMoss) Snap() *core.Snap
- type XactNsumm
- type XactTCB
- func (r *XactTCB) Abort(err error) bool
- func (r *XactTCB) Args() *xreg.TCBArgs
- func (r *XactTCB) CtlMsg() string
- func (r *XactTCB) FromTo() (*meta.Bck, *meta.Bck)
- func (r *XactTCB) Name() string
- func (r *XactTCB) Run(wg *sync.WaitGroup)
- func (r *XactTCB) Snap() (snap *core.Snap)
- func (r *XactTCB) String() string
- func (r *XactTCB) TxnAbort(err error)
- type XactTCO
- func (r *XactTCO) BeginMsg(msg *cmn.TCOMsg)
- func (r *XactTCO) ContMsg(msg *cmn.TCOMsg)
- func (r *XactTCO) CtlMsg() string
- func (r *XactTCO) FromTo() (*meta.Bck, *meta.Bck)
- func (r *XactTCO) Name() string
- func (r *XactTCO) Run(wg *sync.WaitGroup)
- func (r *XactTCO) Snap() (snap *core.Snap)
- func (r *XactTCO) String() string
- func (r *XactTCO) TxnAbort(err error)
Constants ¶
const PrefixTcoID = "tco-"
Variables ¶
var (
ErrGone = errors.New("gone")
)
Functions ¶
func PrmObjName ¶ added in v1.3.22
func RenewBlobDl ¶ added in v1.3.22
Main Thread Worker Goroutines (N) Backend
(XactBlobDl.Run()) (chunkDownloader.run()) │
│ │ │
│ chunkWi{sgl, roff} -> workCh │ │
├──────────────────────────────────────> │ │
│ ├─> GetObjReader(roff, size) ─┤
│ │ │
│ |<── copy to a chunk file <───┤
│ │
│ ├── add chunk to manifest
│ doneCh <- chunkDone{sgl, roff} │
│ <──────────────────────────────────────┤
│ │
├── handle out-of-order (pending queue) │
│ │
├─── sequential write to RespWriter │
│ (for streaming GET) │
│ │
│ schedule the next chunk │
│ chunkWi{sgl, nextRoff} -> workCh │
│──────────────────────────────────────> │
│ │
(loop until woff >= fullSize)
===================================================================================== Consumer: `chunkDownloader.run()` - worker goroutines Each worker continuously: 1. Pull work item from workCh
- roff indicates byte range [roff, roff+chunkSize)
- SGL is a reusable buffer provided by main thread
2. Performs HTTP range request to remote backend 3. Persist chunk:
- Create chunk metadata and chunk file from LOM
- Copy data from backend reader to multi-writer: chunk file + checksum (+ SGL if RespWriter set)
- Add the chunk to the manifest
4. Notify completion: Send chunkDone{sgl, written, roff, err} to doneCh 5. Repeat: Wait for next work item on workCh
Producer: XactBlobDl - main thread ------------------------------------------------------------------------------------------------ PHASE 1: `blobFactory.Start()` and `XactBlobDl.start()` - Initialize worker and chunk manifest - Seed initial work items (chunks) to workCh (one per worker) ------------------------------------------------------------------------------------------------ PHASE 2: `XactBlobDl.Run()` - coordination loop Main thread continuously: 1. Receive chunk completion from doneCh 2. Handle out-of-order: If chunk arrived early (roff > woff), add to pending queue 3. Sequential write: Copy SGL to RespWriter if streaming, reset SGL, advance woff 4. Schedule next chunk: Send workCh <- chunkWi{sgl, nextRoff} (reuse SGL) 5. Plug holes: Walk pending queue, write chunks that are now in-order (roff == woff) 6. Check completion: If woff >= fullSize, exit loop ------------------------------------------------------------------------------------------------ PHASE 3: `XactBlobDl.Run()` fin label - finalization - Close workCh and wait for workers - On success: Compute checksum, persist manifest via lom.CompleteUfest(), update stats - On error/abort: Clean up via manifest.Abort(), update error stats ===================================================================================== Abort Flow: ----------- Abort() signals via Base.Abort() (sends to ChanAbort) and returns immediately. It does NOT wait for workers - cleanup happens in the main thread:
Worker mode (runWorkers):
- Main thread receives <-ChanAbort(), jumps to cleanup
- close(workCh) signals workers to exit
- wg.Wait() blocks until all workers complete their current do() call
- Returns error -> finalize() -> manifest.Abort() cleans up chunk files
Serial mode (runSerial):
- IsAborted() checked between chunks -> returns error
- finalize() -> manifest.Abort() cleans up chunk files
Note: manifest.Abort() is called only AFTER all I/O has stopped.
=====================================================================================
Types ¶
type BckRename ¶ added in v1.4.0
type BckRename struct {
*XactTCB
}
type CoiParams ¶ added in v1.3.26
type CoiParams struct {
Xact core.Xact
OAH cos.OAH // object attributes after applying core.GetROC
Config *cmn.Config
BckTo *meta.Bck
core.GetROC
core.PutWOC
ETLArgs *core.ETLArgs
ObjnameTo string
Buf []byte
OWT cmn.OWT
Finalize bool // copies and EC (as in poi.finalize())
DryRun bool // no changes
LatestVer bool // can be used without changing bucket's 'versioning.validate_warm_get'; see also: QparamLatestVer
Sync bool // see core.GetROC at core/ldp.go
ContinueOnError bool // when false, a failure to copy triggers abort
}
type LsoXact ¶
type LsoXact struct {
// contains filtered or unexported fields
}
`on-demand` per list-objects request
type Resilver ¶
type Resilver struct {
Args *xreg.ResArgs
// runtime
Nbusy atomic.Int64
// base
xact.Base
// contains filtered or unexported fields
}
type TestBmvFactory ¶
type TestBmvFactory = bmvFactory
type XactArch ¶
type XactArch struct {
// contains filtered or unexported fields
}
func (*XactArch) DoMsg ¶ added in v1.3.28
func (r *XactArch) DoMsg(msg *cmn.ArchiveBckMsg)
type XactBlobDl ¶ added in v1.3.22
func (*XactBlobDl) CtlMsg ¶ added in v1.4.1
func (r *XactBlobDl) CtlMsg() string
func (*XactBlobDl) Name ¶ added in v1.3.22
func (r *XactBlobDl) Name() string
func (*XactBlobDl) Run ¶ added in v1.3.22
func (r *XactBlobDl) Run(wg *sync.WaitGroup)
func (*XactBlobDl) Size ¶ added in v1.3.26
func (r *XactBlobDl) Size() int64
func (*XactBlobDl) Snap ¶ added in v1.3.22
func (r *XactBlobDl) Snap() (snap *core.Snap)
func (*XactBlobDl) String ¶ added in v1.3.26
func (r *XactBlobDl) String() string
type XactDirPromote ¶
func (*XactDirPromote) CtlMsg ¶ added in v1.4.1
func (r *XactDirPromote) CtlMsg() string
func (*XactDirPromote) Run ¶
func (r *XactDirPromote) Run(wg *sync.WaitGroup)
func (*XactDirPromote) SetFshare ¶
func (r *XactDirPromote) SetFshare(v bool)
func (*XactDirPromote) Snap ¶ added in v1.3.16
func (r *XactDirPromote) Snap() *core.Snap
type XactMoss ¶ added in v1.3.30
type XactMoss struct {
xact.DemandBase
// contains filtered or unexported fields
}
func (*XactMoss) Assemble ¶ added in v1.3.30
gather other requested data (local and remote); emit resulting archive (phase 3)
func (*XactMoss) BcastAbort ¶ added in v1.3.30
func (*XactMoss) CtlMsg ¶ added in v1.4.1
read from StatsUpdater and report: 1) _global_ target metrics, and 2) this xaction's just-in-time _pending_ and bewarm
func (*XactMoss) DecPending ¶ added in v1.3.30
func (r *XactMoss) DecPending()
func (*XactMoss) IncPending ¶ added in v1.3.30
func (r *XactMoss) IncPending()
func (*XactMoss) PrepRx ¶ added in v1.3.30
func (r *XactMoss) PrepRx(req *apc.MossReq, smap *meta.Smap, wid string, receiving, usingPrev bool) error
(phase 1)
func (*XactMoss) RecvObj ¶ added in v1.3.30
demux -> wi.recv() note convention: received hdr.ObjName is `nameInArch` (ie., filename in resulting TAR)