Alex Auvolat
64a6e557a4
rpc helper: small refactorings
2023-12-08 12:18:12 +01:00
Alex Auvolat
5dd200c015
layout: move block_read_nodes_of to rpc_helper to avoid double-locking
...
(in theory, this could have caused a deadlock)
2023-12-08 12:02:24 +01:00
Alex Auvolat
063294dd56
layout version: refactor get_node_zone
2023-12-08 11:50:58 +01:00
Alex Auvolat
7f2541101f
cli: improvements to the layout commands when multiple layouts are live
2023-12-08 11:24:23 +01:00
Alex Auvolat
91b874c4ef
rpc: fix system::health
2023-12-08 10:36:37 +01:00
Alex Auvolat
431b28e0cf
fix build with discovery features
2023-12-07 15:15:59 +01:00
Alex Auvolat
9cecea64d4
layout: allow sync update tracker to progress with only quorums
2023-12-07 14:51:20 +01:00
Alex Auvolat
aa59059a91
layout cli: safer skip-dead-nodes command
2023-12-07 11:56:14 +01:00
Alex Auvolat
d90de365b3
table sync: use write quorums to report global success or failure of sync
2023-12-07 11:16:10 +01:00
Alex Auvolat
95eb13eb08
rpc: refactor result tracking for quorum sets
2023-12-07 10:57:21 +01:00
Alex Auvolat
c8356a91d9
layout updates: fix the set of nodes among which minima are calculated
2023-12-07 10:30:26 +01:00
Alex
a8b0e01f88
Merge pull request 'OpenAPI specification of admin APIv1' ( #672 ) from api-v1 into main
...
Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/672
2023-11-29 15:42:46 +00:00
Alex Auvolat
c04dd8788a
admin: more info in admin GetClusterStatus
2023-11-28 14:25:04 +01:00
Alex Auvolat
539af6eac4
rpc helper: write comments + small refactoring of tracing
2023-11-28 11:12:39 +01:00
Alex Auvolat
c539077d30
cli: remove historic layout info from status
2023-11-27 16:22:27 +01:00
Alex Auvolat
11e6fef93c
cli: add layout history and layout assume-sync commands
2023-11-27 16:22:25 +01:00
Alex Auvolat
539a920313
cli: show when nodes are draining metadata
2023-11-27 13:18:59 +01:00
Alex Auvolat
78362140f5
rpc: update system::health to take into account write sets for all partitions
2023-11-27 12:10:21 +01:00
Alex Auvolat
d6d239fc79
block manager: read_block using old layout versions if necessary
2023-11-27 11:52:57 +01:00
Quentin Dufour
d1d1940252
Health info message now advertises API v1
2023-11-22 09:28:50 +01:00
asonix
92fd899fb6
Allow 0 as a part number marker
2023-11-21 17:39:51 -06:00
Alex Auvolat
3ecd14b9f6
table: implement write sets for insert_many
2023-11-16 16:41:45 +01:00
Alex Auvolat
22f38808e7
rpc_helper: don't use tokio::spawn for individual requests
2023-11-16 16:34:01 +01:00
Alex Auvolat
707442f5de
layout: refactor digests and add "!=" assertions before epidemic bcast
2023-11-16 13:51:40 +01:00
Alex Auvolat
ad5c6f779f
layout: split helper in separate file; more precise difference tracking
2023-11-16 13:26:43 +01:00
Alex Auvolat
d4df03424f
layout: fix test
2023-11-15 15:56:57 +01:00
Alex Auvolat
33c8a489b0
layou: implement ack locking
2023-11-15 15:40:44 +01:00
Alex Auvolat
393c4d4515
layout: add helper for cached/external values to centralize recomputation
2023-11-15 14:20:50 +01:00
Alex Auvolat
65066c7064
layout: wip cache global mins
2023-11-15 13:28:30 +01:00
Alex Auvolat
acd49de9f9
rpc: fix write set quorums
2023-11-15 13:07:42 +01:00
Alex Auvolat
46007bf01d
integration test: print stdout and stderr on subcommand crash
2023-11-15 12:56:52 +01:00
Alex Auvolat
b3e729f4b8
layout history merge: rm invalid versions when valid versions are added
2023-11-15 12:15:58 +01:00
Alex Auvolat
7ef2c23120
layout: fix test
2023-11-14 15:45:01 +01:00
Alex Auvolat
90e1619b1e
table: take into account multiple write sets in inserts
2023-11-14 15:40:46 +01:00
Alex Auvolat
3b361d2959
layout: prepare for write sets
2023-11-14 14:28:16 +01:00
Alex Auvolat
866196750f
system: add todo wrt new layout
2023-11-14 13:36:58 +01:00
Alex Auvolat
83a11374ca
layout: fixes in schema
2023-11-14 13:29:26 +01:00
Alex Auvolat
1aab1f4e68
layout: refactoring of all_nodes
2023-11-14 13:12:32 +01:00
Alex Auvolat
8e292e06b3
layout: some refactoring of nongateway nodes
2023-11-14 12:48:38 +01:00
Alex Auvolat
9a491fa137
layout: fix test
2023-11-11 13:10:59 +01:00
Alex Auvolat
df24bb806d
layout/sync: fix bugs and add tracing
2023-11-11 12:44:27 +01:00
Alex Auvolat
ce89d1ddab
table sync: adapt to new layout history
2023-11-11 12:08:32 +01:00
Alex Auvolat
df36cf3099
layout: add helpers to LayoutHistory and prepare integration with Table
2023-11-09 16:32:31 +01:00
Alex Auvolat
9d95f6f704
layout: fix tracker bugs
2023-11-09 15:52:45 +01:00
Alex Auvolat
bad7cc812e
layout admin: add missing calls to update_hash
2023-11-09 15:42:10 +01:00
Alex Auvolat
03ebf18830
layout: begin managing the update tracker values
2023-11-09 15:31:59 +01:00
Alex Auvolat
94caf9c0c1
layout: separate code path for synchronizing update trackers only
2023-11-09 14:53:34 +01:00
Alex Auvolat
bfb1845fdc
layout: refactor to use a RwLock on LayoutHistory
2023-11-09 14:12:05 +01:00
Alex Auvolat
19ef1ec8e7
layout: more refactoring
2023-11-09 13:34:14 +01:00
Alex Auvolat
8a2b1dd422
wip: split out layout management from System into separate LayoutManager
2023-11-09 12:55:36 +01:00
Alex Auvolat
523d2ecb95
layout: use separate CRDT for staged layout changes
2023-11-09 11:19:43 +01:00
Alex Auvolat
1da0a5676e
bump garage protocol version tag to 0x000A (0.10)
2023-11-08 19:30:58 +01:00
Alex Auvolat
8dccee3ccf
cluster layout: adapt all uses of ClusterLayout to LayoutHistory
2023-11-08 19:28:36 +01:00
Alex Auvolat
fe9af1dcaa
WIP: garage_rpc: store layout version history
2023-11-08 17:49:06 +01:00
Alex Auvolat
4a9c94514f
avoid using layout_watch in System directly
2023-11-08 16:41:00 +01:00
Alex Auvolat
12d1dbfc6b
remove Ring and use ClusterLayout everywhere
2023-11-08 15:41:24 +01:00
Alex Auvolat
0962313ebd
garage_rpc: reorder functions in layout.rs
2023-11-08 13:13:04 +01:00
Félix Baylac Jacqué
f83fa02193
Add allow_world_readable_secrets option to config file
...
Sometimes, the secret files permissions checks gets in the way. It's
by no mean complete, it doesn't take the Posix ACLs into account among
other things. Correctly checking the ACLs would be too involving (see
https://git.deuxfleurs.fr/Deuxfleurs/garage/issues/658#issuecomment-7102 )
and would likely still fail in some weird chmod settings.
We're adding a new configuration file key allowing the user to disable
this permission check altogether.
The (already existing) env variable counterpart always take precedence
to this config file option. That's useful in cases where the
configuration file is static and cannot be easily altered.
Fixes https://git.deuxfleurs.fr/Deuxfleurs/garage/issues/658
Co-authored-by: Florian Klink <flokli@flokli.de>
2023-10-26 18:25:13 +02:00
Alex
a0fa50dfcd
Merge pull request 's3 api: refactoring and bug fix in ListObjects' ( #655 ) from fix-list-objects into main
...
Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/655
2023-10-26 09:22:47 +00:00
Alex Auvolat
c82d91c6bc
DeleteObject: always insert a deletion marker with a bigger timestamp than everything before
2023-10-20 13:56:35 +02:00
Alex Auvolat
8686cfd0b1
s3 api: also ensure increasing timestamps for create_multipart_upload
2023-10-20 13:37:37 +02:00
Alex Auvolat
c6cde1f143
remove now-unused key parameter in check_quotas
2023-10-20 13:20:47 +02:00
Alex Auvolat
ac04934dae
s3 api: add missing CORS headers to PostObject responses ( fix #609 )
2023-10-20 10:37:48 +02:00
Alex Auvolat
58b0ee1b1a
list objects: prettyness and add asserts
2023-10-19 15:26:17 +02:00
Alex Auvolat
158dc17a06
listobjects: fix panic if continuation token is an empty string
2023-10-19 15:08:47 +02:00
Alex
0215b11402
Merge pull request 'Add support for specifying rpc_secret_file
, metrics_token_file
and admin_token_file
using environment variables' ( #643 ) from networkException/garage:token-file-env into main-0.8.x
...
Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/643
2023-10-19 09:33:12 +00:00
networkException
8599051c49
garage: support specifying token / secret as environment variables
...
this patch adds support for specifying the `rpc_secret_file`,
`metrics_token_file` and `admin_token_file` as environment variables.
2023-10-19 03:39:02 +02:00
networkException
4a19ee94bb
garage: fix admin-token description
2023-10-19 03:31:50 +02:00
networkException
c99cb58d71
util: move reading secret file into seperate helper
...
this patch moves the logic to read a secret file (and check for correct
permissions) from `secret_from_file` into a new `read_secret_file`
helper.
2023-10-19 03:29:48 +02:00
Alex Auvolat
d146cdd5b6
cargo fmt
2023-10-18 16:38:26 +02:00
Alex Auvolat
3d6ed63824
check_quotas: avoid re-fetching object from object table
2023-10-18 16:36:48 +02:00
Alex Auvolat
45b0453d0f
Ensure increasing version timestamps in PutObject
2023-10-18 16:31:50 +02:00
trinity-1686a
c7f5dcd953
fix compilation on macos
...
fsblkcnt_t is ony 32b there, so we have to do an additional cast
2023-10-15 17:57:27 +02:00
Alex Auvolat
952c9570c4
bump version to v0.9.0
2023-10-10 14:08:11 +02:00
Alex Auvolat
3d7892477d
convert_db: fix build
2023-10-10 14:06:25 +02:00
Alex Auvolat
d4932c31ea
Merge branch 'main' into next
2023-10-10 13:57:21 +02:00
Alex Auvolat
2d5d7a7031
Move convert_db command into main garage binary
2023-10-10 12:13:15 +02:00
Alex Auvolat
0c431b0c03
admin api: increased compatibility for v0/ endpoints
2023-10-05 16:56:13 +02:00
Alex Auvolat
1c13135f25
admin api: remove broken GET /v0/key router rule
2023-10-05 16:27:29 +02:00
Alex Auvolat
920dec393a
cli: more precise doc comment
2023-10-04 10:44:42 +02:00
Alex Auvolat
2e656b541b
Merge branch 'main' into next
2023-10-03 18:40:37 +02:00
networkException
7907a09acc
api: allow custom unix bind mode and use 0o220 for admin server
2023-10-03 17:31:40 +02:00
networkException
8ec6a53b35
everywhere: support unix sockets when binding in various places
...
this patch implements binding to paths as a unix socket for generic
server and web server.
2023-09-29 18:57:44 +02:00
networkException
7353038a64
config: allow using paths for unix domain sockets in various places
...
this patch updates the config format to also allow paths in bind
addresses for unix domain sockets.
this has been added to all apis except rpc.
2023-09-29 18:38:30 +02:00
networkException
10195f1567
util: add helper sum type for unix and tcp socket addresses
...
this patch introduces a new sum type that can represent either a
tcp socket address or a unix domain socket path.
2023-09-29 18:37:36 +02:00
networkException
6086a3fa07
cargo: add hyperlocal as a dependency
2023-09-29 18:37:12 +02:00
Alex Auvolat
897cbf2c27
actually update rmp-serde to 1.1.2 for both garage and netapp dependency ( fix #629 )
2023-09-27 13:13:00 +02:00
Alex Auvolat
ad82035b98
Merge branch 'main' into next
2023-09-27 13:11:52 +02:00
Alex
aa7eadc799
Merge pull request 'New layout: fixes and UX improvements' ( #634 ) from new-layout-ux into next
...
Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/634
2023-09-27 09:04:32 +00:00
Alex Auvolat
0635250b2b
garage_table/queue_insert: delay worker notification to after transaction commit ( fix #583 )
2023-09-21 15:37:28 +02:00
Alex Auvolat
f97168f805
garage_db: refactor transactions and add on_commit mechanism
2023-09-21 15:35:31 +02:00
Alex Auvolat
3ecc17f8c5
new layout: use deterministic randomness for reproducible results
2023-09-21 11:21:35 +02:00
Alex Auvolat
0088599f52
new layout: fix clippy lints
2023-09-18 12:17:07 +02:00
Alex Auvolat
749b4865d0
new layout: improve display and fix comments
2023-09-18 12:07:45 +02:00
Alex Auvolat
015ccb39aa
new layout: make zone_redundancy optionnal (if not set, is maximum)
2023-09-18 11:59:08 +02:00
Alex Auvolat
2e229d4430
new layout: improve output display
2023-09-12 17:24:51 +02:00
Alex Auvolat
91e764a2bf
fix hang on shutdown
2023-09-12 14:35:48 +02:00
Alex Auvolat
aa79810596
Fix error when none of S3/K2V/WEB/ADMIN server is started ( fix #613 )
2023-09-12 14:35:19 +02:00
Alex Auvolat
fd7d8fec59
Merge branch 'main' into next
2023-09-11 23:09:20 +02:00
Alex Auvolat
9cfe55ab60
fix 32-bit build
2023-09-11 20:01:29 +02:00
Alex Auvolat
51abbb02d8
Merge branch 'main' into next
2023-09-11 20:00:02 +02:00
Alex Auvolat
d5bb50d738
use statvfs instead of mount list to determine free data/meta space ( fix #611 )
2023-09-11 19:08:24 +02:00
Alex Auvolat
f8b3883611
config: make block_size and sled_cache_capacity expressable as strings
2023-09-11 18:34:59 +02:00
Alex Auvolat
51b9731a08
make lmdb's map_size configurable ( fix #628 )
2023-09-11 18:03:44 +02:00
Alex Auvolat
ad6b1cc0be
Merge branch 'main' into next
2023-09-11 13:14:18 +02:00
Alex Auvolat
ba7ac52c19
block repair: simpler/more robust iterator progress calculation
2023-09-11 12:31:34 +02:00
Alex Auvolat
9526328d38
scrub: clear saved checkpoint when canceling scrub
2023-09-11 12:10:48 +02:00
Alex Auvolat
7f9ba49c71
block manager: remove data_dir field
2023-09-11 11:57:36 +02:00
Alex Auvolat
de5d792181
block manager: fix indentation (why not detected by cargo fmt?)
2023-09-11 11:52:57 +02:00
Alex Auvolat
be91ef6294
block manager: fix bug where rebalance didn't delete old copies
2023-09-07 16:04:03 +02:00
Alex Auvolat
2657b5c1b9
block manager: fix bugs
2023-09-07 15:30:56 +02:00
Alex Auvolat
2f112ac682
correct free data space accounting for multiple data dirs on same fs
2023-09-07 14:42:20 +02:00
Alex Auvolat
6b008b5bd3
block manager: add rebalance operation to rebalance multi-hdd setups
2023-09-07 13:44:11 +02:00
Alex Auvolat
99ed18350f
block manager: refactor and fix monitoring/statistics
2023-09-07 12:41:36 +02:00
Alex Auvolat
f38a31b330
block manager: avoid incorrect data_dir configs and avoid losing files
2023-09-06 17:49:30 +02:00
Alex Auvolat
e30865984a
block manager: scrub checkpointing
2023-09-06 16:35:28 +02:00
Alex Auvolat
55c514999e
block manager: fixes in layout
2023-09-06 16:35:28 +02:00
Alex Auvolat
a44f486931
block manager: refactoring & increase max worker count to 8
2023-09-06 16:35:28 +02:00
Alex Auvolat
3a74844df0
block manager: fix dir_not_empty
2023-09-06 16:35:28 +02:00
Alex Auvolat
93114a9747
block manager: refactoring
2023-09-06 16:35:28 +02:00
Alex Auvolat
fd00a47ddc
table queue: increase batch size
2023-09-06 16:35:28 +02:00
Alex Auvolat
1b8c265c14
block manager: get rid of check_block_status
2023-09-06 16:35:28 +02:00
Alex Auvolat
a09f86729c
block manager: move blocks in write_block if necessary
2023-09-06 16:35:28 +02:00
Alex Auvolat
887b3233f4
block manager: use data paths from layout
2023-09-06 16:35:28 +02:00
Alex Auvolat
6c420c0880
block manager: multi-directory layout computation
2023-09-06 16:35:28 +02:00
Alex Auvolat
71c0188055
block manager: skeleton for multi-hdd support
2023-09-06 16:35:28 +02:00
Alex Auvolat
4b4f2000f4
lifecycle: fix SkipBucket bug
2023-09-06 16:34:07 +02:00
Alex Auvolat
51eac97260
update version to 0.8.4
2023-09-05 23:28:12 +02:00
Alex Auvolat
e78566591b
Revert netapp update, hold to version 0.5.2 that uses rmp-serde 0.15
2023-09-05 23:23:23 +02:00
Alex Auvolat
8e0c020bb9
lifecycle worker: correct small clippy lints
2023-09-04 11:33:44 +02:00
Alex Auvolat
1cdc321e28
lifecycle worker: don't get stuck on non-existent bucket
2023-08-31 11:36:30 +02:00
Alex Auvolat
f579d6d9b4
lifecycle worker: fix potential inifinite loop
2023-08-31 11:29:54 +02:00
Alex Auvolat
a00a52633f
lifecycle worker: add log message when starting
2023-08-31 11:25:14 +02:00
Alex Auvolat
adbf5925de
lifecycle worker: use queue_insert and process objects in batches
2023-08-31 11:19:26 +02:00
Alex Auvolat
1cfcc61de8
lifecycle worker: mitigate potential bugs + refactoring
2023-08-31 00:28:37 +02:00
Alex Auvolat
be03a4610f
s3api: remove redundant serde rename attribute
2023-08-31 00:00:26 +02:00
Alex Auvolat
b2f679675e
lifecycle worker: take into account disabled rules
2023-08-30 23:52:09 +02:00
Alex Auvolat
01c327a07a
lifecycle worker: avoid building chrono's serde feature
2023-08-30 23:46:15 +02:00
Alex Auvolat
f0a395e2e5
s3 bucket apis: remove redundant call
2023-08-30 23:39:28 +02:00
Alex Auvolat
a1d57283c0
bucket_table: bucketparams::new doesn't need to be pub
2023-08-30 20:07:14 +02:00
Alex Auvolat
d2e94e36d6
lifecycle config: add missing line in merge() and remove tracing
2023-08-30 20:05:53 +02:00
Alex Auvolat
75ccc5a95c
lifecycle config: store date as given, try to debug
2023-08-30 20:02:07 +02:00
Alex Auvolat
7200954318
lifecycle worker: add logging
2023-08-30 14:54:52 +02:00
Alex Auvolat
0f1849e1ac
lifecycle worker: launch with the rest of Garage
2023-08-30 14:51:08 +02:00
Alex Auvolat
da8b224e24
lifecycle worker: skip entire bucket when no lifecycle config is set
2023-08-30 14:38:19 +02:00
Alex Auvolat
2996dc875f
lifecycle worker: implement main functionality
2023-08-30 14:29:03 +02:00
Alex Auvolat
a2e0e34db5
lifecycle: skeleton for lifecycle worker
2023-08-30 12:41:11 +02:00
Alex Auvolat
f7b409f114
use a NaiveDate in data model, it serializes to string (iso 8601 format)
2023-08-30 11:24:01 +02:00
Alex Auvolat
abf011c290
lifecycle: implement validation into garage's internal data structure
2023-08-29 18:22:03 +02:00
Alex Auvolat
8041d9a827
s3: add xml structures to serialize/deserialize lifecycle configs
2023-08-29 17:44:17 +02:00