Skip to content

3.4

Compare
Choose a tag to compare
@alex-aizman alex-aizman released this 28 Mar 22:34

Highlights

  • Kubernetes Operator: a separate repository;
  • Cluster life-cycle management: maintenance (node), decommission and shutdown (node and cluster);
  • CLI: implement (category, verb, subject) auto-completions; numerous improvements;
  • Global Cluster Configuration - versioned, replicated, protected; per-node capability to override global defaults;
  • System Metadata (5 types): unified CCS formatting, instance and meta-versioning, backward compatibility;
  • Authentication and ACLs: add users and roles, docs, tests, bucket and cluster management, CLI;
  • ETL: AIS transport streams, GCP and minikube, CI and Jenkins, stress tests (*);
  • PDU-based intra-cluster transport, streaming objects of unknown size;
  • Performance: memory pooling, in-memory metadata;
  • HDFS on the back – in total, supporting 6 different backends;
  • DNS names - supporting hostnames and/or IPv4 in public and intra-cluster networks;
  • Resilver: resume upon reboot, run on a selected node;
  • Cloud: improve AWS versioning, improve error handling;
  • Erasure Coding: improved stability for Cloud buckets; handle low memory and OOM;
  • Distributed shuffle (dSort): improve stability, optimize memory and CPU usage;
  • All subsystems and core: productization, stabilization, bug fixing, refactoring across board

Core

  • unify bucket(name, provider, namespace) transfer - part one - !3340
  • general: refactor and simplify cold Get - !3345
  • keepalive: do not decrease timeout on connection error - !3444
  • (new) metadata write policy - !3513, !3596
  • LOM minification - !3521
  • fs/cluster: generalize fs.GetContentFQN with interface - !3548
  • cluster: remove some redundancy in CT and LOM structures - !3549
  • cmn: return ReadOpenCloser on ReadOpenCloser.Open - !3562
  • memsys: remove unused SliceReader - !3563
  • LOM: remove one field - !3570
  • LOM: enforce rlock - !3615
  • support (DNS) hostnames for the public and intra-cluster networks - !3616
  • fix passing origURLBck in bucket init - !3720
  • LOM In Flight (LIF) - !3765
  • mem-pool LOM - !3722
  • mem-pool GET, PUT, and COPY runtime - !3825
  • mem-pool LOM (part two) - !3839
  • mem-pool LOM (part three - rebalance) - !3878
  • copy & transform flows: more mem-pooling and refactoring - !3879
  • extend core structs to support possible within-meta-version extensions - !4239
  • on-disk meta-versioning and backward compat (part one) - !4023
  • meta-versioning and backward compatibility (part two) - !4037
  • meta-versioning and backward compatibility (part three) - !4061
  • meta-versioning and backward compatibility (part four) - !4075
  • refactor http-common - !3639, !3641, !3649, !3656, !3660, !3788, !3793, !3816
  • transport: remove roff - !3661
  • transport: pool obj-reader struct - !3662
  • transport: always execute send-completion logic - !3936
  • transport: use interface{} instead of unsafe.Pointer as callback argument - !3953
  • minor refactor of proxy election method - !3582
  • ignore TLS handshake errors - !3586
  • refactor bucket initialization and permission check - !3590
  • add missing unlock in GET object - !3681
  • fix rename to accept bucket with backend buckets - !3684
  • send props on create bucket in message instead of query - !3692
  • pre-decide which type of lock should be taken on CopyObject - !3738
  • ensure that remote object was correctly fetched after UpgradeLock - !3761
  • generalize creating default bucket props - !3775
  • fail early when trying to explicitly create a cloud or HTTP bucket - !3778
  • correctly handle creation of a bucket with backend bucket - !3782
  • fix sending error when part of the object was already sent - !3799
  • determine internally if we should skip validate in defaultBckProps - !3807
  • correctly skip bmd modify when terminate flag is set - !3889
  • revise/unify error handling - !3929
  • fix unlock panic when copying an object - !3935
  • unmarshal HTTPError on call - !3608
  • do not append redundant call frame to error - !3821
  • correctly send error on bucket summary - !4100
  • add new function for extracting QueryBcks from request - !4105
  • unify listing and getting summary - !4106
  • remove err from bckInitArgs struct and rename queryBck - !4123
  • add stronger validation for bucket in bckInitArgs - !4124
  • return error on missing required query parameter - !4126
  • ensure latest bmd when doing list and summary - !4135
  • fix returning error when begin phase in bucket creation fails - !4138
  • correctly handle init remote ais cluster bucket - !4139
  • remove vmd creation on user register - !4152
  • pass error when querying daemon info - !4154
  • initialize bucket on bucket summary - !4164
  • start resilver if the new mountpath was added - !4180
  • revise startup sequence - !4191
  • earlystart: fix possible disconnect between rmd and smap - !3984
  • earlystart: resume global rebalance (part two) - !4000
  • synchronize remote AIS attachments when target joins (part two) - !4202
  • general: fix head object on remote AIS bucket - !4204
  • revise metasync receive - !4206
  • Sync RMD when a node joins - !4193
  • wait for metasync when decommissioning a target - !4087

CLI

  • revamp 'show rebalance' - !3551
  • reorganize proxy and targets templates - !3552
  • do not show nodes status when all online - !3554
  • fix put progress bar report for large uploads - !3556
  • show deployment type of nodes in ais show cluster - !3557
  • ais rename issues - !3560
  • introduce templates table - !3566
  • use colors in messages - !3578
  • add wait flag for copy and etl bucket - !3583
  • correctly handle errors from HTTP server - !3584
  • fix error messages - !3658
  • change the way ais displays daemon configs - !3666
  • fix AuthN errors and a little refactoring - !3677
  • Change the rename command to mv (part two) - !3675
  • panic when setting an invalid bucket property - !3695
  • Improve 'ais show config nonexistent' error - !3711
  • fix matching fail checks in tests - !3715
  • completion for bucket permissions - !3733
  • Update 'show object' to display properties vertically - !3743
  • fix makePairs to accept values with = characters - !3747
  • Remove cp objects from help message - !3764
  • Rebalances cannot be complete if none exist - !3766
  • Add a wait option for mv bucket - !3767
  • fix printing download ID on the start - !3599
  • small ETL improvements - !3603
  • Imply obj name as out_file in get command - !3640
  • change the rename command to mv - !3668
  • highlight bucket properties that differ from default ones - !3686
  • complete option values - !3699
  • Add support for graceful shutdown - !3805
  • improve AuthN UX - !3842
  • revoke token command - !3880
  • AuthN user permissions - !3887
  • TAB-TAB completion and parsing for user-friendly permission when adding role - !3888
  • Introduce object and bucket top level commands - !4029
  • Move rm download/dsort inside job - !4043
  • improve gen-shards input and allow specifing provider - !4048
  • Add ais show auth and ais show bucket - !4062
  • use standard name for no-color flag - !4068
  • Various grammar/wording changes - !3998
  • Introduce cluster and disk top level command - !4006
  • force flag for node maintenance - !4007
  • Introduce job top level command - !4017
  • Introduce advanced top level command - !4018
  • fix setting cluster/daemon config - !4076
  • Fix panic when aliases have subcommands - !4077
  • fix duplicated ais auth show command - !4082
  • refactor parsing bucket or bucket + objName URIs - !4085
  • Get daemon ID from daemon itself instead of API call - !4091
  • add parse functions tests - !4095
  • require bucket only for bucket xactions - !4104
  • show targets in maintenance - !4133
  • allow viewing cluster config - !4147
  • scope based props validation in configure command - !4148
  • Make verbose more consistent for show cluster - !4156
  • Fix ordering in show cluster - !4182
  • add config option to set default provider - !4189
  • Update version number - !4192
  • make object name optional for evict command - !4203
  • local and cluster config displaying - !4230
  • docs improvements and more polish - !4240
  • add 'ais cluster show bmd' command - !4241

Distributed Shuffle (dSort)

  • general: use new optimized msgp method - !3553
  • Use job instead of manager in dSort errors - !3667
  • access lom size only when put has been successful - !3843
  • re-load lom under lock when sending to another target - !3844
  • use cmn.Bck instead of bare name and provider - !4066
  • improve and add more logging - !4093
  • correctly cleanup resources when ignoring duplicated records - !4109
  • ignore targets in maintenance - !4166

Authentication & User management

  • Allow changing bucket permissions for read-only buckets - !3561
  • fix panic when checking restricted user's permissions - !3841
  • correct checking user's role permissions - !3857
  • do not cache generated tokens - !3858
  • AuthN docs - !3881
  • Authn docs and code review - !3892
  • API to change configuration on the fly (1 of 2) - !3947
  • fix returning info for a single cluster, update tests - !3987
  • AuthN refactoring: move to its own package - !4171
  • revise access permissions (ACL) - !3744
  • Improve bucket ACL check - !3757

ETL

  • use user defined ID as name - !3571
  • fix minikube playground etl + cloud providers - !3565
  • minor improvements and refactoring - !3671
  • add tests for target down - !3674
  • use a separate GCP bucket for cloud tests - !3701
  • add better cloud warm/cold ETL object tests - !3703
  • add large bucket test - !3679
  • health observability (part one) - !3683
  • run health tests - !3763
  • wait longer for pods metrics - !3770
  • add tests for occasionally failing transformation - !3785
  • broadcast list request to all targets - !3787
  • make failing ETL test less flacky - !3796
  • fixes around k8s.Detect() usage - !3801
  • better observability of ETLBigBucketTest - !3818
  • add objects and bytes count check - !3823
  • don't run big bucket test on single target deployment - !3836
  • test abort in the middle of running - !3852
  • tests improvements, better cleanups, fail faster - !3884
  • remove already fixed TODO comment - !3896
  • new StopCh for each etl big bucket test case - !3899
  • introduce single request timeout for ETL Bucket - !3900
  • set python runtime image pull policy to Always - !3909
  • set request timeout for TestETLBigBucket - !3910
  • minor tests improvements - !3913
  • more verbose Pod ready failure message - !3980
  • ETL: failfast if we know starting an ETL will fail - !3990
  • fix health status code regression - !4003
  • don't skip TestETLObjectCloud - !4004
  • more precise health error message - !4111
  • propagate whole bucket info to etl requests - !4140
  • wait for rebalance to complete after target down test - !4153

K8s

  • dev: support redeploy k8s; and datascience container - !3577
  • k8s: add fallback env variable when HOSTNAME is not reliable - !3567
  • k8s: decrease default curl timeouts on bootstrap - !3594
  • k8s: simplify and rewrite building and pushing aistore/aisnode image - !3610
  • k8s: prod docker image build node with all providers - !3659
  • fs: run mountpaths integration tests on minikube - !4012
  • deploy: increase default memory limit on minikube - !4051
  • deploy: add metrics-server to minikube deployment - !3689
  • minikube: update docker image tag - !3726
  • minikube: update image to aisnode:minikube - !3746
  • minikube: optionally deploy metrics collection - !3749
  • general: rename minikube testing build tag - !3786
  • general: waiting for primary to become ready (minikube + tests) - !3808
  • minikube: minor fixes in deploy scripts - !3812
  • minikube: allow multitarget deployment and use it on jenkins - !3835
  • minikube: build with debug on jenkins - !3938
  • minikube: disable cgo for node build - !3942
  • minikube: fix fspaths config - !4177
  • k8s: remove wait for service logic from container start-up script - !3815
  • k8s: update start up script - !3959
  • k8s: AIS_HELM_DEPLOYMENT variable as string - !3985
  • jenkins: update RE variable for K8s tests - !4040
  • skip public net hostname validation on K8S environment - !3637
  • k8s: add Dockerfile for initContainer - !3651

EC

  • allows setting Data:Parity for a bucket if the number of nodes is between... - !3708
  • use LIF where possible - !3789
  • load recovered LOM - !3806
  • configuration option 'disk_only' - !3827
  • correct LOM loading when PUTting an object - !3838
  • remove unused cksumType parameter - !3847
  • do not call lom.Load while deleting an encoded object - !3856
  • mem-pool cluster nodes - !3973
  • TestDestoryBucket - !4057
  • add slice locking when receiving, sending, and deleting - !4079
  • encode and decode xactions refactoring - !4089
  • EC xactions - refactoring on-demand - !3607
  • EC cloud test fix - !3966
  • EC putjogger refactoring - !3906
  • EC getjogger refactoring - !3919

Downloader

  • fix bucket backend provider check - !3810
  • refactor of CompareObjects test - !3845
  • remove special parameter for lom.Size - !3851
  • synchronize requests on dispatcher startup - !4019
  • correctly calculate download latency - !4070
  • listen on abort when waiting on throttler - !4071
  • improve checking if the task still exists - !4094
  • improve context cancel logic + minor refactor - !4121
  • Downloader: fix uploading to Cloud bucket - !3598
  • allow downloading to cloud bucket - !3587
  • return first error on download start request - !3592

API

  • add http error message when doing HEAD request on bucket - !3600
  • cloud: add API to create buckets for cloud providers - !3670
  • return bucket props in single header - !3682
  • move HEAD header error check to checkResp func - !3688
  • cmn: remove unused API constants - !3690
  • return 404 on wrong node id for config request - !3712
  • API change: bucket props-to-update - !3755
  • Add support for graceful node shutdown and related CLI - !3828
  • CLI and Single node resilver - !3893
  • set cluster config using cmn.ConfigToUpdate struct - !3894
  • fix closing reader in DoReqWithRetry function - !3926
  • add an option to evict only data for remote buckets - !3958
  • pass node as parameter to GetDaemonConfig function - !4036
  • fix 'get remote cluster list' API - !4059
  • cmn: cleanup api constants - !4083
  • Reset cluster or daemon to cluster configs - !4150
  • Workaround for remote ais bucket create - !4208
  • Refactor httpcluget GetWhatRemoteAIS - !4210

General

  • xact: remove unused return error parameter from Run methods - !3574
  • xact: always call Finish on the end of xaction - !3576
  • cloud providers: validations, docs (updates) - !3579
  • dl: auto create destination bucket if not exists - !3580
  • lru: minor refactor of main Run function - !3581
  • xact: print list objects error when not aborted - !3585
  • Allow cloud provider aliases (as in CLI) - !3588
  • metadata write policy (part two) - !3589
  • general: remove unnecessary query append - !3593
  • Use correct RecvType for each DataMover - !3597
  • LOM: assert locking - !3604
  • control plane: update forwardCP to utilize original req body - !3606
  • transfer bucket: correctly set objects versions - !3609
  • debug: remove Enabled, add Func() - !3611
  • fix issue with cached backend bucket props; tests evict backend bucket - !3612
  • bckInitArgs remove origURLBck field - !3613
  • fix rename bucket with backend and add test - !3614
  • Idle property for XactDemand - !3617
  • test fixes: cloud-mirror & rename-with-backend - !3618
  • bucket uname query (rename & doc) - !3619
  • fix bucket props when copying and creating on the fly - !3620
  • do not clone config; refactoring - !3621
  • fix intra control/data ports - !3622
  • Improving checkRESTItems - !3623
  • make target health handler public - !3624
  • Replace variadic path item list in checkREST calls with "constant" slices - !3625
  • optimize CoW config saving when updating cluster maps - !3626
  • handlers use flags for network access - !3627
  • fix smap-modifier - !3628
  • keepalive: revise cluster map update - !3629
  • sys: refactor & simplify - !3630
  • limit intra-cluster broadcast - !3631
  • health: refactor proxy/target health handlers - !3632
  • Remove ActRecoverBck - !3633
  • fix predeclared identifier usage - !3635
  • Reuse apiRequest.parse in proxy - !3636
  • fix setting intra-call headers - !3638
  • config: rename ipv4 to hostname - !3642
  • general: correctly register health handler on proxy - !3644
  • general: add missing space in log message - !3645
  • general: refactor join words with URLPath - !3647
  • health: external health check types - !3648
  • cloud: add support for HDFS provider - !3653
  • general: change format of stack printout in logs - !3654
  • fs: move markers when mountpath is removed or disabled - !3663
  • general: update copyright statement - !3664
  • txn: simplify alloc and free of bcast args - !3669
  • cloud: change the order of the methods to match interface - !3672
  • general: add better validation for bucket rename - !3673
  • config: Put and Begin/Commit/Discard - !3676
  • cmn: split fields in Extra by provider - !3680
  • Put Error to Header response if a request is a HEAD one - !3685
  • config: add daemon role field; fix fspath config validation - !3687
  • cmn: move code to match order of providers - !3691
  • cmn: validate HDFS config addresses - !3693
  • general: add HDFS build tag and allow selecting it during make deploy - !3694
  • scripts: ipv4 => hostname - !3696
  • add text: data redundancy - multiple options - !3697
  • metadata write policy default (minor) - !3700
  • deploy: easier configuration for cloud providers - !3702
  • Security: Reduce file permissions to user and group only - !3705
  • remove OpenAPI-based client generator (swagger-codegen) - !3706
  • revise lom create-file - !3709
  • cache bucket dirs with mountpaths - !3710
  • deploy: fix deployment of next tier cluster in cleanup script - !3713
  • general: fix grammar mistakes - !3717
  • general: remove implicit cloud provider (cloud://) leftovers - !3718
  • general: remove node name prefix from bucket errors - !3719
  • change in terminology: backend provider - !3730
  • general: add update config option - !3732
  • general: correctly handle lookup of HDFS bucket - !3737
  • general: fixes around HDFS support - !3739
  • change in terminology: backend provider (part two) - !3741
  • Using *ToUpdate for updating config - !3742
  • general: fix implementation of UpgradeLock - !3745
  • general: fixes around HDFS provider - !3751
  • general: rename cloud package to backend - !3752
  • cluster: fix and improve implementation of UpgradeLock - !3754
  • extend providers tests; more test-skipping options - !3756
  • general: rename CloudVersion to RemoteVersion - !3762
  • Use correct permissions for every initAndTry - !3768
  • backend: remove only extra info from AWS error - !3769
  • general: rename cloud_mock to backend_mock - !3771
  • general: fix resetting bucket props for HDFS bucket - !3772
  • simplify lom.bucket (ref) - !3779
  • PUT(mirror): optimize-out one channel from the datapath - !3780
  • reduce wack-target memory footprint - !3792
  • backend: relax address connectivity checking for HDFS backend provider - !3795
  • backend: correctly set ContinuationToken for HDFS's list objects - !3797
  • cmn: remove | character from HTTP error string - !3798
  • makefile: better AIStore running check - !3802
  • general: make skip_verify_crt option configurable in aisfs and cli - !3803
  • backend: correctly handle prefix in HDFS's list objects - !3809
  • general: rename cloud to broader terms remote or backend - !3811
  • backend: correctly skip HDFS files which do not match prefix - !3817
  • reinforce LOM loading - !3824
  • fix/revise delete-obj; evict to return status - !3829
  • unloaded deleted object - !3830
  • general: remove special marker for cases when the LOM is loaded - !3831
  • general: use consistent names and order in DeleteObject method - !3832
  • tutils: cleanup temporary directory created in PrepareObjects - !3846
  • transfer bucket: remove unused function - !3848
  • backend: fix PutObj implementation for remote ais - !3849
  • general: return copied bytes count in targets copy* methods - !3850
  • revise PUT versioning logic - !3859
  • backend: remove retry in the AIS remote cluster - !3862
  • obj: remove unused uncache field in coi structure - !3863
  • backend: simplify PutObj implementation for AIS remote cluster - !3864
  • copy-object-info: remove unnecessary lom.Loaded() asserts - !3865
  • copy&transform flow: revise and simplify put-remote - !3869
  • xaction must call Finish as soon as everything is cleaned up - !3870
  • revise copy-object: remote and local parts - !3871
  • extract cluster-wide operation into a separate source - !3891
  • review maintenance, shutdown, and decommission oper-s - !3895
  • transactions: simplify handler and fix double write bug - !3897
  • make kill timeout - !3901
  • node shutdown vs self-initiated unregister - !3904
  • revise node self-initiated removal (part two) - !3912
  • makefile: option to run tests only from specified directory - !3914
  • unify target and proxy termination - !3916
  • tutils: refactor cluster init - !3917
  • refactor invalmsghdlr and friends - !3918
  • general: login Jenkins to Docker Hub - !3920
  • general: rename cloud field and struct to backend - !3921
  • general: embed cleanup callback in the reader Close method - !3923
  • backend: refactor PutObj usage and delegate closing reader to implementation - !3924
  • Add configuration for automatic resilvering - !3928
  • revise/unify error handling (part two) - !3933
  • cmn: better OOS error message - !3934
  • revise/unify error handling (part three) - !3937
  • cmn: correctly set custom HTTP status code - !3939
  • cmn: use DurationJSON type in Bck2BckMsg struct - !3941
  • aisfs: build aisfs in test:long - !3943
  • err handler for "405 method not allowed" - !3945
  • Make complex tree of calls to IncPending and decPending a simpler one - !3948
  • jenkins: clean docker images cache - !3949
  • cmn: add comment about closing BodyR - !3951
  • general: use unlock lom on close whenever possible - !3952
  • cmn: fix parsing 'Range' HTTP header - !3955
  • LOM: strict caching and locking policy - !3956
  • revise the logic to resume rebalance - !3960
  • tutils: simplify DeployNode and CleanupNode logic - !3962
  • tutils: add CheckResp for checking response status code - !3963
  • assorted fixes - !3964
  • general: separate global and daemon config - !3965
  • graceful shutdown; can start rebalance; remove dont_run_time config - !3967
  • simplify fs.CreateBuckets - !3968
  • tutils: allow custom intervals for WaitNodeReady - !3970
  • reinforce naming convention for custom errors and error types - !3971
  • general: update build scripts to use local config - !3972
  • Use constant format strings to return common errors - !3975
  • universal quiescence - !3977
  • general: remove stray debugging message - !3979
  • general: use ErrNotFound across the codebase - !3981
  • build: replace non-existing /dev/nil with /dev/null - !3982
  • docker: revert startup wait removal for helm charts ! - !3815 - !3983
  • cmn: add Caller field to HTTPErr - !3986
  • xaction: eliminate copy-paste construction - !3988
  • general: refactor and simplification around http errors - !3994
  • on-demand stopping logic (minor) - !3997
  • Use GET for ListObjects instead of POST - !3999
  • Do not remove an object after it is rebalanced - !4001
  • general: move fields from global to local config - !4002
  • create config owner and maintain versioning - !4008
  • support software version and build time; show via API and CLI - !4009
  • HTTP header and query - !4010
  • config: fix config Validation returned from API - !4011
  • metasync global config - !4015
  • cluster: fix debug message which caused infinite recursion - !4020
  • general: use modifier to update config - !4022
  • Remove force option from maintenance - !4024
  • general: update attach/detach remote AIS to use config modifier - !4025
  • fix mutex assertion race - !4026
  • Auto rebalance settings - !4027
  • general: allow override global config - !4028
  • general: sync config on node join - !4030
  • general: fix setting global config from non-primary - !4031
  • cmn: correctly validate config confdir value - !4041
  • cmn: set ais as default provider when parsing bucket - !4042
  • general: using tags to restrict config updates - !4047
  • cmn: rename StringSet.Keys to ToSlice - !4053
  • devtools: fix wait-start-re - !4056
  • general: separate global and local config - !4063
  • Use cmn.Bck to initailize CT instead of strings - !4064
  • devtools: return pid as int instead of string - !4072
  • devtools: fix assert in PutRandObjs - !4073
  • action-message (minor ref) - !4074
  • general: refactor config management implementation - !4078
  • jenkins: force docker image prune - !4081
  • cmn: return invalid provider error from validate function - !4084
  • flatten devtools directory structure - !4088
  • redistribute VMD under lock - !4090
  • new common (part one) - !4092
  • cluster: remove unused argument - !4097
  • cluster: refactor around bck provider validation - !4098
  • Quick-fix EC test for new LOM pool - !3781
  • EC tests decrease the number of goroutines - !4102
  • Keep node in smap during shutdown - !4103
  • new common (part two) - !4107
  • config: tweak validator - !4108
  • debug: add http debug handlers (pprof and vars) - !4110
  • debug: fix pprof handler path - !4112
  • jsp authn (config and tokens) - !4114
  • general: allow setting transient cluster config - !4115
  • general: fix config change notifier - !4116
  • Get snode flags from smap - !4117
  • general: discover latest config - !4118
  • sign and version config; xmeta - !4119
  • Stop aisnode when decommissioning - !4120
  • cmn: improve QueryBcks validation methods - !4125
  • cmn: cleanup around provider validation - !4127
  • general: move metadata filenames to cmn package - !4128
  • general: store cluster config only on disk - !4129
  • general: *ToUpdate omitempty fields in json - !4130
  • general: remove json local extension - !4131
  • fs: support decommissioning, rewrite moving-markers logic - !4132
  • general: move log dir to local config - !4134
  • general: refactoring around bucket parsing and validation - !4136
  • general: explicitly require bucket provider - !4137
  • general: make fspath config representation - !4144
  • revise GET and mirror-copy load balancing - !4145
  • Improve CLI UX and documentation for configuration - !4146
  • make runtime stats expvar-observable in debug mode - !4149
  • fs: refactor around vmd - !4151
  • general: fix attach detach remote AIS - !4157
  • RmNode optional data cleanup - !4158
  • general: include config in nodeRegMeta - !4160
  • global config: add uuid - !4161
  • remove node from smap in removal-by-test case - !4162
  • unify target/proxy receive Smap logic - !4169
  • join-cluster: metasync vs node-reg-meta - !4170
  • fs: extend vmd structure with more filesystem information - !4172
  • stats: simplify-out listening for config updates and other refactoring - !4173
  • keepalive: refactor & optimize - !4174
  • support selecting remote backends at deployment time - !4175
  • cmn: add writeup about bucket validation - !4178
  • fs: add versioning to vmd - !4179
  • global config: provide for within meta-version extensions - !4181
  • Remove hardcoding in clean_deploy.sh - !4183
  • AWS: fix reading object versions for not-cached objects - !4184
  • target startup sequence: init fs first, snode second - !4187
  • cmn: move test fspaths init to config validation - !4188
  • general: remove unused code and code cleanup - !4190
  • backend: fix initialization of objMeta map - !4197
  • unify cluster-wide meta exchange (part one) - !4198
  • keep remote AIS attachments in sync when new targets join - !4199
  • general: implement decommission cluster - !4200
  • general: use proxy/target runner Stop on decommission - !4207
  • general: ensure intra(Primary) call - !4209
  • Step 2: cluMeta usage - !4211
  • Add more options for clean_deploy.sh - !4212
  • general: correct evit/destroy of remote AIS buckets - !4213
  • general: better error logging for hostname selection - !4214
  • set-bucket-props: backend - !4215
  • general: remove go routine shutdown/decommission request - !4218
  • rename http header constants - !4219
  • intra-cluster control: micro-optimizations and refactoring - !4220
  • refactor Smap out of ais msg - !4221
  • general: fix node shutdown - !4225
  • build: change default compiled providers for aisnode docker image - !4229
  • general: add shutdown marker on daemon shutdown/decommission - !4233
  • Do not panic on unexpected EOF when draining a reader - !4234
  • Add a build tag to use rproxy for all s3 requests - !4235
  • Allow disabling xattrs feature - !4237
  • Add alias ais show config cluster for consistency - !4242
  • Relax checking for Smap reliability when private network is used - !4245
  • reinforce cluster UUID when joining and starting up - !4246

Tests and CI

  • skip flaky TestDistributedSortKillTargetDuringPhases test - !3550
  • ci: bring back skip-ci feature - !3569
  • add bytes limit to TestDownloadJobLimitConnections - !3602
  • use t.Cleanup to destroy and evict test buckets - !3605
  • fix s3 tests to work with HTTPS - !3643
  • do not require AIS_ENDPOINT when testing on K8s - !3646
  • ci: fix tags on k8s jobs - !3655
  • ci: update Docker image - !3725
  • test: correct check for target count in EC rebalance test - !3728
  • ci: add HDFS provider job - !3734
  • extend the scope of tests from cloud to remote buckets - !3736
  • better ETL health check - !3748
  • detect cluster deployment type, not test suite deployment type (k8s) - !3758
  • run ETL tests on jenkins - !3750
  • ci: mark all the jobs with aistore specific tags - !3652
  • ci: add timeouts for all jobs - !3716
  • ci: use native solution for downloading dependecies - !3773
  • ci: fix permissions in HDFS job - !3794
  • ci: increase mountpath count and target count in k8s tests - !3822
  • ci: ignore lint for blocks which do not contain new variables - !3833
  • ci: allow running manual long tests on master branch - !3872
  • ci: re-enable running jobs in scheduled pipeline - !3925
  • ci: fix setup in HDFS job - !3927
  • ci: allow non-escaped pipe characters in RE variable - !4034
  • ci: add simple github workflow - !4035
  • ci: deploy metrics server on kube pipelines - !4052
  • ci: fix branch name in github workflow - !4065
  • ci: show correct path to the jenkin logs - !4069
  • ci: remove test:soak and test:bench - !4099
  • ci: rename and standardize jobs names - !4165
  • ci: use clean_deploy script to deploy cluster - !4194
  • add bytes limit to TestDownloadJobConcurrency - !3591
  • Tests: fix TestObjectPrefix filter check - !3698
  • wait for resilver after manipulating mountpaths - !3774
  • increase kube long tests timeout - !3777
  • extend ETL big bucket tests with new cases - !3783
  • add Python2 runtime for build test - !3784
  • Tests: improve EC tests' slice lookup procedure - !3791
  • skip failing EC tests for bad checksum - !3800
  • FailNow vs goroutines - !3813
  • Tests: replace full /tmp/ais traversing with fs.WalkBck - !3814
  • add new, faster and better implementation of PutRandObjs - !3819
  • do not stop ETL when it wasn't correctly started - !3820
  • skip tests with HDFS as backend bucket - !3834
  • make copy bucket tests long - !3853
  • use new version of PutRandObjs - !3866
  • remove PutObjsFromList function - !3867
  • make tutils init explicit - !3868
  • simplify TestSmoke implementation - !3873
  • show AIS logs for minikube tests on jenkins - !3874
  • increase allowed log streams for jenkins minikube - !3875
  • fix passing cksum type - !3876
  • Tests: fix ListCloudGetTargetURL test - !3882
  • fix map version sync - don't update higher version smap - !3885
  • show ETL logs when a test has failed - !3898
  • add flag to skip local tests - !3902
  • retry failed ETL YAML get from github - !3915
  • remove destination bucket after each ETL test - !3922
  • Tests: fix fshc test - !3930
  • fix evicting bucket/objects for HDFS backend provider - !3940
  • correctly set SkipArgs for local tests - !3950
  • fix bucket props for HDFS bucket - !3954
  • Tests: fix waiting for node is gone in shutdown test - !3969
  • fix restoring with diff IP - !3976
  • fix expected message error in AuthN tests - !3978
  • fix cleanup node error - !3989
  • minor refactoring around EC tests - !3995
  • verify that cliBck exists - !4005
  • Tests: correct initialization of local config in MultiProxy - !4014
  • Tests: add waiting for node is shut down in TestNodeShutdown - !4016
  • CI - collect failed Kube tests artifacts - !4021
  • Tests: TestECDisableEnableDuringLoad fix - !4033
  • fix rename-bucket typo - !4038
  • revert rename-bucket wait change - !4039
  • make sure e2e fails gracefully when there are no mountpaths - !4049
  • add test to check backend providers in list buckets - !4050
  • fix fs package tests on deployments with loopback devices - !4055
  • Tests: Add a more rigorous shutdown test - !4058
  • refactor devtools; clarify decommission - !4086
  • add config management tests - !4101
  • config tests wait for node to be ready - !4113
  • fix displayed TestETLObjectCloud name - !4141
  • remove unused test config; update log dir path - !4142
  • FSHC use number of object based on the number of mountpaths - !4143
  • Tests: use StartMaintenance instead of Decommission - !4155
  • Tests: Add tests for configuration resets - !4159
  • Tests: skip MOCK nodes when saving node command-lines for restore - !4163
  • re-enable AddNodeDuplicateIP tests - !4167
  • fix invalid url in TestRProxyGCS - !4176
  • retry starting aisfs binary - !4195
  • skip TestRWStress on HDFS backend - !4196
  • Tests: stressi rebalance - !4224

Documentation

  • close tar in imagenet ETL example - !3555
  • fix etl commands in k8 dev docs - !3558
  • update video thumbnail images and add favicon for future web use - !3559
  • revisit and update bucket documentation - !3704
  • add HDFS provider documentation - !3723
  • describe --force option for set-props - !3729
  • add HDFS tutorial - !3759
  • reword and add link to HDFS provider section - !3760
  • Remove inconsistencies in console examples - !3932
  • update options in clean_deploy script - !4054
  • Clean up dead links - !4060
  • rework bucket provider document - !4067
  • fix cli output - !4096
  • Minor polish for CLI reference - !4185
  • Update CLI demo gifs - !4222
  • minor cleanup - !4231
  • clean up for ais show and ais job - !4243
  • readme-3.4: new pics - !4238
  • Update node decommission docs - !4186