Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2083132

Browse files
committed
fixes for major mode
1 parentc787f39 commit2083132

File tree

4 files changed

+108
-41
lines changed

4 files changed

+108
-41
lines changed

‎state.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -394,14 +394,14 @@ MtmRefreshClusterStatus()
394394
* Check for referee decision when only half of nodes are visible.
395395
*/
396396
if (MtmRefereeConnStr&&*MtmRefereeConnStr&& !Mtm->refereeWinnerId&&
397-
countZeroBits(EFFECTIVE_CONNECTIVITY_MASK,Mtm->nAllNodes)==Mtm->nAllNodes/2)
397+
countZeroBits(SELF_CONNECTIVITY_MASK,Mtm->nAllNodes)==Mtm->nAllNodes/2)
398398
{
399399
intwinner_node_id=MtmRefereeGetWinner();
400400

401401
if (winner_node_id>0)
402402
{
403403
Mtm->refereeWinnerId=winner_node_id;
404-
if (!BIT_CHECK(EFFECTIVE_CONNECTIVITY_MASK,winner_node_id-1))
404+
if (!BIT_CHECK(SELF_CONNECTIVITY_MASK,winner_node_id-1))
405405
{
406406
MTM_LOG1("[STATE] Referee allowed to proceed with half of the nodes (winner_id = %d)",
407407
winner_node_id);
@@ -418,7 +418,7 @@ MtmRefreshClusterStatus()
418418
* Clear winner if we again have all nodes are online.
419419
*/
420420
if (MtmRefereeConnStr&&*MtmRefereeConnStr&&Mtm->refereeWinnerId&&
421-
countZeroBits(EFFECTIVE_CONNECTIVITY_MASK,Mtm->nAllNodes)==Mtm->nAllNodes)
421+
countZeroBits(SELF_CONNECTIVITY_MASK,Mtm->nAllNodes)==Mtm->nAllNodes)
422422
{
423423
if (MtmRefereeClearWinner())
424424
{
@@ -429,7 +429,7 @@ MtmRefreshClusterStatus()
429429
}
430430

431431
/* Do not check clique with referee grant */
432-
if (Mtm->refereeGrant)
432+
if (Mtm->refereeWinnerId)
433433
return;
434434

435435
/*
@@ -570,16 +570,16 @@ MtmRefereeClearWinner(void)
570570

571571
response=PQgetvalue(res,0,0);
572572

573-
if (false)
573+
if (strncmp(response,"t",1)!=0)
574574
{
575-
MTM_ELOG(WARNING,"Wrong response from referee");
575+
MTM_ELOG(WARNING,"Wrong response from referee: '%s'",response);
576576
PQclear(res);
577577
PQfinish(conn);
578578
return false;
579579
}
580580

581581
/* Ok, we finally got it! */
582-
MTM_LOG1("Got referee clear response%s",response);
582+
MTM_LOG1("Got referee clear response'%s'",response);
583583
PQclear(res);
584584
PQfinish(conn);
585585
return true;

‎tests2/docker-entrypoint.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ if [ "$1" = 'postgres' ]; then
6969
multimaster.ignore_tables_without_pk = 1
7070
multimaster.heartbeat_recv_timeout = 1100
7171
multimaster.heartbeat_send_timeout = 250
72+
multimaster.max_recovery_lag = 1000000000
7273
EOF
7374

7475
if [-n"$NODE_ID" ];then

‎tests2/test_major.py

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -83,40 +83,6 @@ def test_partition_major(self):
8383
'select pg_reload_conf()'
8484
])
8585

86-
deftest_partition_referee(self):
87-
print('### test_partition_referee ###')
88-
89-
aggs_failure,aggs=self.performFailure(SingleNodePartition('node2'))
90-
91-
self.assertCommits(aggs_failure[:1])
92-
self.assertNoCommits(aggs_failure[1:])
93-
self.assertIsolation(aggs_failure)
94-
95-
self.assertCommits(aggs)
96-
self.assertIsolation(aggs)
97-
98-
deftest_double_failure_referee(self):
99-
print('### test_double_failure_referee ###')
100-
101-
aggs_failure,aggs=self.performFailure(SingleNodePartition('node2'))
102-
103-
self.assertCommits(aggs_failure[:1])
104-
self.assertNoCommits(aggs_failure[1:])
105-
self.assertIsolation(aggs_failure)
106-
107-
self.assertCommits(aggs)
108-
self.assertIsolation(aggs)
109-
110-
aggs_failure,aggs=self.performFailure(SingleNodePartition('node1'))
111-
112-
self.assertNoCommits(aggs_failure[:1])
113-
self.assertCommits(aggs_failure[1:])
114-
self.assertIsolation(aggs_failure)
115-
116-
self.assertCommits(aggs)
117-
self.assertIsolation(aggs)
118-
119-
12086
if__name__=='__main__':
12187
unittest.main()
12288

‎tests2/test_referee.py

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
#
2+
# Based on Aphyr's test for CockroachDB.
3+
#
4+
5+
importunittest
6+
importtime
7+
importsubprocess
8+
importdatetime
9+
importdocker
10+
importwarnings
11+
12+
fromlib.bank_clientimportMtmClient
13+
fromlib.failure_injectorimport*
14+
fromlib.test_helperimport*
15+
16+
17+
classMajorTest(unittest.TestCase,TestHelper):
18+
19+
@classmethod
20+
defsetUpClass(cls):
21+
subprocess.check_call(['docker-compose',
22+
'-f','support/two_nodes.yml',
23+
'up',
24+
'--force-recreate',
25+
'--build',
26+
'-d'])
27+
28+
# XXX: add normal wait here
29+
time.sleep(TEST_SETUP_TIME)
30+
31+
cls.client=MtmClient([
32+
"dbname=regression user=postgres host=127.0.0.1 port=15432",
33+
"dbname=regression user=postgres host=127.0.0.1 port=15433"
34+
],n_accounts=1000)
35+
cls.client.bgrun()
36+
37+
# create extension on referee
38+
cls.nodeExecute("dbname=regression user=postgres host=127.0.0.1 port=15435", ['create extension multimaster'])
39+
40+
@classmethod
41+
deftearDownClass(cls):
42+
print('tearDown')
43+
cls.client.stop()
44+
45+
time.sleep(TEST_STOP_DELAY)
46+
47+
ifnotcls.client.is_data_identic():
48+
raiseAssertionError('Different data on nodes')
49+
50+
ifcls.client.no_prepared_tx()!=0:
51+
raiseAssertionError('There are some uncommitted tx')
52+
53+
# XXX: check nodes data identity here
54+
# subprocess.check_call(['docker-compose','down'])
55+
56+
defsetUp(self):
57+
warnings.simplefilter("ignore",ResourceWarning)
58+
time.sleep(20)
59+
print('Start new test at ',datetime.datetime.utcnow())
60+
61+
deftearDown(self):
62+
print('Finish test at ',datetime.datetime.utcnow())
63+
64+
deftest_partition_referee(self):
65+
print('### test_partition_referee ###')
66+
67+
aggs_failure,aggs=self.performFailure(SingleNodePartition('node2'))
68+
69+
self.assertCommits(aggs_failure[:1])
70+
self.assertNoCommits(aggs_failure[1:])
71+
self.assertIsolation(aggs_failure)
72+
73+
self.assertCommits(aggs)
74+
self.assertIsolation(aggs)
75+
76+
deftest_double_failure_referee(self):
77+
print('### test_double_failure_referee ###')
78+
79+
aggs_failure,aggs=self.performFailure(SingleNodePartition('node2'))
80+
81+
self.assertCommits(aggs_failure[:1])
82+
self.assertNoCommits(aggs_failure[1:])
83+
self.assertIsolation(aggs_failure)
84+
85+
self.assertCommits(aggs)
86+
self.assertIsolation(aggs)
87+
88+
aggs_failure,aggs=self.performFailure(SingleNodePartition('node1'))
89+
90+
self.assertNoCommits(aggs_failure[:1])
91+
self.assertCommits(aggs_failure[1:])
92+
self.assertIsolation(aggs_failure)
93+
94+
self.assertCommits(aggs)
95+
self.assertIsolation(aggs)
96+
97+
98+
if__name__=='__main__':
99+
unittest.main()
100+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp