Table of Contents
- **Remote AIS clusters**
- **List objects**
- **List and summarize buckets**
- **S3 API**
- **CLI**
- **Documentation**
- **Tests**
- **Python SDK & ETL**
- **Core**
- **Refactoring & fixes**
- **Tools**
- **Build & CI**
See also:
* [Blog: AIStore 3.12 Release Notes](https://aiatscale.org/blog/2022/11/13/relnotes-3.12)
Remote AIS clusters
- list remote ais buckets; fix remote namespace containment !5567, !5621
- aliasing and bucket namespaces (major revision) !5622, !5623
- ais gateways to cache remote ais clusters (information) !5630
- extend remote ais errors - add cluster UUID !5631
- remote ais aliasing !5632
- **[API change]**: remote ais clusters (major) !5633, !5634
- **[API change]** add `HealthUptime`; use it to show remote clusters !5636
- remove support for multi-aliasing !5637
- alias vs bucket metadata !5638
List objects
- CLI to show `CACHED` (column) only when it's informative (and not when user asks `ais ls ... --cached`) !5554, !5555
- rename `list-objects` structures; regenerate message pack !5542, !5543
- amend and re-enforce _single target_ rule for remote buckets !5556
- introduce location property, phase-out target URL (property) !5557, !5559
- add custom metadata, regenerate message pack; refactor !5564, !5565
- `list-objects` version 2 (major): !5583, !5584, !5586, !5589, !5590, !5591, !5601, !5602, !5605, !5607
- [backend API change] mem-pool 'list-objects' pages !5604
- `list-objects` flow with a single target listing _remote_ props (name, size, version) !5608
- list remote pages v2: flow controls; ais gateways will now select _single target_ to execute remote call !5609, !5610
- `list-objects` to include (in listing result) custom object properties !5614
- consistency in custom props across: `get`, `put`, `head` object, and `list-objects` !5615, !5616
List & summarize buckets
- easy URL to support listing buckets via `/gs`, `/az`, and `/ais` endpoints !5486
- `list-buckets` and `get-bucket-info` API; CLI summary table !5521, !5522
- `list-buckets` version 2 (major update) !5524
- unify 'list-buckets' and 'bucket-summary' !5530, !5531
- shorter and faster `list-buckets` version: w/ presence but wo/ summary !5535, !5536- **[API change]** add `presence` filter; eliminate bucket-info control structure (is redundant); refactor !5540
- `list-buckets` and `bucket-summary` cont-d !5541
- bucket sizing: always compute two sizes: on-disk and sum objs !5544
- `bucket-summary` on-disk (apparent) vs sum-all-objects, remote vs cached !5545
- `bucket-summary` and `list-buckets` cont-d unification !5546, !5547
- `list-buckets` by target: remote ais; hdfs and http; cloud; other !5567
- rename/move bucket summary; align control structures !5568
- list remote ais buckets; fix remote namespace containment !5621
- **[API change]** `list-buckets` correctness for named bucket queries !5626
S3 API
- multipart upload !5458, !5460, !5467, !5468
- extend s3 API to support remote buckets (major) !5462
- persistent multipart state (major) !5466
- multipart GET !5472
- multipart list active uploads and upload parts (major) !5474
- return xml-formatted errors (compliance) !5480
- multipart: refine and simplify !5482
- revise `list-buckets` to include all [providers](https://github.com/NVIDIA/aistore/blob/master/docs/providers.md) !5485
- always set header `Server` when redirecting !5495
- amend [s3 compatibility](https://github.com/NVIDIA/aistore/tree/master/docs/s3compat.md) readme; add multipart example !5496
- multipart: sha256 fix; md5 not checked but computed; `aws s3api` example !5500
- xml-format errors (parts two and three) !5501
- revise `HEAD object` implementation; multipart `ETag`; miscellaneous fixes !5504
- compatibility: configurable root '/' access to AIS cluster !5572, !5573, !5574
- compatibility: assorted error codes !5620
CLI
- 'ais etl' to replace extension in transformed objects !5418
- standardize error and warning coloring !5493
- don't log and don't show backend secret !5506
- improve unknown-command messaging, provide hints !5512
- add `ais object ls` command; add `present` flags !5514
- support updated HEAD(bucket) API; 'ais ls' and permutations to show obj props !5517
- static linkage with `cgo` disabled !5526
- rename aws, et al. backend provider constants !5528, !5529
- option to display sizes either in bytes or KiB, MiB etc. units !5532
- rename sub-packages; show-unmatched & hide-header !5534
- bucket `display-name` helper (and consistent usage) !5539
- flip bucket listing default to 'present' (was 'all accessible') !5550
- option `--all` to list both buckets and objects (in remote buckets) !5551
- multi-feature completions; action-warn and action-done !5575
- show config subsections in JSON; multi-feature completions !5576
- amend config JSON printout !5577
- extend and amplify: (config | section | json) !5578
- is-time-not-set, is-object-not-cached (for consistency) !5611
- `atime` & `ctime` !5612
- throughput must be averaged over an interval of time since the previous request !5643
Documentation
- amend [main readme](https://github.com/NVIDIA/aistore/tree/master/README.md); add Reuse section !5375, !5376, !5378
- blog: [Python SDK: Getting Started](https://aiatscale.org/blog/2022/07/20/python-sdk) !5373
- add `curl` example to set backend bucket property !5380
- python/sdk: ETL !5397
- amend [main readme](https://github.com/NVIDIA/aistore/tree/master/README.md): add PyTorch integration section !5406
- remote backend; native integration !5407
- revise `ulimit`, reference checked-in version of `limits.conf` !5429
- update [CONTRIBUTING.md](https://github.com/NVIDIA/aistore/tree/master/CONTRIBUTING.md) !5459
- blog: [AIStore: Data Analysis w/ DataFrames](https://aiatscale.org/blog/2022/08/15/dask-data-analysis) demo !5469, !5473
- update [s3cmd](https://github.com/NVIDIA/aistore/tree/master/docs/s3cmd.md) readme - add multipart example !5483
- restructure and extend [getting-started](/docs/getting_started.md); revise and amend `Local Playground` option !5484
- easy URL: add readme with extended examples and comments !5487
- [REST API](https://github.com/NVIDIA/aistore/tree/master/docs/http_api.md) querying information !5641
- [REST API](https://github.com/NVIDIA/aistore/tree/master/docs/http_api.md) listing buckets (remote namespace, presence and existence) !5644
- update ETL [main readme](https://github.com/NVIDIA/aistore/tree/master/docs/etl.md), [CLI readme](https://github.com/NVIDIA/aistore/tree/master/docs/cli/etl.md), and [examples](https://github.com/NVIDIA/aistore/tree/master/sdk/python/examples) !5471
- amend [s3 compatibility](https://github.com/NVIDIA/aistore/tree/master/docs/s3compat.md) readme, add multipart example !5496
- [main readme](https://github.com/NVIDIA/aistore/tree/master/README.md): Installing from release binaries (add section) !5640
Tests
- python ETL !5410, !5461, !5476
- python `IO communicator` !5415
- tests: skipping short (minor) !5416
- pyhton/sdk: ETL stress test !5420
- add s3 multipart test !5482
- add ETL test for streaming with python runtime !5513
- re-enable and amend object-properties tests across all providers !5515
- amend `list-buckets`: add cases; up CLI !5569, !5570
- reinforce multi-object tests, fix `bucket-exists` helper !5606
- amend and fix multi-object range/list copy test !5619
- amend `list-buckets` test that checks expected result !5631
Python SDK & ETL
- ETL API part 1 !5370
- sdk version !5374
- code (re)formatting and misc !5381
- reorg Makefile dependencies !5390
- ETL APIs part 2 !5394
- bucket ETL transform API !5405
- bump sdk version to 1.0.3 !5408
- fix `IO communicator` fixes !5413
- fix transform bucket !5421, !5428
- add examples !5441
- add streaming runtime w/ refactoring and cleanup !5444
- streaming `init-code` with chunk-size param (major) !5446, !5447
- with temp debug !5448
- `init_code` changes for before and after functions !5449
- remove debug w/ minor ref !5450
- functions `filter` (new), `transform`, and `before`/`after` !5451
- runtime v2 fixes !5455
- bootstrapper; by reference !5457
- ETL API fixes !5464
- update readme (etl init_code) !5475
- extend `hpush` yaml with bitwise flags !5479
- remove unused ETL functions; add test for streaming with python runtime !5513
- update Jupyter notebook to reflect sdk changes !5548
Core
- global rebalance: initiating new vs receiving delayed ACKs !5426
- etl md: remove sgl, read-all !5470
- error handling: introduce type codes (major upgrade) !5477, !5481
- easy URL: support listing buckets via `/gs`, `/az`, and `/ais` endpoints !5486
- easy URL: add readme with extended examples and comments !5487
- user agent, internet browser: pretty-print JSON response !5492
- add `User-Agent` to http request headers !5494
- backward compatibility; remote backends !5498
- consolidate http headers; add type-cast fail !5503
- introduce error types unsupported and not-implemented-yet !5508
- refactor GET(object) !5507
- add `lom.rename-file` w/cleanups !5509
- simplify `lom.persist` & `recache/refresh` !5510
- update `atime` on PUT !5511
- HEAD(bucket): extend the API in re: cluster metadata !5516
- **[API change]** add `api.GetBucketInfo` !5519
- enumerate and unify bucket and object 'presence' vs 'existence' !5520
- `fs`: add size-bucket and refactor x-bucket-summary !5523
- backend providers as simple KVs (minor) !5525
- on the fly and (new) upon request remote bucket creation/addition !5538
- object props: remove get-node, add location and helpers !5561, !5562, !5563
- creating/adding buckets on the fly: further clarifications !5566
- debug pkg: assert-msg is redundant; minor ref !5579
- `cos-assert`; align (minor ref) !5587
- periodic stats log: tweak idleness logic !5588
- `x-archive` to always close data mover !5594
- key-value driver; probabilistic filter !5595, !5596
- embed stop channel !5597
- transport: let individual streams define max header size !5598
- intra-cluster transport: grow receive header, simplify `rx-loop` !5599
- intra-cluster transport: within-read retries !5603
- aws backend: rewrite `list-objects` versioning part, speed-up working with versioned buckets !5612, !5613
- consistency in custom props across: `get`, `put`, `head` object, and `list-objects` !5615, !5616
- simplify bucket `try-init` logic to add buckets on the fly !5628
- notifications, control plane (ref) !5629
- cluster and node 'started-up' is now uptime (was `bool`) !5635
- **[API change]** add `HealthUptime` and use it to `ais show` remote clusters !5636
Refactoring & fixes
- make deploy: mark aws secret optional to unblock startup !5379
- consolidate `xaction`, move `xs` package !5383
- move `dbdriver`, simplify !5384
- GKE, cluster restart: amend false-positive SIE (storage integrity error) detection !5412
- defer freeing `etl-md` sgl !5414
- `fieldalignment` analyzer !5431, !5432, !5433, !5434, !5435, !5437, !5438, !5440, !5442
- fix missing `curl` in aisnode k8s image !5427
- http REST: parsing etc. helpers !5488
- rename aws, etc. provider constants !5527
- `gofmt` to replace `interface{}` with `any` !5533
- refactor and revise `objwalk` pkg !5551, !5553
- delete object vs 503 status; duplicated `trname` (transport endpoint name) !5614
Tools
- scripts: revise github-release: tar.gz binaries, sha256(resulting tar.gz); naming convention !5411
- add `devtools/trand` for tests; use strong randomization for product !5465
- tools: revise `get-primary`, `wait-for-cluster-state`, `wait-smap-sync` !5571, !5580, !5581
- `aisloader`: writing non-ais buckets !5600
- tools: add `buckets-contain` helper !5627
- scripts: amend local multi-cluster deployment to `--override-backends` and more !5617, !5618
- scripts: add [install_from_binaries](https://github.com/NVIDIA/aistore/tree/master/deploy/scripts/install_from_binaries.sh) !5640
Build & CI
- github workflow: setting go version to 1.18.3 !5369
- undo lint and Go version downgrades !5371, !5372
- add `.dockerignore` !5382
- cluster-minimal image: use alpine latest, remove azure !5385
- deploy/k8s: fixes; minimal minikube deployment !5386
- pull latest minikube image in GitHub workflow !5387, !5388
- fully transition to Ubuntu 22; apt-get changes !5389
- add `limits.conf` to all docker images !5391
- deploy/prod: docker Makefile !5392
- gitlab pipeline to build and push docker images !5393
- add github workflow to build docker images !5395
- two-stage Dockerfile to produce `aisnode` for minikube !5398
- add Makefile for dev/k8s scripts !5399
- add short CI stage to the k8s yaml template !5401
- cleanup [deploy/dev/k8s](/deploy/dev/k8s) readme and scripts !5402
- add cross-compile option !5409
- upgrade all minors !5417
- rebuild and use new docker images !5436
- fix latest lint issues !5423
- fix gitlab Dockerfile !5425
- `golangci`: re-enable `nolintlint`, run go1.17, comment-out disabled !5439
- run python/etl manually (was part of test-short) !5502
- `cli` module to have its own Makefile !5505
- github-release; never-nil (minor) !5422
- lint: re-enable `nolintlint` !5424
- update docker github workflow !5430
- pylint: fix warnings !5453
- `golangci` v.49 !5489
- fully transition to Go 1.19 (part two) !5491
- docker/cluster-minimal: configure aws and gcp backends !5499
- gitlab/CLI: force back e2e test suite; upgrade and build !5552
- upgrade all minor versions !5560
- add early return (linter) !5582
- update pylint settings to skip generated files !5642