Infinit alpha

Change Log

[0.7.3]

Command line interface revamp to the "docker style" : `infinit

options...`. This change is mostly backward compatible, but some adjustment 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.