-
Notifications
You must be signed in to change notification settings - Fork 8
/
ChangeLog
655 lines (473 loc) · 20.2 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
# Change Log
## [0.9.2] 2017-10-21
Fix serialization versioning.
## [0.9.1] 2017-10-20 [YANKED]
Skipped release because of unrecognized version in RPCs.
### Changed
- Rename `INFINIT_{FOO}` environment variables as `MEMO_{FOO}`.
- Prefer `MEMO_{FOO}=0` to `MEMO_NO_{FOO}=1` or `MEMO_DISABLE_{FOO}=1`.
### Fixed
- Fix error report generation.
## [0.9.0] 2017-10-19
Node churn intensive testing and rebalancing robustification.
### Added
- Add `--resign-on-shutdown` option to rebalance all blocks to other
nodes on exit.
- Prometheus gauges for reachable blocks and under-replicated blocks.
- Add centralized crash reporting.
- Option `--log` to control the generated logs.
### Changed
- Avoid useless conflicts on blocks that have been rebalanced.
### Fixed
- Fix Koordinate overlay cleanup that did not cleanup underlying
overlays.
- Handle consecutive rebalancing.
- Rebalance blocks when a peer evicts itself from the quorum.
- Propagate block value if several nodes conflicted during
rebalancing.
- When reading, be resilient to a minority of node missing a block.
- Transmit immutable block ownership information to new node holding
them so they can handle replication themselves.
- Protect against concurrent updates to the same address via the gRPC
interface.
- Various minor issues in the command-line parsing.
## [0.8.0] 2017-05-22
Kouncil improvements and completion, gRPC interface for the KV store,
basic prometheus monitoring.
### Added
- gRPC interface to the key-value store using the `--grpc` option.
- Prometheus-compatible metrics collection endpoint using the
`--prometheus` option.
- Add a software TCP heartbeat to detect and drop TCP connection stale
at the OS level.
- Enable nodes to advertise they won't store any more block for now.
- The option `--peer` now attempts to connect to all the machines
matching the address.
- Some cryptographic features can be disabled at network creation time:
filesystem at-rest encryption (--disable-encrypt-at-rest), RPC encryption
(--disable-encrypt-rpc), and signature computation/validation
(--disable-signature).
- Add `--grpc-port-file` option to `infinit network run` to store the port
the gRPC server is listening on to disk.
### Changed
- In Kouncil, also retry connecting if the very first connection
attempt fails.
- In Kouncil, preserve endpoints and try reconnecting for a certain
time after a peer disappear.
- Guarantee only one connection is opened to any peer.
- Prefer `--silo` over `--storage` everywhere relevant, e.g.
`infinit network create --silo SILO --name NAME`.
- Change silo creation CLI to make the silo type a subcommand instead
of an option: `infinit silo create TYPE OPTIONS`.
- Changed CLI options `--stats` into `--stat` for consistency.
- The RPC server can now optionally serve RPCs in parallel. Enable by
setting the value of INFINIT_RPC_SERVE_THREADS to 0 for unlimited, or
N for a limit of N parallel tasks.
- Reading CHB (immutable blocks) now balances the reads between the available
servers based on number of transfers running.
- In the filesystem, removing big files is now much faster than before.
### Fixed
- Fix several memory errors on shutdown.
- In Kouncil, advertise removed blocks to other nodes.
- Repair legacy binaries for backward compatibility
(e.g., `infinit-volume` instead of the current `infinit volume`).
- In Kouncil, passing multiple --peer to the command line now works as expected.
- In Kouncil, fix a bug that caused `infinit network` to abort when the
initialization RPC failed.
- Error messages from the CLI are more consistent.
- In Kelips, clients (nodes not providing storage) are now properly notified
of new peers and peer endpoint changes.
- In Cache, fix handling of `--cache-ram-size=0` volume option: do not cache
any mutable block.
- In the filesystem, disable directory prefetching tasks if `--cache`
is disabled.
- In the CLI, `--protocol` option is now properly handled by
`infinit network create`
## [0.7.3] - 2017-02-15
Command line interface revamp to the "Docker style":
`infinit <object> <mode> options...`. This change is mostly backward
compatible, but some adjustments may be needed.
### Added
- Support `--advertise-host` in `infinit network`.
- Add `--no-local-endpoints` and `--no-public-endpoints` options.
### Changed
- Support new CLI style `infinit <object> <mode>` and prefer it.
- Limit the number of prefetching background task.
- Do not advertise Apple Wireless Direct Link IP.
- Use Kouncil as the default overlay.
### Fixed
- Support transitive discovery and diverse connections patterns in
Kouncil.
- Fix block leak when removing an unopened file.
- Fix pure-TCP mode support.
## [0.7.2] - 2016-11-28
New Kouncil overlay, network inspection and bugfixes.
### Added
- Add new `Kouncil` overlay.
- Add `infinit-network --inspect` command to query a running network about its
status and configuration.
- Provide Alpine Linux builds.
### Changed
- Better output and clearer options for `infinit-doctor`.
- Better handling of removed nodes in `Kelips`: the network should now
recover in seconds instead of minutes.
- Retry binding instead of aborting when a network bind() error occurs and no
port was specified.
- Show more digits when reporting size in `infinit-journal`.
### Fixed
- Better POSIX compliance when multiple file handles on the same file are used.
- Remove the root block marker when `infinit-network --purge` is called.
- Preserve a deleted file's data until all handles are closed.
- Fixed multiple race conditions in filesystem layer that could cause crashes.
## [0.7.1] - 2016-10-31
Docker volume plugin improvements, bug fixes and performance improvements.
### Added
- Add `--peers-file` option to `infinit-volume` and `infinit-network`
to store known peers to disk.
- Enable to pick listen inferface with `--listen`.
- Add descriptions for users, storages, networks, volumes and drives.
- Add `--networking` to `infinit-doctor` to test connection speed between
machines.
- Add support for merging successive block updates into one operation in
`async` consensus.
- The docker volume plugin now supports volume creation.
- The docker volume plugin now lists volumes from the default network,
if any.
- Option `--create-root` to `infinit-volume --create` to push the root
directory upon creation.
- Option `--peer` to `infinit-network --create` to systematically
connect to a fixed set of peers.
- Option `--register-service` to `infinit-volume --create` to register
the volume descriptor inside the network.
- Option `--service` to `infinit-volume --fetch` to fetch volumes
descriptor from the network.
- Option `--list-services` to `infinit-network` to list all registered
volumes from a network.
### Changed
- Poll beyond periodically for endpoints changes.
- No longer require an email address to push a user to the Hub.
- Improved cryptography performance.
### Fixed
- Enable to interrupt adding credentials with `infinit-credentials`.
- Cache peer connections.
- Daemonize `infinit-network` and `infinit-volume` as late as possible
to catch more errors syncronously.
- Fix a bug in key hash cache that caused RPC connection to fail upon
reconnection
- Restore domain name resolution for `--peer` options.
- Do not connect twice to hosts passed via `--peer`.
- Fix some shutdown assertions.
- Fix deadlock in Kelips overlay implementation.
- Fix issue with dokany 1.0.0.5000 on Windows.
## [0.7.0] - 2016-09-23
Windows release, bandwidth and CPU usage optimization, bugfixes.
### Added
- Windows release.
- IPv6 support.
- Add new `Koordinate` overlay that enables running several overlay.
algorithms on nodes.
- Add `--script` mode to `infinit-acl --list`.
- Support `O_EXCL` when opening files.
- Support for S3 compatible storages.
### Changed
- Optimize Kelips packet size.
- Optimize blocks transmitted size.
- Make `--filesystem` the default type for `infinit-storage --create`.
- Use a single UDP socket for all UTP networking.
- Resolve backtrace symbols lazily to save CPU.
- Cache group blocks address resolution to save CPU.
- Standardize `-n` to mean `--name` and `-N` to mean `--network`.
- Reduce logs impact on CPU.
### Fixed
- Fill creation time attributes macOS.
- Refuse multiple storage types in `infinit-storage --create`.
- Refuse relinking a linked network.
- Return `ENOTEMPTY` instead of `EISDIR` when expected.
- Yield `.` and `..` when listing directories.
- Fix SEGV in `infinit-acl --set --others-mode`.
- Fix UTF-8 characters serialization in configuration files.
- Enable to read ACLs of a file with no read permissions on Linux.
## [0.6.2] - 2016-08-12
Docker volume plugin and shutdown behavior fixes.
### Added
- Enable to forcefully kill pending fs operation on shutdown with a
triple `SIGINT`.
- Add `infinint-daemon` that can act as a Docker volume plugin.
- Enable to fetch users with their short key hash from the hub.
### Fixed
- Fix segmentation fault on shutdown.
## [0.6.1] - 2016-08-01
Diagnostic utilities, ability to link networks with several users, bug
fixes and performance improvements.
### Added
- Add `--script` mode to `infinit-network`.
- Add `infinit-doctor` to diagnose common setup issues.
- Add `--describe` mode to `infinit-journal` to get human friendly descriptions
of pending asynchronous operations.
### Changed
- Require `--allow-root-creation` to create the root block with
`infinit-volume`.
- Make Kelips the default overlay.
- Fix conflict handling on file removal.
- Show administrator in owners in `infinit-acl --list`.
- Prevent changing network admin permissions.
- Push endpoints to beyond before fetching them, to ensure nodes
always see each other.
- Reduce Kelips packet size, improving network bandwidth performance.
### Fixed
- Expect mode to be the first argument of all binaries, as any
prepended argument was previously ignored.
- Enable to set ACLs on symlinks.
- Check permissions locally to fail immediately on `unlink` and
`rmdir` in asynchronous mode.
- Fix swapped `r` and `w` flags in permissions.
- Fix error when deserializing mutable blocks with `infinit-block`.
- Linking a network with several users will now behave correcly.
- Fix deadlock on SIGINT.
### Removed
- Remove experimental Kademlia overlay.
- Remove testing Stonehenge overlay.
## [0.6.0] - 2016-06-06
Automatic replication of under-replicated data blocks and network
performance improvement.
### Added
- Automatically rebalance under-replicated data blocks to new nodes.
- Send network queries in batch when possible.
- Enable to interrupt remote procedure call to save time when a query
is discarded.
- Enable to set the inherit flag in default network permissions.
- Support JSON output with `--script` for operation `--list` in
`infinit-drive`, `infinit-network`, `infinit-passport`,
`infinit-user` and `infinit-volume`.
- Support `--pull` in combination with `--delete` to also remove
entities from the hub in `infinit-drive`, `infinit-network`,
`infinit-passport`, `infinit-user` and `infinit-volume`.
- Add Kelips batch requests, greatly improving performance for large
set of files.
- Push storage stats to the hub in `infinit-network` if `--push` is
passed.
- `infinit-acl`: Enable to refer to users and groups with their short
key hash.
### Removed
- Remove the option to delete groups which will be handled properly
later.
### Fixed
- Fix a crash when renaming a file to a non-writable location.
- Fix file loss when renaming get interrupted.
- Fix deserializing mutable blocks with `infinit-block`.
## [0.5.5] - 2016-04-25
Automatic replication of under-replicated metadata blocks and CPU
usage improvement.
### Added
- Automatically rebalance under-replicated metadata blocks to new
nodes.
- Synchronize file content on `fsync` system call.
- Cache the root block address locally to avoid recreating one if all
storage nodes are down.
- Add `infinit-journal` binary to inspect asynchronous write queue.
- Add `infinit-connectivity` to test network connectivity
capabilities.
- Publish public IP to beyond.
### Changed
- Shorten many logs for readability.
- Update OpenSSL to 1.0.2g for security fixes, although we are not
vulnerable to DROWN attacks.
- Update Curl to 7.47.1 because why not.
### Fixed
- Fix IO error when performing `fsync` on an unlinked file.
- Fix infinite recursion on certain log levels.
- Remove immutable blocks cache on disk when the corresponding file is
deleted.
- Fix SEGV when shutting down while deciphering a block.
- Handle conflicts when changing world permissions on a directory.
- Fix misreported file size upon `truncate` or `ftruncate`.
- Fixed async cache deadlock upon conflict on group blocks.
- Ensure prefetcher work in parallel on large directories.
- Report error if no servers are available to store data block.
- Fix race condition when connecting several time to a peer.
## [0.5.4] - 2016-03-01
Hotfix for disk performance, persistent disk cache for file contents.
### Added
- Implement `statfs` system call.
- Add a disk block cache for immutable file contents.
- Show linked network in `infinit-network --list`.
### Changed
- Rename `--allow-sign` to `--allow-create-passport` in `infinit-passport`.
- Tidy up `infinit-block` CLI interface to look like other binaries.
- Drop all cache when a network is deleted locally.
### Fixed
- Drop older Paxos version to avoid linear growth of blocks with
revisions, fixing disk hammering issues with folders of thousands of
files.
- Use the GCS credentials instead of Google drive credentials to
authenticate to GCS.
- Fix SEGV when retrying an asynchronous write operation.
- Fix importing pre-0.4 networks.
- Fixed assertions on cleanup when shutdown abruptly.
## [0.5.3] - YANKED
Skipped release because of unrecognized version in RPCs.
## [0.5.2] - 2016-02-25
Hotfix for AWS s3 storage in us-east-1 region.
### Added
- Add `infinit-block`, a debug utility to pretty print a block from
the disk.
### Fixed
- Fix AWS S3 storage on us-east-1 region.
- Fix Google cloud storage and Google drive credentials mixup.
- Fixed some logs and error messages where only the first character of
some strings was displayed.
## [0.5.1] - YANKED
Skipped release because of unrecognized version in RPCs.
## [0.5.0] - 2016-02-23
Rebalancing protocol and passport delegation.
### Added
- Add dynamic block rebalancing.
- Enable to disable writing to the DHT or acting as storage when
signing a passport for a node.
- Enable to delegate further passport signature when signing a
passport for a node, which will act as an "authority".
- Support adding or removing multiple users from a group at once with
`infinit-acl`.
- Show world permissions as 'other' POSIX permissions when stating a
file.
- Resolve hostnames passed to `--peer` options.
- Add `--port-file` to output endpoints listened on to a file.
- Always show network compatibilty version in the logs.
### Changed
- Ask confirmation in `infinit-user --delete`.
- Replace `--account` with `--name` in `infinit-credential` to be
consistent with other command line tools.
- Greatly compact the log output.
### Fixed
- Fix a memory leak in remote procedure calls.
- Fix a memory leak in Paxos implementation.
- Fix a memory leak in case of directory conflict.
- Fixed network upgrade process in case blocks are stored in
asynchronous write cache.
## [0.4.0] - 2016-01-21
Groups support.
### Added
- Support group ACL.
- Add compatibility version to network configuration files.
- Support reading when a minority of the quorum nodes are down.
- Add `infinit-network --update` to change existing network attribute,
such as upgrading the compatibility version.
### Changed
- Overwrite network on the hub with `infinit-network --push`, to be
able to push local updates.
- Overwrite local network with `infinit-network --fetch`, to be able
to retreive updates.
### Fixed
- Set permissions on journal directories to 700 as it can contain
private keys.
- Fix S3 storage in case of HTTP redirections.
- Fix SEGV on shutdown in some rare cases.
- Fix SEGV with ipv6 interfaces.
## [0.3.7] - 2016-01-11
Small improvements and fixes.
### Added
- Add `--no-countdown` option to `infinit-device --transmit`.
- Accept `--fallback-xattrs` in `infinit-acl --list`.
### Changed
- Change default kelips group count to 1, to avoid deadlocked networks
with too few computer if unspecified.
- Terminate gracefully on `SIGTERM` and `SIGQUIT`, just like `SIGINT`
previously.
### Fixed
- Don't err in `infinit-user --fetch` if the avatar is missing.
## [0.3.6] - 2016-01-11 [YANKED]
Skipped release because of a botched tag.
## [0.3.5] - 2016-01-06
Hotfix release to fix mounting in async mode, plus some stability and
performance improvement and S3 storage support.
### Added
- Support S3 as storage backend.
- Enable to force compatibility version with `--force-version` option.
### Changed
- Set permissions on user configuration files to 700 as some contain
private keys.
### Fixed
- Fix critical bug preventing running networks using `--async` with
error message "fatal error: missing serialization context for
infinit::model::Model*".
- Fix reported file size that could sometime be random.
- Fix extended attribute compatibility mode writing files above the
filesystem root.
- Fix potential segfault on OSX with finder sidebar.
- Fix fetching network with several storages.
- Retry forever if storage is full in async mode instead of asserting.
## [0.3.4] - 2015-12-17
Stability and performance release.
### Added
- Cache directories preventively to speed up browsing speed.
- Let extended attribute `user.infinit.sync` wait for file synchronization.
- Add fetch and push options to `infinit-drive --invite`, clarify help.
- Enable to fetch several users at once with `infinit-user --fetch`.
- Enable to show volume in the finder sidebar on OSX with
`infinit-volume --finder-sidebar`.
### Changed
- Only allow lowercase alpha-numeric characters in objects names
(i.e. users, networks, volumes ...).
- Rename `infinit-network --join` to `infinit-network --link`.
- Accept --as option on all commands.
- Set kelips group count to 1 by default.
- Translate user rwx permissions from ACLs.
- Prefix user public key hash with a `#` in permissions listing if
name is unknown.
- Show storage capacity in `infinit-storage --list`.
- Show invitation status in `infinit-drive --list`.
- Improve many `infinit-drive` output messages.
- Bump files mtime on each write.
- Optimize on-disk asynchronous journal loading time.
### Fixed
- Properly handle execution permissions.
- Drop removed files from cache, fixing many IO errors when trying to
perform operations on a deleted file.
- Fix crash with broken locale setting.
- Fix wrong file size reported in some cases.
- Fix truncate on cached files.
## [0.3.3] - 2015-12-03
Bugfix release to correct conflict errors, plus minor improvements.
### Changed
- Always try using a public key in inifinit-acl if the user does not
exist in the network. Remove --try-with-public-key as a consequence.
- Improve directory creation performance.
- Remove --as option from infinit-user --fetch.
- Improve network error reporting in the CLI.
- Add a timeout when pairing devices.
- Show user public key hash in permissions listing if name is unknown.
### Fixed
- Add missing automatic conflicts resolver.
- Let a user create passport for a network without joining it.
- Don't require a valid current user to list a network passports.
## [0.3.2] - 2015-12-01
Release adjustments.
### Added
- Enable to point the data directory directly with the
INFINIT_DATA_HOME environment variable.
- Generate Debian package.
### Fixed
- Change demo home path to be usable with INFINIT_DATA_HOME.
- Fix unmount when pushing stats of a storage with no maximum
capacity.
## [0.3.1] - 2015-11-30
Release adjustments.
### Added
- Magic number on stored binary blocks to enable transparent future
format changes, e.g. JSON.
### Changed
- Store configuration and data files according to XDG convention.
- Improve infinit-user --signup help.
- Prevent infinit-drive from joining own network.
- Hide unstable features for now: Dropbox and Google Drive storage,
multiple storage nodes.
### Fixed
- Ship compiler-specific dynamic libraries for portability.
- Fix unmounting on OSX.
## [0.3.0] - 2015-11-29
First public release candidate.
<!--
Local Variables:
mode: markdown
End:
-->