Change Log
[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).
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 currentinfinit 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 byinfinit 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
ininfinit 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 toinfinit-volume
andinfinit-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
toinfinit-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
toinfinit-volume --create
to push the root directory upon creation. - Option
‑‑peer
toinfinit-network --create
to systematically connect to a fixed set of peers. - Option
‑‑register-service
toinfinit-volume --create
to register the volume descriptor inside the network. - Option
‑‑service
toinfinit-volume --fetch
to fetch volumes descriptor from the network. - Option
‑‑list-services
toinfinit-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
andinfinit-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 toinfinit-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 forinfinit-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 ofEISDIR
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 toinfinit-network
. - Add
infinit-doctor
to diagnose common setup issues. - Add
‑‑describe
mode toinfinit-journal
to get human friendly descriptions of pending asynchronous operations.
Changed
- Require
‑‑allow-root-creation
to create the root block withinfinit-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
andrmdir
in asynchronous mode. - Fix swapped
r
andw
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
ininfinit-drive
,infinit-network
,infinit-passport
,infinit-user
andinfinit-volume
. - Support
‑‑pull
in combination with‑‑delete
to also remove entities from the hub ininfinit-drive
,infinit-network
,infinit-passport
,infinit-user
andinfinit-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
orftruncate
. - 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
ininfinit-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
ininfinit-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 toinfinit-device --transmit
. - Accept
‑‑fallback-xattrs
ininfinit-acl --list
.
Changed
- Change default kelips group count to 1, to avoid deadlocked networks with too few computer if unspecified.
- Terminate gracefully on
SIGTERM
andSIGQUIT
, just likeSIGINT
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
toinfinit-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.
Talk to us on the Internet!
Ask questions to our team or our contributors, get involved in the project...