We're updating the issue view to help you get more done. 

Make tx timeout a parameter to Transaction.commit()

Description

Problem:
At present, RAMCloud has a fixed timeout value for transactions of about 50ms in PreparedOps.h:410. This value is not appropriate for very large transactions involving thousands of objects which take longer than 50ms to complete.

Proposed Solution:
Give application ability to set timeout setting on a per-transaction basis, for instance, as a parameter to commit(). When unspecified, a default is used (say 50ms). Application can then set higher timeout settings for large transactions (or set a tighter timeout to achieve greater performance for small transactions).

Additional (should be filed as separate JIRA issue?):
To help the application choose an appropriate timeout before calling commit(), the application would benefit greatly from being able to query the Transaction object for statistics such as the total number of objects in the cache, how many of those are cached writes, and the total size of the cached writes in bytes. Otherwise the application must interpose on every Transaction.read and Transaction.write call to gather these statistics itself, which is inconvenient and also adds another layer on top of transactions, adding latency.

Environment

None

Status

Assignee

Collin Lee

Reporter

Jonathan Ellithorpe

Labels

None

Priority

Medium