Node churn intensive testing and rebalancing robustification.
‑‑resign-on-shutdownoption to rebalance all blocks to other nodes on exit.
- Prometheus gauges for reachable blocks and under-replicated blocks.
- Add centralized crash reporting.
- Avoid useless conflicts on blocks that have been rebalanced.
- 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.
Kouncil improvements and completion, GRPC interface for the KV store, basic prometheus monitoring.
- gRPC interface to the key-value store using the
- Prometheus-compatible metrics collection endpoint using the
- 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
‑‑peernow 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).
infinit network runto store the port the gRPC server is listening on to disk.
- 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.
‑‑storageeverywhere 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
- 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.
- Fix several memory errors on shutdown.
- In Kouncil, advertise removed blocks to other nodes.
- Repair legacy binaries for backward compatibility
infinit-volumeinstead of the current
- In Kouncil, passing multiple --peer to the command line now works as expected.
- In Kouncil, fix a bug that caused
infinit networkto 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=0volume option: do not cache any mutable block.
- In the filesystem, disable directory prefetching tasks if
- In the CLI,
‑‑protocoloption 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.
- 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.
- 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.
- Add new
infinit-network --inspectcommand to query a running network about its status and configuration.
- Provide Alpine Linux builds.
- Better output and clearer options for
- 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
- Better POSIX compliance when multiple file handles on the same file are used.
- Remove the root block marker when
infinit-network --purgeis 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.
infinit-networkto store known peers to disk.
- Enable to pick listen inferface with
- Add descriptions for users, storages, networks, volumes and drives.
infinit-doctorto test connection speed between machines.
- Add support for merging successive block updates into one operation in
- The docker volume plugin now supports volume creation.
- The docker volume plugin now lists volumes from the default network, if any.
infinit-volume --createto push the root directory upon creation.
infinit-network --createto systematically connect to a fixed set of peers.
infinit-volume --createto register the volume descriptor inside the network.
infinit-volume --fetchto fetch volumes descriptor from the network.
infinit-networkto list all registered volumes from a network.
- Poll beyond periodically for endpoints changes.
- No longer require an email address to push a user to the Hub.
- Improved cryptography performance.
- Enable to interrupt adding credentials with
- Cache peer connections.
infinit-volumeas 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
- Do not connect twice to hosts passed via
- Fix some shutdown assertions.
- Fix deadlock in Kelips overlay implementation.
- Fix issue with dokany 184.108.40.20600 on Windows.
[0.7.0] - 2016-09-23
Windows release, bandwidth and CPU usage optimization, bugfixes.
- Windows release.
- IPv6 support.
- Add new
Koordinateoverlay that enables running several overlay. algorithms on nodes.
O_EXCLwhen opening files.
- Support for S3 compatible storages.
- Optimize Kelips packet size.
- Optimize blocks transmitted size.
‑‑filesystemthe default type for
- Use a single UDP socket for all UTP networking.
- Resolve backtrace symbols lazily to save CPU.
- Cache group blocks address resolution to save CPU.
- Reduce logs impact on CPU.
- Fill creation time attributes macOS.
- Refuse multiple storage types in
- Refuse relinking a linked network.
..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.
- Enable to forcefully kill pending fs operation on shutdown with a
infinint-daemonthat can act as a Docker volume plugin.
- Enable to fetch users with their short key hash from the hub.
- 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.
infinit-doctorto diagnose common setup issues.
infinit-journalto get human friendly descriptions of pending asynchronous operations.
‑‑allow-root-creationto create the root block with
- Make Kelips the default overlay.
- Fix conflict handling on file removal.
- Show administrator in owners in
- 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.
- 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
rmdirin asynchronous mode.
- Fix swapped
wflags in permissions.
- Fix error when deserializing mutable blocks with
- Linking a network with several users will now behave correcly.
- Fix deadlock on SIGINT.
- 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.
- 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
‑‑pullin combination with
‑‑deleteto also remove entities from the hub in
- Add Kelips batch requests, greatly improving performance for large set of files.
- Push storage stats to the hub in
infinit-acl: Enable to refer to users and groups with their short key hash.
- Remove the option to delete groups which will be handled properly later.
- Fix a crash when renaming a file to a non-writable location.
- Fix file loss when renaming get interrupted.
- Fix deserializing mutable blocks with
[0.5.5] - 2016-04-25
Automatic replication of under-replicated metadata blocks and CPU usage improvement.
- Automatically rebalance under-replicated metadata blocks to new nodes.
- Synchronize file content on
- Cache the root block address locally to avoid recreating one if all storage nodes are down.
infinit-journalbinary to inspect asynchronous write queue.
infinit-connectivityto test network connectivity capabilities.
- Publish public IP to beyond.
- 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.
- Fix IO error when performing
fsyncon 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
- 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.
- Add a disk block cache for immutable file contents.
- Show linked network in
- Tidy up
infinit-blockCLI interface to look like other binaries.
- Drop all cache when a network is deleted locally.
- 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.
infinit-block, a debug utility to pretty print a block from the disk.
- 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.
- 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
- Show world permissions as 'other' POSIX permissions when stating a file.
- Resolve hostnames passed to
‑‑port-fileto output endpoints listened on to a file.
- Always show network compatibilty version in the logs.
- Ask confirmation in
infinit-credentialto be consistent with other command line tools.
- Greatly compact the log output.
- 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
- Support group ACL.
- Add compatibility version to network configuration files.
- Support reading when a minority of the quorum nodes are down.
infinit-network --updateto change existing network attribute, such as upgrading the compatibility version.
- 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.
- 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.
- Change default kelips group count to 1, to avoid deadlocked networks with too few computer if unspecified.
- Terminate gracefully on
SIGQUIT, just like
- Don't err in
infinit-user --fetchif 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.
- Support S3 as storage backend.
- Enable to force compatibility version with
- Set permissions on user configuration files to 700 as some contain private keys.
- Fix critical bug preventing running networks using
‑‑asyncwith 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.
- Cache directories preventively to speed up browsing speed.
- Let extended attribute
user.infinit.syncwait for file synchronization.
- Add fetch and push options to
infinit-drive --invite, clarify help.
- Enable to fetch several users at once with
- Enable to show volume in the finder sidebar on OSX with
- Only allow lowercase alpha-numeric characters in objects names (i.e. users, networks, volumes ...).
- 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
- Show invitation status in
- Improve many
- Bump files mtime on each write.
- Optimize on-disk asynchronous journal loading time.
- 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.
- 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.
- 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
- Enable to point the data directory directly with the INFINIT_DATA_HOME environment variable.
- Generate Debian package.
- 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
- Magic number on stored binary blocks to enable transparent future format changes, e.g. JSON.
- 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.
- Ship compiler-specific dynamic libraries for portability.
- Fix unmounting on OSX.
[0.3.0] - 2015-11-29
First public release candidate.