Skip to content

Commit 9669631

Browse files
tveldhuimdashtirobbearcomnik
authored
Nonblocking commits (#3340)
* Debug tracing for nonblocking commit * Disable logging messages- looking for an assertion failure about committing a non-temporary page * debug logging * Check for issue with Arroyo state collapsing * more debugging * more debug * Coordination bt gc & commit tasks * disable nonblocking commits * Coordination between page garbage collection and commits * Stricter criterion for when pages can be garbage collected * Use unique db names for testing * typo * Kludge for issue with accessing temporary pages after transaction released, when reporting AbortException * comment * Fix for AbortException issue * oops * debugging for no_self_edges failures * IFL heisenbugs * Use unique db names for RAIVM benchmarks * gen_safe_dbname typo * gen_safe_dbname() fix * comment * debugging * PR feedback * handling of CREATE_OVERWRITE * .. * mutex to ensure CommitManager.prev_tip_pageid and KV store are updated together * [ClientSDKs] Generated SDK changes for `wait_durable` * Do not use objectid to detect objects we have encountered before, because objectids are not unique for immutable objects. * Fix connection versioning test failures * Fix failing unit test error_handling * tweak * run_actions() use wait_durable=true * generate-client-sdks.sh * whups * fix * Disable DevilSpawn.jl * disable assert * cleanup * cleanup * Commit generated change to incubator/ClientSDKs/javascript-client-sdk/client/test/Transaction.spec.js * Temporarily disable blocking commits to see effect on benchmarks * whups * Consistently use default of wait_durable=true * Use IdDict{Any,Nothing} rather than Set{Any}, to avoid issue with Vector(undef,N) * Reduce allocations in collect_relations() * tweaks * mmmhmm * Change wait_durable to nowait_durable, because protocol boolean flags must have default false * tweak * remove testing code * . * Update src/API/Server/Server.jl Co-authored-by: Nikolas Göbel <nikolas.goebel@relational.ai> * PR feedback * fix wrong default Co-authored-by: Todd Veldhuizen <> Co-authored-by: Mohammad Dashti <mdashti@gmail.com> Co-authored-by: Rob Bearman <robbear@hyperfine.com> Co-authored-by: Nikolas Göbel <nikolas.goebel@relational.ai>
1 parent ff744c8 commit 9669631

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

client/docs/Transaction.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Name | Type | Description | Notes
99
**dbname** | **String** | | [default to &#39;&#39;]
1010
**debugLevel** | **Number** | | [optional]
1111
**mode** | **String** | | [default to &#39;OPEN&#39;]
12+
**nowaitDurable** | **Boolean** | | [default to false]
1213
**readonly** | **Boolean** | | [default to false]
1314
**sourceDbname** | **String** | | [optional]
1415
**version** | **Number** | | [optional]

client/src/model/Transaction.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,25 @@ class Transaction {
2626
* @param abort {Boolean}
2727
* @param dbname {String}
2828
* @param mode {module:model/Transaction.ModeEnum}
29+
* @param nowaitDurable {Boolean}
2930
* @param readonly {Boolean}
3031
* @param type {module:model/Transaction.TypeEnum}
3132
*/
32-
constructor(abort, dbname, mode, readonly, type) {
33+
constructor(abort, dbname, mode, nowaitDurable, readonly, type) {
3334

34-
Transaction.initialize(this, abort, dbname, mode, readonly, type);
35+
Transaction.initialize(this, abort, dbname, mode, nowaitDurable, readonly, type);
3536
}
3637

3738
/**
3839
* Initializes the fields of this object.
3940
* This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
4041
* Only for internal use.
4142
*/
42-
static initialize(obj, abort, dbname, mode, readonly, type) {
43+
static initialize(obj, abort, dbname, mode, nowaitDurable, readonly, type) {
4344
obj['abort'] = abort || false;
4445
obj['dbname'] = dbname || '';
4546
obj['mode'] = mode || 'OPEN';
47+
obj['nowait_durable'] = nowaitDurable || false;
4648
obj['readonly'] = readonly || false;
4749
obj['type'] = type || 'Transaction';
4850
}
@@ -73,6 +75,9 @@ class Transaction {
7375
if (data.hasOwnProperty('mode')) {
7476
obj['mode'] = ApiClient.convertToType(data['mode'], 'String');
7577
}
78+
if (data.hasOwnProperty('nowait_durable')) {
79+
obj['nowait_durable'] = ApiClient.convertToType(data['nowait_durable'], 'Boolean');
80+
}
7681
if (data.hasOwnProperty('readonly')) {
7782
obj['readonly'] = ApiClient.convertToType(data['readonly'], 'Boolean');
7883
}
@@ -120,6 +125,12 @@ Transaction.prototype['debug_level'] = undefined;
120125
*/
121126
Transaction.prototype['mode'] = 'OPEN';
122127

128+
/**
129+
* @member {Boolean} nowait_durable
130+
* @default false
131+
*/
132+
Transaction.prototype['nowait_durable'] = false;
133+
123134
/**
124135
* @member {Boolean} readonly
125136
* @default false

client/test/model/Transaction.spec.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@
8484
//expect(instance).to.be();
8585
});
8686

87+
it('should have the property nowaitDurable (base name: "nowait_durable")', function() {
88+
// uncomment below and update the code to test the property nowaitDurable
89+
//var instane = new RaiDbSdk.Transaction();
90+
//expect(instance).to.be();
91+
});
92+
8793
it('should have the property readonly (base name: "readonly")', function() {
8894
// uncomment below and update the code to test the property readonly
8995
//var instane = new RaiDbSdk.Transaction();

0 commit comments

Comments
 (0)