Riak KV 2.0.0 Release Notes
Major Features / Additions to 2.0
A listing and explanation of new features in version 2.0, along with links to relevant documentation, can be found in our official docs. You can find an Upgrading to 2.0 Guide there as well. The material below should be read as a more technical supplement to that material.
Bucket Types
Previous versions of Riak used buckets as a mechanism for logically grouping keys and for associating configuration with certain types of data. Riak 2.0 adds bucket types, which associate configuration with groups of buckets and act as a second level of namespacing.
Unlike buckets, bucket types must be explicitly created and activated
before being used, so that they can be properly gossiped around the
cluster. In addition, the following properties may not be modifiable
after creation: consistent
and datatype
, corresponding to the strong
consistency and Riak Data Types features, explained below. Other
properties may be updated. Buckets grouped under a bucket type inherit
all of the type’s properties. Each bucket may override individual
properties but some properties cannot be overridden.
Bucket Type administration is only supported via the riak-admin
bucket-type
command interface. The format of this command may change in
an upcoming patch release. This release does not include an API to
perform these actions. However, the Bucket Properties HTTP API, Protocol
Buffers messages, and supported clients have been updated to set and
retrieve bucket properties for a bucket with a given bucket type.
For more details on bucket types see our official documentation.
Convergent Data Types
In Riak 1.4, we added an eventually consistent counter to Riak. Version 2.0 builds on this work to provide more convergent data types (we call them Riak Data Types for short). These data types are CRDTs[1], inspired by a large and growing base of theoretical research. Data Types are a departure from Riak’s usual behaviour of treating stored as opaque. Riak “knows” about these Data Types, in particular which rules of convergence to apply in case of object replica conflicts.
All data types must be stored in buckets bearing a bucket type that sets
the datatype
property to one of counter
, set
, or map
. Note that
the bucket must have the allow_mult
property set to true
. See
documentation on Riak Data
Types and
bucket
types for
more details.
These Data Types are wrapped in a regular riak_object
, so size
constraints that apply to normal Riak values apply to Riak Data Types
too. The following Data Types are currently available:
Counters
Counters behave much like they do in version 1.4, except that you can use Riak’s new bucket types feature to ensure no type conflicts. Documentation on counters can be found here.
Sets
Sets allow you to store multiple distinct opaque binary values against a key. See the documentation for more details on usage and semantics.
Maps
Maps are a nested, recursive struct, or associative array. Think of them as a container for composing ad hoc data structures from multiple Data Types. Inside a map you may store sets, counters, flags (similar to booleans), registers (which store binaries according to a last-write-wins logic), and even other maps. Please see the documentation for usage and semantics.
API
Riak Data Types provide a further departure from Riak’s usual mode of operation in that the API is operation based. Rather than fetching the data structure, reconciling conflicts, mutating the result, and writing it back, you instead tell Riak what operations to perform on the Data Type. Here are some example operations:
- “increment counter by 10”
- “add ‘joe’ to set”,
- “remove the Set field called ‘friends’ from the Map”
- “set the
prepay
flag totrue
in the Map”
Context
In order for Riak Data Types to behave well, you must return the opaque context received from a read when you:
- Set a flag to
false
- Remove a field from a Map
- Remove an element from a Set
The basic rule is “you cannot remove something you haven’t seen”, and the context tells Riak what you’ve actually seen. All of the official Riak clients, with the exception of the Java client, handle opaque contexts for you. Please see the documentation for more details.
Please see Known Issues below for two known issues with Riak maps.
Reduced sibling creation
In previous versions of Riak, it was trivial for even well-behaved clients to cause a problem called “sibling explosion.” In essence, retried or interleaved writes could cause the number of sibling values to grow without bound, even if clients resolved siblings before writing. This occurred because while the vector clock was attached and properly advanced for each write, causality information was missing from each sibling value, meaning that values originating from the same write might be duplicated.
In Riak 2.0, we have drawn on research and a prototype by Preguiça, Baquero et al that addresses this issue. By attaching markers for the event in which each was written (called a “dot”), siblings will only grow to the number of truly concurrent writes, not in relation to the number of times the object has been written, merged, or replicated to other clusters. More information can be found in our Dotted Version Vectors document.
riak_control
- Add ring availability page, which deprecates existing ring page and shows problematic ring states.
- Fix page transitions with loading indicators
Search 2 (Yokozuna)
The brand new and completely re-architected Riak Search, codenamed Yokozuna, kept its own release notes while it was being developed. Please read there for the most relevant information about Riak 2.0’s new search. Additional official documentation can be found in the following three docs:
Strong Consistency
Riak’s new strong consistency feature is currently an open source only feature and is not yet commercially supported. Official documentation on this feature can be found in the following docs:
For more in-depth technical material, see our internal documentation here and here.
We also strongly advise you to see the list of known issues.
Security
Version 2.0 adds support for authentication and authorization to Riak. This is useful to prevent accidental collisions between environments (e.g., pointing application software under active development at the production cluster) and offers protection against malicious attack, although Riak still should not be exposed directly to any unsecured network.
Riak’s documentation website includes extensive coverage of the new feature. Several important caveats when enabling security:
- There is no support yet for auditing. This is on the roadmap for a future release.
- Two deprecated features will not work if security is enabled: link walking and Riak’s original full-text search tool.
- There are restrictions on Erlang modules exposed to MapReduce jobs when security is enabled. Those are documented here.
- Enabling security requires that applications be designed to transition gracefully based on the server response or applications will need to be halted before security is enabled and brought back online with support for the new security features.
Packaging / Supported Platforms
A number of platforms were added to our supported list for 2.0:
- FreeBSD 10, with new pkgng format
- SUSE SLES 11.2
- Ubuntu 14.04 (‘trusty’)
- CentOS/RHEL 7
Other already supported platforms have been updated from 1.4:
- Fedora packages went from a Fedora 17 to Fedora 19 base
- SmartOS continued to support 1.8 and 13.1 datasets, but dropped 1.6
Apt/Yum Repositories
We will still provide apt and yum repositories for our users for 2.0, but we are extremely happy to be using a service to provide this for our customers moving forward.
Packagecloud is an awesome service which takes much of the pain out of hosting our own apt/yum repositories as well as adding a lot more features for you as a user. The most important feature for you, will be the universal installer they provide that will detect your OS/Version and install the proper repositories and security keys automatically.
For now, 1.4 packages will remain at [apt|yum].riak.com, while 2.0 packages will be hosted on Packagecloud. We hope the added features will make up for any pain we are causing to your tooling with an update in URLs. We apologize for the change, but think it is a good investment going forward.
Client libraries
Most Riak-supported client libraries have been updated for 2.0:
The PHP library has not yet been updated for 2.0. A delivery date will be forthcoming.
Bitcask
- It is now possible to use multiple ongoing data iterators. Previously, Bitcask would only allow one iterator over the data, which can block AAE or fullsync operations. For this release, the in-memory key directory has been modified to hold multiple values of an entry so that multiple snapshots can co-exist. This means that it will consume more memory when iterators are used frequently.
- Fixed a long-standing issue whereby deleted values would come back to life after restarting Bitcask. Both hint and data file formats required changes to accommodate a new tombstone format and deletion algorithm. Files marked for deletion by the merge algorithm will now have the execution bit set instead of the setuid bit. In case of a downgrade, hint files should be removed as they will fail to load on an older version. Riak will perform a gradual merge of all Bitcask files to re-generate them in the new format. This merge will obey the merge window settings and will be performed in chunks to avoid swamping a node. There are several advanced knobs available that enable you to completely skip or tune this merge. Bitcask will operate normally whether this merge happens or not. Its purpose is to reclaim disk space as fast as possible, as Bitcask will take much longer than before reclaiming space from old format files.
- Fixed several problems with merges during startup. Merging will now be
postponed until the
riak_kv
service is up.
HTTP API
Historically, Riak libraries have supported both HTTP and Protocol Buffers for access to Riak. Until recently, HTTP had an edge in support for all of Riak’s features.
Now that Protocol Buffers have reached feature parity, and because Protocol Buffers are generally faster, Riak is removing HTTP support from the client libraries only. There are no plans to remove the HTTP API from the database.
The Python client retains HTTP support, but Java, Ruby, and Erlang do not.
Deprecation Notices
Riak 2.0 marks the beginning of the end for several features. These features are still available in version 2.0 but will be disabled in a future version. We do not recommend using these features in version 2.0. In addition to these soon-to-be-terminated features, there are a few features that have already been removed in Riak 2.0. A listing can be found in the Termination Notices section below.
- Link Walking is deprecated and will not work if security is enabled.
- Key Filters are deprecated; we strongly discourage key listing in production due to the overhead involved, so it’s better to maintain key indexes as values in Riak (see also our new set data type as a useful tool for such indexes).
- JavaScript MapReduce is deprecated; we have expanded our Erlang MapReduce documentation to assist with the transition.
- Riak Search 1.0 is being phased out in favor of the new Solr-based Riak Search 2.0. Version 1.0 will not work if security is enabled.
- v2 replication (a component of Riak Enterprise) has been superseded by v3 and will be removed in the future.
- Legacy gossip (Riak’s original gossip mechanism, replaced in 1.0) will be removed in the future, at which point pre-1.0 Riak nodes will not be able to join a cluster.
- Legacy vnode routing (an early mechanism for managing requests
between servers) is deprecated. If
vnode_routing
is set tolegacy
via Riak’s capability system, it should be removed to prevent upgrade problems in the future. - Some users in the past have used Riak’s internal API (e.g.,
riak:local_client/1
); this API may change at any time, so we strongly recommend using our Erlang client library (or one of the other libraries we support) instead.
Termination Notices
riak-admin backup
has been disabled; see our documentation for a detailed look at running backup and restore operations.- Client ID-based vector clocks
have been removed; they were previously turned off by default in
favor of node-based vector clocks via the
vnode_vclocks
configuration flag. - LevelDB configuration values
cache_size
andmax_open_files
have been disabled in favor ofleveldb.maximum_memory.percent
. See Configuring eLevelDB in our documentation.
Known Issues
A complete listing of known issues in version 2.0 can be found on this Riak wiki page.
Upgrade Notes
A full guide to upgrading to 2.0 can be found in the official docs. The information below is supplementary.
Downgrading After Install
Important note: 2.0 introduces major new features which are incompatible with Riak 1.x. Those features depend on bucket types; once any bucket type has been created and activated, downgrades are no longer possible.
Prior to downgrading to Riak 1.x, you should also see our 2.0 downgrade notes page for more information about necessary steps.
Configuration Files
There is no automated way to upgrade from the 1.4 and previous
configuration (app.config
and vm.args
) to the new configuration
system in 2.0 (riak.conf
). Previous configurations will still work as
long as your app.config
and vm.args
files are in the configuration
directory, but we recommend converting your customizations into the
riak.conf
and advanced.config
files to make configuration easier for
you moving forward. More information can be found in our configuration
files
documentation.
Bugfixes / Changes since 1.4.x
The list below includes all PRs merged between the 1.4.x series and 2.0. It does not include the following repositories which were all added in the 2.0 cycle. Consider all PRs from these repos in addition to the list below.
Added Repositories in 2.0
- Canola - PAM driver for Erlang
- Cuttlefish - Riak’s new configuration tool
- pbkdf2 - PBKDF2 implementation for Erlang
- riak_auth_mods - Security authentication modules for Riak
- riak_dt - Convergent replicated datatypes (CRDTs) in Erlang
- riak_ensemble - Multi-Paxos framework in Erlang
- Yokozuna - Riak Search 2, Riak + Solr
Merged PRs
- bitcask/103: add optional key transformer to support new key formats
- bitcask/104: Improve bitcask iteration concurrency.
- bitcask/106: Refactor of Evan’s multifold
- bitcask/110: remove unused header
- bitcask/112: moved in bitcask schema bits from riak.schema
- bitcask/115: lazily create merge files to avoid creation of empty files
- bitcask/116: Fix fstat struct leak.
- bitcask/118: avoid file server
- bitcask/119: added erlang file header.
- bitcask/123: Refactor bitcask_fileops:fold_keys function
- bitcask/124: Add a Makefile target for pulse tests
- bitcask/125: Updated schema for new cuttlefish api
- bitcask/127: Rename/refactor a bunch of cuttlefish settings.
- bitcask/130: fix bitcask.schema for multi_backend
- bitcask/132: Use tools.mk for dialyzer support
- bitcask/133: Add xref target
- bitcask/135: Changed bitcask.data_root to directory datatype
- bitcask/138: Cuttlefish schema RHS sub for platform_bin_dir
- bitcask/139: Dialyzer fixes and turn on warn_untyped_record & warnings_as_errors
- bitcask/140: move from timestamps to epochs for folding and siblings
- bitcask/141: Changed cuttlefish rhs subs to use $ syntax
- bitcask/143: Simplify find entry snapshot use
- bitcask/144: Add sibling->regular entry conversion sweeper
- bitcask/145: Ensure licensure for long pulse tests.
- bitcask/147: Fix potential keyfolders count leak
- bitcask/148: Fix race with concurrent merges and deletes
- bitcask/150: Remove the possibility for merge and open to race.
- bitcask/151: multifold test stabilization
- bitcask/155: Set the hash symbol to dollars
- bitcask/157: Fixed an issue with some multi_backend versions not matching regular versions
- bitcask/158: Restore fix to timestamp test
- bitcask/160: add warnings as errors to the nif build flags
- bitcask/161: Fixes for ‘faulterl’-style fault injection
- bitcask/162: Pevm pulse tweaks multifold2
- bitcask/164: Invalid hintfile error message is too severe
- bitcask/170: Deferred delete bug (aka Cd8)
- bitcask/173: forward port of fix for fold_file_loop
- bitcask/175: Bugfix/fold open delete race
- bitcask/177: Fix epoch comparison by find_keydir_entry() when keydir->pending != NULL
- bitcask/179: Update tools.mk to v0.5.5
- cluster_info/13: use lager_format:format/4 if available
- cluster_info/14: Use tools.mk Makefile
- ebloom/10: Use tools.mk Makefile
- eleveldb/103: Change cuttlefish RHS sub to $ syntax
- eleveldb/104: correct prefetch race condition.
- eleveldb/105: Fix dialyzer and xref errors
- eleveldb/109: Mv compress option
- eleveldb/111: Mv tiered options
- eleveldb/113: avoid badarg exception when closing db_refs being closed
- eleveldb/117: Mv iter close fix
- eleveldb/119: Must wait until complete close of iterator finishes.
- eleveldb/69: mv-iterator-prev branch
- eleveldb/70: Specify the Snappy libdir install location
- eleveldb/73: Mv flexcache
- eleveldb/74: add limited_developer_mem option flag (support)
- eleveldb/75: Mv flexcache4
- eleveldb/77: fixed dialyzer errors in async_iterator_move
- eleveldb/80: multibackend part of .schema belongs into riak_kv
- eleveldb/87: Schema updates for new cuttlefish API. unit test.
- eleveldb/88: Mv iterator refresh
- eleveldb/89: Schema Changes
- eleveldb/92: Use tools.mk Makefile
- eleveldb/93: Mv tuning4
- eleveldb/95: Cuttlefish rhs subs for platform_bin_dir
- eleveldb/96: Mv tuning6
- eper/10: Merge pull request #1 from basho/master
- eper/5: Update Makefile so that it automatically pulls the new deps.
- eper/6: R16B01 compatibility changes.
- eper/6: R16B01 compatibility changes.
- eper/7: Additional R16B01 compatibility changes.
- eper/8: Add Dialyzer support via tools.mk Makefile
- eper/9: Merge upstream 0.78
- erlang_js/34: Add port_spec due to rebar not adding a default port_spec any more
- erlang_js/35: Support non-binary error-reasons in define_js/4
- erlang_js/37: Add patch to js-1.8.0 which fixes inline compilation error with gcc 4.7+
- erlang_js/38: Dialyzer
- erlang_js/39: Resolve build problems on Mountain Lion.
- erlang_js/40: Regardless of OTP rel, build Mountain Lion 64-bit.
- erlang_js/43: Permit quotes in anonymous functions
- lager/170: pretty printing of nested records
- lager/179: Fix lager eunit initialization
- lager/185: Fixed formatting.
- lager/186: Allow PLT destination to be specified
- lager/187: Rework how dialyzer PLTs are built and used
- lager/188: Fix dialyzer warnings and make all the records typed
- lager/192: Remove the workaround for the bug when printing empty binaries in W mode
- lager/193: Fix lager_console_backend:is_new_style_console_available() function
- lager/194: Add xref target, with exclusions
- lager/196: Don’t use the proplists module when decoding error_logger messages
- lager/197: Add newline to error_msg:error_report lines in crash.log, see #164
- lager/199: Fixed empty tuple bug in lager:pr/2
- lager/200: Fix: correct lager startup in crash_log test
- lager/201: Only discard gen_event notifications on high watermark
- lager/202: Make tests pass on buildbot more of the time
- lager/204: support disable pretty printing records encountered at compile time
- lager_syslog/10: updated readme for clarity
- lager_syslog/9: Improve lager_syslog_backend to support non-atom output log levels.
- leveldb/90: leveldb’s mv-clean-overlaps
- leveldb/92: Mv spin locks
- leveldb/93: Mv throttle 4
- leveldb/95: Mv flexcache
- leveldb/96: Fix version_set compilation bug
- leveldb/98: Mv counters update
- leveldb/99: Mv async close
- leveldb/100: Mv flexcache2
- leveldb/101: Mv hot threads1
- leveldb/102: revert to original, fixed 20 percent for internal databasses
- leveldb/103: install additional performance counters
- leveldb/104: change build_detect_platform to check for OS X Mavericks
- leveldb/105: Mv flexcache5
- leveldb/106: Mv hot threads2
- leveldb/108: Mv aggressive delete
- leveldb/111: Mv dynamic block size
- leveldb/113: Mv fadvise control 2.0
- leveldb/114: mv-iterator-refresh (part 2)
- leveldb/117: mv-tuning4
- leveldb/119: mv tuning5
- leveldb/120: Mv tuning6
- leveldb/125: activate the AssertHeld() logic of Mutex and Spin classes. And address issue #100
- leveldb/129: Two fail case fixes from failure injection tests
- leveldb/130: Mv tiered options
- leveldb/131: code to isolate Log() file flushes from happening within mutex…
- leveldb/132: Mv write sizing
- leveldb/137: Mv delete mutex fix
- leveldb/139: Mv tuning9
- leveldb/140: Give Read and Iterator calls more consistent disk access on moderately loaded systems.
- merge_index/27: Cv 3717 patch
- node_package/100: Explicitly set a destination dir for generated files by cuttlefish
- node_package/102: Add optional support for specifying a NUMA policy
- node_package/103: added extra -vm_args to CONFIG_ARGS for easy access by erlang vm
- node_package/106: added support for extra cuttlefish commands
- node_package/108: Ensure word-splitting does not happen when re-running as other user.
- node_package/109: Fix patch for smartos to add quotes
- node_package/112: Add chkconfig to install and uninstall scripts for RPMs
- node_package/113: Add support for -kernel net_ticktime
- node_package/116: Read /etc/sysconfig/
file in RHEL/Fedora init script - node_package/119: force nodetool’s encoding to be unicode
- node_package/121: Change prctl calls from
-t basic
to-t system
for SmartOS - node_package/123: Further support for cuttlefish configuration files in SmartOS
- node_package/126: Replace sudo in runner scripts with su for greater compatibility
- node_package/128: Add packaging for FreeBSD pkg-ng
- node_package/129: Escape quotes passed on runner command line
- node_package/132: Remove reboot from runner script
- node_package/134: Escape ‘{’ and ‘}’ in env.sh before calling su
- node_package/137: Set HOME env var and proper perms on nodetool in Ubuntu
- node_package/140: Add basic support for SuSE Linux
- node_package/143: Restart the old-fashioned way
- node_package/146: Require root or runner privs to run
ping
command - node_package/148: Cleanup usage documentation for chkconfig
- node_package/149: Source default config files in env.sh
- node_package/78: node_package cuttlefish integration
- node_package/80: Added ‘help’ section
- node_package/81: Fixed issues with whitespace for non-cuttlefish configs
- node_package/85: make chkconfig output path to config file
- node_package/86: vm.args support for node_package
- node_package/87: Fixes ‘attach’ in runner script
- node_package/88: Remove the output of ping from the console command
- node_package/89: Fix return code of service stop in the RPM init script
- node_package/92: fixed node and cookie regex to be more inclusive, more whitespace
- node_package/96: Use shell globing instead of unnecessary and dangerous ls construct.
- riak_api/31: Add swap/3 API
- riak_api/33: Fix case where the registrar is not the table owner but a swap message is sent.
- riak_api/34: Move webmachine from riak_core.
- riak_api/35: Add security to Riak
- riak_api/36: pb_service_test no longer runs
- riak_api/38: Moved riak_api bits of riak.schema, and added unit tests
- riak_api/39: Add CRL checking for client certificate
- riak_api/40: Reformatting.
- riak_api/43: Added protobuf.nagle to the riak_api.schema
- riak_api/44: Fix late registrations: riak_api_pb_server is no longer a gen_server
- riak_api/46: Honor configured cipher suites and add an option to honor the order
- riak_api/47: Changes for new cuttlefish API
- riak_api/48: Remove references to ranch_tcp and ranch_ssl.
- riak_api/49: Remove reset functionality from bucket-type service.
- riak_api/51: Confbal/schema review and tests
- riak_api/52: Add tools.mk
- riak_api/53: Refactor riak_api_pb_service to use callback mod attributes
- riak_api/54: HAproxy health-check causes node shutdown
- riak_api/55: Add xref target and fix uncovered bug
- riak_api/56: {level, advanced} -> hidden
- riak_api/57: No longer call deprecated function
- riak_api/58: Change error message returned when no module reg.
- riak_api/59: Fix dialyzer warnings
- riak_api/60: Make HTTPS consistent with PB
- riak_api/62: Handle the {error, no_type} return from riak_core_bucket.
- riak_control/112: Fix redirect logic.
- riak_control/114: Add the ability to select all available n_vals in cluster.
- riak_control/126: Handle incompatible record in Riak 1.4.0.
- riak_control/136: Incompatible is less serious (master)
- riak_control/138: Merge 1.4 into master and reconcile changes.
- riak_control/142: Fix cherry-pick conflict in templates.js
- riak_control/143: Upgrade to ember-1.0.0 and the latest ember-data beta
- riak_control/146: Fix bad function call.
- riak_control/147: Bring templates up-to-date.
- riak_control/150: Remove generated files.
- riak_control/154: Fix bad paths and ignore generated files.
- riak_control/155: Use webmachine develop branch.
- riak_control/159: Use promises to engage loadingRoute on all application states.
- riak_control/160: Fix rebar.config to use {branch, “name”}
- riak_control/161: Add testing harness.
- riak_control/164: Add force_ssl flag to Riak Control.
- riak_control/165: riak_control cuttlefish schema and tests
- riak_control/166: No longer build for R14.
- riak_control/167: Address regression introduced by basho/riak#403.
- riak_control/168: Deprecate unused, failing, tests.
- riak_control/169: Replace README.
- riak_control/171: Fix dropdown for replace not not populating correctly
- riak_control/174: Provide some basic tests around the RiakControl Main Pages
- riak_control/176: Changes for new cuttlefish api
- riak_control/177: Simplified riak_control’s cuttlefish schema. CONFBAL STYLE!
- riak_control/178: Sensible defaults for riak_control
- riak_control/180: Fix for Issue 179
- riak_control/181: try/catch for rex error
- riak_control/91: Add new ring availability page.
- riak_control/93: Add doc; general cleanup.
- riak_control/94: Add additional specs.
- riak_core/285: Remove unnecessary function call.
- riak_core/348: R16B01 compatibility changes.
- riak_core/363: Cluster Metadata (Part 1⁄2)
- riak_core/367: Fix meck related unit test problems
- riak_core/368: Merge 1.4.2 to develop
- riak_core/369: Use raw ring when setting bucket props (develop branch)
- riak_core/381: Remove webmachine dependency
- riak_core/382: Remove protobuffs dependency from riak_core.
- riak_core/386: Add security to Riak
- riak_core/387: Expose the resolution of capabilities for general use in protocol negotiations
- riak_core/393: update hashtree_eqc. get it passing on eqc 1.29.1
- riak_core/394: Fix rebar.config to use {branch, “name”}
- riak_core/396: address some metadata hashtree issues
- riak_core/397: dialyzer fixes for cluster metadata
- riak_core/398: Remove merkle
- riak_core/400: Fixes #189 – include socket peer info in lager messages
- riak_core/402: Proper Bucket Type Creation
- riak_core/408: mark AAE vnodes as internal databases for leveldb flexcache accounting
- riak_core/410: export vsn of riak_core_ring:future_index that doesn’t take ring
- riak_core/411: Sort AAE differences before acting upon them via read-repair
- riak_core/413: Fix eunit test failures
- riak_core/414: Increase disterl buffer sizes.
- riak_core/415: Add infrastructure to change the OTP net_kernel’s net_ticktime
- riak_core/416: move ebin/riak_core.app to src/riak_core.app.src
- riak_core/417: refactored riak_core bits of the schema in here, with tests
- riak_core/421: Update otp_release list in .travis.yml
- riak_core/423: fill in missing props in riak_core_bucket_type:defaults/0
- riak_core/424: moved default bucket props from riak_kv
- riak_core/425: GET ON THIS LEVEL
- riak_core/430: Fix bad type specifications.
- riak_core/431: do not serialize through gen_server on metadata get
- riak_core/432: Make load_certs function exported and more useful (works on a single file, too)
- riak_core/433: share segment store accross all nodes in hashtree_tree
- riak_core/435: Rework table formatting to be better and output better info
- riak_core/436: 2.0 version of handoff backwards compatability
- riak_core/437: Implement riak security enable/disable/status
- riak_core/441: Support for strongly consistent Riak
- riak_core/445: initial add of riak_core_bucket_types.hrl
- riak_core/446: cleanup conn_mgr/service_mgr eunit output
- riak_core/447: Removed webmachine from applications that should be started.
- riak_core/451: Implement alter-user, del-user and del-source
- riak_core/453: add missing apps to src/riak_kv.app.src
- riak_core/454: Added handoff concurrency setting to schema.
- riak_core/457: Yet Another Round of Cluster Metadata Improvements (YAROCMI #1)
- riak_core/460: Validate Bucket Type Properties Required by Core
- riak_core/462: Add EQC statem property for vclock. [rebased]
- riak_core/463: Add get dot and dot type for dvv style causality
- riak_core/467: Bound the time that stats calculation can take
- riak_core/468: Changing how pathing is determined:
- riak_core/469: Make cipher suites configurable via the command line
- riak_core/471: Provide a synchronous registration and unregistration of services.
- riak_core/478: New cuttlefish api functions
- riak_core/480: Port 1.4 changes to the 2.0 branch.
- riak_core/482: Ensure stats progress and tag individual stale stats
- riak_core/483: Numerous AAE improvements
- riak_core/484: Background Manager Integration with Handoff
- riak_core/486: riak_core support for kv#734
- riak_core/488: Wildcard security sources overlapping with regular user sources causes issues
- riak_core/490: Fix mailing list link in README
- riak_core/491: remove legacy forwarding code that snuck in as part of 632af2b3ce9
- riak_core/495: Filter Typed Bucket Tombstones in riak_core_ring:get_buckets/1
- riak_core/497: Cuttlefish schema for background manager global kill/enable switch
- riak_core/498: Fix a Couple Mixed Cluster Issues w/ Bucket Types
- riak_core/499: properly handle default bucket type in get/1
- riak_core/500: Allow PLT destination to be specified
- riak_core/502: Peer Reviewed Schema Changes
- riak_core/503: Don’t discard config options that are not validated
- riak_core/504: fix make test
- riak_core/506: Handle tombstones when accumulating sources
- riak_core/507: Use tools.mk Makefile
- riakcore/508: [Made platform*_dir {level, advanced}](https://github.com/basho/riak_core/pull/508)
- riak_core/510: Dominates should take timestamp into account.
- riak_core/511: address unmatched_returns in cluster metadata code
- riak_core/512: Add xref target, with exclusions
- riak_core/513: plumb through coverage queries during overload
- riak_core/514: Re-order Resize Transfers so Partitions Not Changing Ownership Go First
- riak_core/515: Made tcpmon aware of ssl sockets for stats.
- riak_core/518: Include directories in generated .conf file.
- riak_core/519: If the security capability is unknown, consider security off
- riak_core/520: add {refresh_iterator, true} for backend folds during handoff send
- riak_core/521: “candidate” misspelled in node replacement error messages
- riak_core/523: Missing whitespace in error message
- riak_core/524: Stop doing implicit role manipulation
- riak_core/526: Cuttlefish RHS Substitutions
- riak_core/531: Removed table manager.
- riak_core/534: Treat users and groups as distinct concepts (extended)
- riak_core/536: Cleanup for permissions assigned to ‘all’
- riak_core/540: Fix dialyzer warnings
- riak_core/542: Minor cleanups
- riak_core/543: Add callback annotations to riak_core_vnode
- riak_core/544: Remove those obnoxious debug statements from bucket_fixup_test
- riak_core/545: Update tools.mk to 0.5.3 and add dialyzer ignore file
- riak_core/546: Improve output from (primarily) security commands
- riak_core/547: Switched cuttlefish RHS subs to $ syntax
- riak_core/548: Drop console support for ‘all’ keyword for global permissions, fix typo
- riak_core/549: Add dialyzer files to gitignore
- riak_core/550: Only wait for the finished message in the updown test
- riak_core/551: Make print-user/group look like print-users/groups
- riak_core/555: Fix overload test
- riak_core/562: Be more rigorous with security command-line arguments
- riak_core/566: Improve riak_ensemble integration
- riak_core/567: Do not allow a bucket type named ‘any’
- riak_core/568: Add
dvv_enabled=true
to default props for typed buckets - riak_core/573: Refactor: rename entry for dot (cos that’s what it is)
- riak_core/577: Update core:security:bucket() spec
- riak_core/578: Ensure ensembles reconfigure before nodes exit
- riak_core/581: Correct return type information on riak_core_bucket:set_bucket/2
- riak_core/586: Made many rpc:call/4,5 calls safer if rex is down.
- riak_core/587: Fix hashtree:shatest from timing out
- riak_core/589: Extend hashtree eqc test timeouts
- riak_core/591: Fix minor display bug with security sources
- riak_core/592: change bucket_fixup_test:fixuptest/0 to wait for ring manager death
- riak_core/595: plug bg_manager_eqc into eunit and address potential race
- riak_core/596: timeout in riak_core_tcp_mon nodeupdowntest
- riak_core/598: Make riak_core_util:safe_rpc catch exit correctly
- riak_core/599: disable bg manager globally
- riak_core/600: attempt to isolate hashtree tests more by using a reference
- riak_core/601: Add logic to automatically enable consensus system
- riak_core/602: Fix riak_core_util:pmap/2 infinite stall
- riak_core/603: Bugfix/reip update claimant
- riak_core/605: call Mod:handle_overload_info/2 for unknown msgs in vnode_proxy during o…
- riak_core/606: Silence output from core_vnode_eqc and log to file instead
- riak_core/609: Use a proxy process in claimant when joining/removing SC nodes
- riak_core/611: Update tools.mk to v0.5.4
- riak_core/612: Update tools.mk to v0.5.5
- riak_jmx/18: Added cuttlefish schema for riak_jmx
- riak_jmx/19: Using newer cuttlefish datatypes
- riak_jmx/20: Fix riak_core regression.
- riak_jmx/21: Updated JMX schema with newer cuttlefeatures
- riak_jmx/22: Add tools.mk and make xref work
- riak_jmx/23: {level, advanced} -> hidden
- riak_jmx/24: remove useless script
- riak_jmx/25: Resolve all outstanding dialyzer warnings.
- riak_kv/1000: Update tools.mk to v0.5.5
- riak_kv/1002: Update to latest riak_ensemble integrity approach
- riak_kv/383: Add disk stats to
/stats
output to make consistent - riak_kv/561: Handle worker errors and timeout on 2i reformat
- riak_kv/601: Move json encoding out of riak_object
- riak_kv/602: R16B01 compatibility changes.
- riak_kv/603: Remove -author attributes
- riak_kv/606: Make the memory backend config behave as documented
- riak_kv/607: Don’t return the timestamp information when folding objects
- riak_kv/608: fix riak_kv_backend standard tests
- riak_kv/613: Fix counter protobuf message codes
- riak_kv/639: Fix HTTP MR error reporting
- riak_kv/643: Add option for smaller bitcask keys
- riak_kv/647: Remove duplicate make targets.
- riak_kv/648: Add dialyzer targets.
- riak_kv/649: Fix keys fsm EQC test
- riak_kv/651: Merging 1.4.2 to develop branch
- riak_kv/652: remove hashtree code and docs
- riak_kv/653: Add Yokozuna index hook
- riak_kv/654: Generic AAE Status
- riak_kv/659: Move riak_core.proto from riak_core.
- riak_kv/661: Added Mutators to support changing object on read/write
- riak_kv/662: Add security to Riak
- riak_kv/663: Modify the version 1 format to support bucket types
- riak_kv/664: Use yokozuna or riak_search for “search” MapReduce inputs
- riak_kv/668: Fix rebar.config to use {branch, “name”}
- riak_kv/669: Add permissions to crdt requests.
- riak_kv/672: Bump rebar; fix makefile.
- riak_kv/673: update bucket validator for changes in core
- riak_kv/675: Set text/plain as content-type for permission errors
- riak_kv/677: bucket type console functions
- riak_kv/678: Error reason for put is not propagated back to client
- riak_kv/680: Add warning/max object limits
- riak_kv/681: Improve logging so we can tell which vnode failed to start up.
- riak_kv/685: add option to filter keys that are no longer in preflist during fold
- riak_kv/692: Fixed call to undefined function in kv_mutator
- riak_kv/694: Add bucket types support to HTTP.
- riak_kv/695: refactored in riak_kv bits from riak.schema with tests
- riak_kv/697: Re-introduce the 1.4 counters API
- riak_kv/698: Coerce the datatype property into an atom.
- riak_kv/702: moved default bucket props to riak_core
- riak_kv/703: Fix MR/bucket types incompatibility
- riak_kv/704: Adjust guard to tolerate bucket types
- riak_kv/705: Fix include path.
- riak_kv/707: Re-add security to the wm_counters endpoint
- riak_kv/708: Add validator support for data types
- riak_kv/710: Support for strongly consistent Riak
- riak_kv/711: Add hook to Yokozuna for handoff
- riak_kv/712: Use the deep equality check for riak_objects.
- riak_kv/714: Correctly enocde the update response when return_body is true
- riak_kv/718: Key-specific changes for FS2 testing
- riak_kv/719: Avoid mutator code path when necessary.
- riak_kv/720: added secure_referer_check to riak_kv schema
- riak_kv/722: Improve the documentation for the storage_backend setting.
- riak_kv/723: Fix merge to properly operate over dict.
- riak_kv/725: Fix type specification.
- riak_kv/727: moved some schema bits in from riak.schema
- riak_kv/728: Transform an empty context to a
undefined
for the PB protocol - riak_kv/729: Fix consistent_object mixed-mode failure.
- riak_kv/730: add riak_pb to apps in src/riak_kv.app.src
- riak_kv/731: remove ebloom from rebar.config
- riak_kv/732: Add HTTP API for datatypes.
- riak_kv/733: make riak_kv_test_util app startup less brittle
- riak_kv/734: Refactor FSMs to do less work
- riak_kv/742: Pass crdt_op to vnode on read-repair.
- riak_kv/745: Add CRDT stats
- riak_kv/746: Use a DVV like approach to stop sibling explosion
- riak_kv/751: documentation for memory_backend.max_memory
- riak_kv/756: Clean up two security holes: link walking and arbitrary erlang MR
- riak_kv/757: New cuttlefish api changes for schemas
- riak_kv/758: Merge CRDTs inside riak_object merge
- riak_kv/760: make it possible to disable overload protection
- riak_kv/761: Change the way we handle removes with a context
- riak_kv/763: Make vnode_status overload safe
- riak_kv/769: Integrate Background Manager with Handoff And AAE Tree Rebuilds
- riak_kv/770: Strong Consistency and Other Riak KV Bucket Validators
- riak_kv/771: Add support for conditional postcommit hooks
- riak_kv/773: Remove reset functionality from bucket-type API.
- riak_kv/776: 2i improvements added in 1.4.4-1.4.6
- riak_kv/778: Fix bug with stats for legacy counters.
- riak_kv/782: Don’t encode object dot for JS map-reduce
- riak_kv/785: Add timer:sleep()-based throttle to riak_kv_exchange_fsm:read_repair_keydiff()
- riak_kv/787: Fix test-compile target, skipping forced recompile if EQC is not present.
- riak_kv/788: fix put fsm’s use of random:uniform_s when choosing forwarding node
- riak_kv/789: Fix logging call
- riak_kv/792: Unfold the put options at the start
- riak_kv/793: Cuttlefish schema for background manager subsystem (aae and handoff) kill/enable switch
- riak_kv/794: Allow PLT destination to be specified
- riak_kv/796: peer reviewed schema changes… and more
- riak_kv/808: Use tools.mk in Makefile
- riak_kv/810: Add “never” atom to options for anti_entropy_expire config.
- riak_kv/814: Fix DVV merge to handle “skewed dots”
- riak_kv/817: Bring 1.4.7 2i AAE fixes to 2.0
- riak_kv/820: Remved mutator system.
- riak_kv/821: Add xref target, with exclusions
- riak_kv/822: Ajs overload plumbing
- riak_kv/824: display default type properties in console status output
- riak_kv/825: revert allow_mult default only for untyped (default type) buckets
- riak_kv/826: Made anti_entropy.data_dir appear in default .conf file
- riak_kv/827: warn about inability to downgrade after activating bucket type
- riak_kv/828: Add riak_core stats to riak-admin status
- riak_kv/829: Make sure background and table manager are started for tests that need t.hem
- riak_kv/832: Replaced mustache template in schema with RHS sub for platform_bin_dir
- riak_kv/833: Move metadata settings to advanced level.
- riak_kv/835: Rebased push of riak_kv#807 (put_merge refactor + EQC)
- riak_kv/840: Export riak_kv_vnode:get/4
- riak_kv/841: Backwards compat for users running map reduce jobs that use riak_kv_counter
- riak_kv/843: Remove table manager from tests, as it has been removed from riak core
- riak_kv/848: Fix incorrect specification.
- riak_kv/849: Add config entry for riak_dt.binary_compression.
- riak_kv/850: deprecate riak_kv_backup:backup/3
- riak_kv/851: Update sysctl checks
- riak_kv/852: Use iterator_refresh backend option for some folds
- riak_kv/853: handle iterator_refresh option checking inside riak_kv_vnode only
- riak_kv/855: Add Yokozuna stats so they appear in console and http /stats
- riak_kv/857: Make get_put_monitor_eqc pass deterministically
- riak_kv/860: Fix use of fsm timeouts in 2i AAE
- riak_kv/861: Object limit changes done in 1.4.8
- riak_kv/862: Changed cuttlefish rhs sub to $ syntax
- riak_kv/867: Make get_put_monitor_eqc pass during
make test
- riak_kv/868: a couple bucket type console command improvements
- riak_kv/869: Send reply in event of a premature exit (via throw) from fold.
- riak_kv/871: Remove full object as context code and use DT’s built in contexts
- riak_kv/874: Fix list_to_binary invocations on permissions errors
- riak_kv/879: Export AAE format functions for reuse
- riak_kv/881: Export riak_client type.
- riak_kv/882: Provide a minimal type for query_def.
- riak_kv/883: multi_backend.schema doesn’t handle error cases of cuttlefish_generator:map/2
- riak_kv/885: First round of Dialyzer fixes.
- riak_kv/886: Add yz_stat exception to xref analysis
- riak_kv/887: Update to work with latest riak_ensemble API
- riak_kv/888: Fix handling of bucket+type with MR keyfilters
- riak_kv/891: Make
dvv_enabled
a bucket property - riak_kv/892: comapring -> comparing
- riak_kv/896: Implement AAE-based ensemble syncing
- riak_kv/898: Bound testing time for riak_object_dvv_statem
- riak_kv/899: keys_fsm_eqc intermittently fails
- riak_kv/904: Some small dialyzer progress
- riak_kv/907: Feature/riak kv pb index dialyzer
- riak_kv/910: Use vclock encapsulation of dot/pure_dot
- riak_kv/911: Ignore all current dialyzer errors
- riakkv/913: [Ignore {ack,,now_executing} that arrive late](https://github.com/basho/riak_kv/pull/913)
- riak_kv/914: Clean up webmachine resource specs
- riak_kv/916: Add sys_monitor_count and sys_port_count to stats.
- riak_kv/920: riak_core_security:check_permission/2 usage
- riak_kv/923: kv_vnode calling coverage_filter with ‘all’
- riak_kv/924: Fix some AAE dialyzer errors
- riak_kv/925: Add Bitcask tombstone2 upgrade procedure
- riak_kv/926: Ensure nodes don’t transition to exiting too soon
- riak_kv/931: Specified return code for riak_kv_console:bucket_type_status
- riak_kv/932: fix #929: wait for riak_kv_stat to unregister
- riak_kv/933: Use binary_to_atom/2 instead of binary_to_existing_atom/2.
- riak_kv/935: Fix limit checks in riak_kv_env for R16B02-basho5
- riak_kv/938: fix #936: handle slow metrics for get_put_monitor_eqc
- riak_kv/939: fix #937: spawn tests to avoid unrelated messages
- riak_kv/941: Fix dialyzer error in kv_mrc_map
- riak_kv/942: Better error handling from basho/riak_kv#935
- riak_kv/943: Optimize riak_kv_entropy_info:exchanges/2
- riak_kv/945: Comment out get_put_monitor_eqc property
- riak_kv/946: Bound eqc testing time
- riak_kv/947: Update repair count type specs in riak_kv_entropy_info
- riak_kv/950: Fix two places where the bucket-type was hard-coded “default” in securit…
- riak_kv/951: Use the embedded counter inside the map
- riak_kv/952: Fix security-enabled delete handling for nonexistent resources.
- riak_kv/953: Add basic Erlang-VM-style tracing utilities
- riak_kv/956: Cleaner output for bucket type creation errors
- riak_kv/963: forward port membackend fixes
- riak_kv/964: disable bg manager integration w/ handoff & AAE
- riak_kv/968: Expose a 2-arity from_mod function for embedded mod map
- riak_kv/970: Verify bucket type existence for list keys and buckets operations
- riak_kv/971: Improve on 5 min AAE+ownership change stall
- riak_kv/972: Rename security permission from riak_search.query to search.query
- riak_kv/973: Resolves GH #859 by setting tmpdir for sorting AAE disk logs.
- riak_kv/974: Fix ‘undefined’ bucket type issue.
- riak_kv/976: Fake Bitcask version for tests
- riak_kv/977: Fix reip loading of riak_core
- riak_kv/978: Verify strong consistency configuration on startup
- riak_kv/979: Add console commands to inspect ensemble system
- riak_kv/980: Make ensemble trust/paranoia configurable
- riak_kv/981: Add basic stats for strongly consistent operations
- riak_kv/987: Fix MOD_MAP when datatype update request includes return_body=true
- riak_kv/989: SC ensemble peers should wait for riak_kv service
- riak_kv/990: Add riak_kv_ensemble_backend:handle_down/4
- riak_kv/992: Correct discrepancy between do_get_term and case clause in do_delete
- riak_kv/993: Fix AAE on/off detection
- riak_kv/994: add riak_kv_vnode:handle_overload_info/2
- riak_kv/997: Ignore all warnings in generated riak_core_pb
- riak_kv/999: Update tools.mk to v0.5.4
- riak_pb/53: Add yokozuna index and schema admin messages
- riak_pb/54: Bucket type support
- riak_pb/55: Add security to Riak
- riak_pb/56: Add yokozuna messages to python
- riak_pb/58: Add term_regex to 2i query
- riak_pb/59: Remove bucket type field from counter messages, unsupported.
- riak_pb/61: Add datatype bucket property (read-only)
- riak_pb/63: Generate an Erlang module from a CSV of message/code mappings.
- riak_pb/64: An empty LWW register has the value
undefined
which is not binary() - riak_pb/65: Fix bug when decoding map values in an update response that had return_body=true.
- riak_pb/67: Renaming yz_index to search_index
- riak_pb/69: Upgrade java protobuf version from 2.4.1 to 2.5.0
- riak_pb/70: Inital pass at generating Protocol Buffer headers/source for C
- riak_pb/74: Remove reset functionality from bucket-type API.
- riak_pb/75: Fix typo in riak_pb_messages.csv
- riak_pb/77: Generate Python from message code mappings.
- riak_pb/79: Require GPG/PGP signing of the python release.
- riak_pb/80: Add n_val to Yokozuna Index
- riak_pb/82: Maven will autogenerate RiakMessageCodes
- riak_pb/84: Resolves issue with maven >= 3.1.x
- riak_pb/85: Relax the protobuf version restriction, allowing 2.5.0.
- riak_pb/86: Add missing ‘consistent’ bucket(-type) property.
- riak_pb/87: Convert Erlang build steps to tools.mk.
- riak_pb/89: compile in 17.0: clients are compiles with various OTP versions
- riak_pb/91: Clean up dialyzer specs for context/values
- riak_pb/93: Remove the ‘add field’ operation from riak_dt maps
- riak_pb/94: Fix dialyzer and xref warnings
- riak_pipe/80: catch and upgrade riak_core_fold_req_v1
- riak_pipe/83: Use tools.mk in Makefile
- riak_pipe/84: Add xref target, with exclusions
- riak_pipe/86: rpc:call try/catch rex
- riak_pipe/87: Resolve dialyzer warnings.
- riak_repl/318: fixed typo in debug message, not urgent
- riak_repl/324: removed delayed_write option to file:open
- riak_repl/326: Cache the inet:peername for better error condition logging.
- riak_repl/332: Make the interval the rtsink rechecks the active flag configurable.
- riak_repl/356: Use {active, once} for the rt_sink socket.
- riak_repl/357: don’t blow up on stat errors
- riak_repl/371: Catch errors on connect in the RT source connection
- riak_repl/372: Add overload check and recovery to realtime queue
- riak_repl/388: merge 1.4 changes to develop
- riak_repl/391: Fix for heartbeat timeout bug discovered in riak_test repl_rt_heartbeat
- riak_repl/396: Repl schema for cuttlefish
- riak_repl/399: Handle decommissioned clusterid for replicated CS manifests
- riak_repl/400: Fixed realtime protocol version check
- riak_repl/402: Reduced Replication
- riak_repl/407: Add makefile with dialyzer targets.
- riak_repl/408: Fixed repl mutator registration
- riak_repl/412: Fix for Issue 384: Repl stats errors
- riak_repl/413: Merge 1.4 changes into develop, part 2
- riak_repl/418: merge repl hook fix from 1.4
- riak_repl/422: Fix for RTQ EQC prop_main and prop_parallel
- riak_repl/435: Handle race by treating cluster as disconnected.
- riak_repl/437: fixed misleading typo in connection msg
- riak_repl/438: Feature/mw/rtq percentage used
- riak_repl/439: add rebar.config dep for ebloom
- riak_repl/453: Use loopback interface flag rather than interface name.
- riak_repl/455: Remove undeliverables from the real time queue.
- riak_repl/456: Switch fail_on_warning to warnings_as_errors.
- riak_repl/457: Compilation changes
- riak_repl/463: Bugfix/dp/pg proxy leader changes develop
- riak_repl/465: Resolve race condition when joining a node.
- riak_repl/467: Prevent potential race condition.
- riak_repl/478: Port connection manager changes from 1.4 to 2.0
- riak_repl/479: Add nicer error message for service manager bind error.
- riak_repl/480: bring additional 1.4 changes to develop for 2.0
- riak_repl/481: Fix compilation errors in EQC tests.
- riak_repl/482: Avoid arithmetic on folsom error tuples
- riak_repl/484: Cuttlefish api changes and new unit test
- riak_repl/487: added a v2 deprecation lager:warning
- riak_repl/488: Integrate fullsync with the background manager
- riak_repl/491: official deprecation notice from prod mgmt
- riak_repl/501: Port of 1.4 AAE replication fixes to 2.0.
- riak_repl/503: Don’t write empty clusters to the ring, ever
- riak_repl/505: Fix and refactor EQC, Eunit tests
- riak_repl/506: fixes for riak_ee #159
- riak_repl/509: Use tools.mk in Makefile
- riak_repl/511: Ensure we update the bloom for object differences.
- riak_repl/514: Prevent deadlock in hashtree compare.
- riak_repl/516: Removed reduced repl
- riak_repl/517: Add xref and remove ancient couchDB cruft
- riak_repl/520: Add protocol version checks in typed-bucket handling to fullsync for backward compatibility
- riak_repl/521: Use iterator_refresh option during vnode folds
- riak_repl/535: Make the heartbeat times in seconds, like it says in the docs
- riak_repl/536: Use riak_core_vnode_master:command_return_vnode when doing vnode folds
- riak_repl/538: Normalize representation.
- riak_repl/539: Remove some more couch_merkle holdovers
- riak_repl/541: Minor dialyzer fixes.
- riak_repl/546: fixing casacding/cascading and realtime_recv_kgbps typos
- riak_repl/550: Couple of simple bugs noticed while reading code
- riak_repl/551: Dialyzer fixes.
- riak_repl/552: More dialyzer fixes.
- riak_repl/554: Add fullsync stat caching on a configurable interval.
- riak_repl/558: Fixes wm stats for multiple client connections
- riak_repl/559: Bloom serialization.
- riak_repl/562: Bug/mw/correctly jsonify mutiple fs source sink
- riak_repl/563: Logging cleanup.
- riak_repl/564: Another round of Dialyzer work.
- riak_repl/566: Finish him.
- riak_repl/567: Use valid API for starting strategy modules in riak_repl_tcp_server
- riak_repl/568: Ignore unknown functions.
- riak_repl/569: Add callback annotations to gen_leader.
- riak_repl/571: Fix source/sink typo.
- riak_repl/578: Fixes monitor leak for realtime objects (#204).
- riak_repl/584: Fix JSONifying datetimes in the webmachine stats
- riak_repl/587: Bugfix/mw/safer rpc
- riak_repl/589: Update strip_postcommit to remove all possible repl hooks.
- riak_repl/590: Allow retries when location_down.
- riak_repl/591: Ensure that cancel_fullsync works.
- riak_repl/592: No longer use sync_send_event.
- riak_repl/595: Disable background manager by default.
- riak_repl/596: Don’t attempt to send heartbeat when invalid.
- riak_repl/598: Add logic to clear cancelled connection requests
- riak_repl/599: Race condition causes fullsync replication to never complete
- riak_repl/601: Handle synchronous events for rolling upgrades.
- riak_repl/604: Change lager:notice in trim_q_entries/4 to lager:debug
- riak_repl_pb_api/10: Makefile and repo cleanup
- riak_repl_pb_api/11: Don’t crash when {error, disconnected}.
- riak_repl_pb_api/4: be dialyzer friendly at riakc_pb_socket:tunnel/4
- riak_repl_pb_api/5: Switch back to develop branch.
- riak_repl_pb_api/9: bumped riak_pb to 2.0.0.11
- riak_search/138: use tuple modules instead of parameterized modules
- riak_search/150: Update riak_search to support some new core apis
- riak_search/151: don’t forward folds in handle_handoff_command; do upgrade properly in ha.ndle_command
- riak_search/153: added {enabled, false} to app.src
- riak_search/154: Fix search tests
- riak_search/156: Don’t start riak_search is security is enabled
- riak_search/158: Allow search to start if security is enabled, just disable its APIs
- riak_search/160: Add deprecation notice on Riak Search startup
- riak_snmp/10: fix unit tests for Erlang R16B01
- riak_snmp/11: look for mib_dir in riak_snmp not riak
- riak_snmp/12: fix “make clean” and .gitignore
- riak_snmp/13: fix error due to missing SNMP directory
- riak_snmp/14: fix unit test failures caused by missing module
- riak_snmp/15: Changes for new cuttlefish api
- riak_snmp/16: Confbal changes to cuttlefish schema.
- riak_snmp/17: Add tools.mk and xref
- riak_snmp/18: {level, advanced} -> hidden
- riak_snmp/8: Add try/catch around poll_stats() call, fix riak_test intermittent failures…
- riak_snmp/9: added cuttlefish schema for snmp
- riak_sysmon/10: moved riak_sysmon bits of cuttlefish schema here, with tests
- riak_sysmon/12: Added erlang emacs mode comment
- riak_sysmon/13: Update cuttlefish schema.
- riak_sysmon/14: {level, advanced} -> hidden
- riaknostic/74: pull app.config and vm.args from init:get_arguments
- riaknostic/75: added extra -vm_args to CONFIG_ARGS for easy access by erlang vm
- sidejob/5: Add tools.mk and a Makefile that uses it
- sidejob/6: Fix tests
- sidejob/7: Update tools.mk, add xref
- sidejob/9: Fix dialyzer warnings.
- webmachine/166: fix unit tests for Erlang/OTP R16
[1] http://doi.acm.org/10.1145/2332432.2332497 Nuno Preguiça, Carlos Bauqero, Paulo Sérgio Almeida, Victor Fonte, and Ricardo Gonçalves. 2012. Brief announcement: efficient causality tracking in distributed storage systems with dotted version vectors. In Proceedings of the 2012 ACM symposium on Principles of distributed computing (PODC ‘12).