[ https://issues.apache.org/jira/browse/TEPHRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16149671#comment-16149671 ]
ASF GitHub Bot commented on TEPHRA-241: --------------------------------------- Github user anew commented on a diff in the pull request: https://github.com/apache/incubator-tephra/pull/48#discussion_r136458250 --- Diff: tephra-core/src/main/java/org/apache/tephra/distributed/thrift/TTransactionServer.java --- @@ -68,6 +68,8 @@ public TBoolean canCommitTx(TTransaction tx, Set<ByteBuffer> changes) throws TTransactionNotInProgressException, org.apache.thrift.TException; + public TBoolean canCommitOrThrow(TTransaction tx, Set<ByteBuffer> changes) throws TTransactionNotInProgressException, TGenericException, org.apache.thrift.TException; --- End diff -- please do not review this file, it is generated by Thrift. Only need to review transaction.thrift > Introduce a way to limit the size of a transaction > -------------------------------------------------- > > Key: TEPHRA-241 > URL: https://issues.apache.org/jira/browse/TEPHRA-241 > Project: Tephra > Issue Type: Improvement > Components: api, manager > Affects Versions: 0.12.0-incubating > Reporter: Andreas Neumann > Assignee: Andreas Neumann > Fix For: 0.13.0-incubating > > > When clients perform a huge number of writes in a short transaction, that can > result in huge change sets. For example, if a client performs 10M writes and > sends that change set over, that can easily be 1GB large. The transaction > manager will keep this in memory. It will also write this as an edit to the > transaction log. > Assume it runs out of memory because the change set is too large. It crashes > and when it restarts, it will replay the log, load that huge change set > again, and crash again. > To prevent this kind of systemic failure, and to encourage developers to use > long transactions when performing many writes, we can introduce two new > properties in the configuration: > - change set warn threshold: if a change set exceeds this size, a warning is > logged. > - change set reject threshold: if a change set exceeds this size, it is > rejected (canCommit will throw an exception) and that will fail the > transaction. > Both thresholds should be Long.MAX_VALUE by default, to preserve existing > behavior after upgrade. -- This message was sent by Atlassian JIRA (v6.4.14#64029)