Skip to content
This repository was archived by the owner on Jul 11, 2021. It is now read-only.

Commit 68717da

Browse files
committed
refactor scopes for easy access to redis_context
1 parent 599992b commit 68717da

2 files changed

Lines changed: 22 additions & 29 deletions

File tree

sync_engine/src/lib.rs

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,10 @@ pub extern "C" fn ExecNow(
176176
key_type,
177177
)),
178178
Ok(dbkey) => {
179+
dbkey.loop_data.set_rc(Context::no_client());
179180
let (mut result, context) = {
180181
let db = dbkey.loop_data.get_db();
181-
let redis_context =
182-
dbkey.loop_data.set_rc(context);
183182
let result = do_execute(&db, args[2]);
184-
let context = redis_context.release();
185183
let t = std::time::Instant::now()
186184
+ std::time::Duration::from_secs(10);
187185
let result = match result {
@@ -242,11 +240,9 @@ pub extern "C" fn QueryNow(
242240
)),
243241
Ok(dbkey) => {
244242
let db = dbkey.loop_data.get_db();
243+
dbkey.loop_data.set_rc(Context::no_client());
245244
let (mut result, context) = {
246-
let redis_context =
247-
dbkey.loop_data.set_rc(context);
248245
let result = do_query(&db, args[2]);
249-
let context = redis_context.release();
250246
let t = std::time::Instant::now()
251247
+ std::time::Duration::from_secs(10);
252248
let result = match result {
@@ -303,11 +299,9 @@ pub extern "C" fn QueryNowInto(
303299
)),
304300
Ok(dbkey) => {
305301
let db = dbkey.loop_data.get_db();
302+
dbkey.loop_data.set_rc(Context::no_client());
306303
let (mut result, context) = {
307-
let redis_context =
308-
dbkey.loop_data.set_rc(context);
309304
let result = do_query(&db, args[3]);
310-
let context = redis_context.release();
311305
let return_method =
312306
ReturnMethod::Stream { name: args[1] };
313307
let t = std::time::Instant::now()
@@ -362,27 +356,30 @@ pub extern "C" fn ExecStatementNow(
362356
key_type,
363357
),
364358
Ok(dbkey) => {
365-
let (result, context) = {
366-
let redis_context =
367-
dbkey.loop_data.set_rc(context);
359+
let result = {
360+
// rc must be
361+
// 1. Define
362+
// 2. Dropped before we forget the db key
363+
let _rc = dbkey
364+
.loop_data
365+
.set_rc(Context::no_client());
368366
let result = dbkey
369367
.loop_data
370368
.get_replication_book()
371369
.exec_statement(
372370
argvector[2],
373371
&argvector[3..],
374372
);
375-
let context = redis_context.release();
376-
(result, context)
373+
match result {
374+
Ok(mut res) => {
375+
ReplicateVerbatim(&context);
376+
res.reply(&context)
377+
}
378+
Err(mut err) => err.reply(&context),
379+
}
377380
};
378381
mem::forget(dbkey);
379-
match result {
380-
Ok(mut res) => {
381-
ReplicateVerbatim(&context);
382-
res.reply(&context)
383-
}
384-
Err(mut err) => err.reply(&context),
385-
}
382+
result
386383
}
387384
}
388385
}
@@ -561,17 +558,15 @@ pub extern "C" fn QueryStatementNow(
561558
key_type,
562559
),
563560
Ok(dbkey) => {
561+
dbkey.loop_data.set_rc(Context::no_client());
564562
let (result, context) = {
565-
let redis_context =
566-
&dbkey.loop_data.set_rc(context);
567563
let result = dbkey
568564
.loop_data
569565
.get_replication_book()
570566
.query_statement(
571567
argvector[2],
572568
&argvector[3..],
573569
);
574-
let context = redis_context.release();
575570
(result, context)
576571
};
577572
mem::forget(dbkey);
@@ -618,14 +613,12 @@ pub extern "C" fn QueryStatementNowInto(
618613
key_type,
619614
)),
620615
Ok(dbkey) => {
616+
dbkey.loop_data.set_rc(Context::no_client());
621617
let (result, context) = {
622-
let redis_context =
623-
dbkey.loop_data.set_rc(context);
624618
let result = dbkey
625619
.loop_data
626620
.get_replication_book()
627621
.query_statement(args[3], &args[4..]);
628-
let context = redis_context.release();
629622
(result, context)
630623
};
631624
mem::forget(dbkey);

test/correctness/test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ def test_not_insert(self):
402402
result = self.exec_naked("REDISQL.QUERY", "B", "SELECT * FROM test ORDER BY a ASC")
403403
self.assertEquals(result, [[1, 'ciao'], [2, 'foo'], [100, 'baz']])
404404

405-
@unittest.skip("Testing without virtual tables")
405+
###@unittest.skip("Testing without virtual tables")
406406
class TestBruteHash(TestRediSQLWithExec):
407407
def testSimple(self):
408408
with DB(self, "B"):
@@ -509,7 +509,7 @@ def test_statement_after_rdb_load(self):
509509
self.assertTrue([4L, "cat:4", "4"] in result)
510510

511511

512-
@unittest.skip("Testing without virtual tables")
512+
###@unittest.skip("Testing without virtual tables")
513513
class TestBruteHashSyncronous(TestRediSQLWithExec):
514514
def testSimpleNow(self):
515515
with DB(self, "B"):

0 commit comments

Comments
 (0)