New: uGameDB 1.2.0 Broccoli Pie (2012-08-03)

24 views
Skip to first unread message

Staffan Einarsson

unread,
Aug 3, 2012, 11:10:33 AM8/3/12
to unity...@googlegroups.com
Dear UnityPark developers,

A brand new uGameDB release is rolling out of the shop. Go to the download page at  http://muchdifferent.com/?page=game-download and get your copy while it's hot! Also, check out the release notes below.

uGameDB 1.2.0 Broccoli Pie (2012-08-03)

New features:

  • Replication parameters can now be used in all Get, Set and Remove requests to control how many data replicas are involved in each request. Get requests include an R value that indicates how many replicas must agree before returning. Set requests include W and Dw values that indicate how many replicas must be written to memory and disk respectively, before returning success. Remove requests include an Rw value that indicate how many replicas must be found and deleted before returning success. The total number of replicas for each database entry can be set through the N value of the SetBucketProp request.

  • MapReduce inputs have been expanded to include both a list of keys in one bucket, and a list of bucket/key-pairs. Using such explicit, finite list inputs is more efficient than the existing method to operate on all keys in a bucket, because they do not imply an internal GetKeys operation in Riak. Making a MapReduce on a list of keys in a bucket can be done through the Bucket.MapReduceOnKeyList() method, and if you want to use a list of bucket/key-pairs you can call Database.MapReduceOnBucketKeyList().

  • MapReduce phase functions can now be specified both as explicit JavaScript code and as an database address where the JavaScript code can be found. This can help lower the bandwidth used when sending MapReduce requests. The JavaScript code will be loaded from Riak internally. You can now also specify to use Erlang functions that have been previously loaded on all nodes as phase functions.

  • It is now possible to use Riak's functionality to generate keys for new entries. Use Bucket.SetGeneratedKey() to perform a Set request without a specified key. The generated key will be returned in the response.

  • You can now get and set bucket properties by using Bucket.GetBucketProp() and Bucket.SetBucketProp() respectively. This allows you to control the N-val (the number of replicas that Riak should keep of each entry in the bucket) and whether the bucket should allow siblings of entries to be created.

  • To handle write conflicts in the data (siblings) you can now use GetRequest.HasSiblings() and GetRequest.GetSiblings() to find out if there are persistent conflicts in your data. You can choose which value should be the unique and correct one, and make a new write to resolve the conflict. Note that siblings can show up even if the bucket has been set not to allow them, for example if the Riak nodes become unable to communicate.

Improvements:

  • Threading stability has been greatly improved, and a number of potential race conditions and deadlock situations have been solved.

  • The underlying request dispatch system has been greatly reworked. It is now much more straight-forward and has a lot fewer synchronization points.

  • Request timeouts should no longer risk leaving the request hanging around on the queue, and failed requests should no longer hang around to time out a bit later.

Changes:

  • The default timeout for requests has been increased to 30 seconds. The default timeouts for socket read/write operations have been increased to 5 seconds.

  • The Database.ResetGlobalState() debug method has been moved to Database.Debug.ResetGlobalState() to emphasize its intended use. The Database.Debug class also contains a SetSibling() method that can be used to artificially create siblings in your data, and to test conflict resolution in your uGameDB code.


Best wishes,

-- Staffan Einarsson
Engineering

Skype: staffan.einarsson
Phone: +46 70 426 07 46

Reply all
Reply to author
Forward
0 new messages