Skip to content

Commit 725777d

Browse files
authored
Merge pull request #765 from mronstro/24.10-main
RONDB-956: Aborted earlier to avoid risking leaving m_queuedDatabaseP…
2 parents 6885d7c + 6eb78dd commit 725777d

File tree

6 files changed

+241
-36
lines changed

6 files changed

+241
-36
lines changed

MYSQL_VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
MYSQL_VERSION_MAJOR=24
22
MYSQL_VERSION_MINOR=10
3-
MYSQL_VERSION_PATCH=12
3+
MYSQL_VERSION_PATCH=13
44
MYSQL_VERSION_EXTRA=
55
MYSQL_VERSION_MATURITY="LTS"

mysql-test/suite/ndb_quota/ndb_quota_commands.result

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ InMemorySize = 2 MByte
1313
DiskSpaceSize = 0 GByte
1414
RatePerSec = 500
1515
MaxTransactionSize = 4
16-
MaxParallelTransactions = 4
16+
MaxParallelTransactions = 3
1717
MaxParallelComplexQueries = 0
1818
Database Quotas for test2
1919
databaseId = 14
@@ -50,7 +50,7 @@ Database Quotas for test
5050
DiskSpaceSize = 0 GByte
5151
RatePerSec = 500
5252
MaxTransactionSize = 4
53-
MaxParallelTransactions = 4
53+
MaxParallelTransactions = 3
5454
MaxParallelComplexQueries = 0
5555

5656
Database Quotas for test2
@@ -76,7 +76,7 @@ DATABASE QUOTA GET command failed: Error:
7676
DATABASE QUOTA GET command failed: Error:
7777
* 703: Error
7878
* Get database quotas failed with error
79-
DROP TABLE IF EXISTS t1;
79+
DROP TABLE IF EXISTS t1, t2;
8080
CREATE TABLE t1 (
8181
pk1 INT NOT NULL PRIMARY KEY,
8282
b1 CHAR(255),
@@ -108,9 +108,10 @@ b26 CHAR(255) NULL,
108108
b27 CHAR(255) NULL,
109109
b28 VARCHAR(20000) NULL
110110
) engine ndb character set latin1;
111-
CREATE TABLE t2 (a int not null primary key) engine ndb;
112-
INSERT INTO t2 VALUES (1),(2),(3),(4),(5);
111+
CREATE TABLE t2 (a int not null primary key, b int) engine ndb;
112+
INSERT INTO t2 VALUES (1,0),(2,0),(3,0),(4,0),(5,0);
113113
ERROR HY000: Got temporary error 247 'Too many operations in a transaction in database' from NDBCLUSTER
114+
INSERT INTO t2 VALUES (1,0),(2,0),(3,0);
114115
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (0, '0', '0', '0', '0',REPEAT('a', 19000)),(30,'30', '0', '0', '0',REPEAT('a', 19000));
115116
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (1, '0', '0', '0', '0',REPEAT('a', 19000)),(31,'30', '0', '0', '0',REPEAT('a', 19000));
116117
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (2, '0', '0', '0', '0',REPEAT('a', 19000)),(32,'30', '0', '0', '0',REPEAT('a', 19000));
@@ -177,7 +178,7 @@ DROP TABLE t2;
177178
Database Quota Backup command completed
178179
DATABASE QUOTA DROP successfully executed
179180
DATABASE QUOTA DROP successfully executed
180-
Execute DATABASE QUOTA SET test --in-memory-size = 2 --on-disk-size = 0 --rate-per-sec = 500 --max-transaction-size = 4 --max-parallel-transactions = 4 --max-parallel-complex-queries = 0
181+
Execute DATABASE QUOTA SET test --in-memory-size = 2 --on-disk-size = 0 --rate-per-sec = 5 --max-transaction-size = 100 --max-parallel-transactions = 10 --max-parallel-complex-queries = 0
181182
DATABASE QUOTA SET successfully executed
182183
DATABASE QUOTA SET command succeeded for RESTORE
183184
Execute DATABASE QUOTA SET test2 --in-memory-size = 11 --on-disk-size = 0 --rate-per-sec = 1500 --max-transaction-size = 0 --max-parallel-transactions = 0 --max-parallel-complex-queries = 0

mysql-test/suite/ndb_quota/ndb_quota_commands.test

Lines changed: 115 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
--source include/have_ndb.inc
2-
--exec $NDB_MGM -e "DATABASE QUOTA SET test --rate-per-sec = 500 --in-memory-size=2 --max-transaction-size=4 --max-parallel-transactions=4"
2+
--exec $NDB_MGM -e "DATABASE QUOTA SET test --rate-per-sec = 500 --in-memory-size=2 --max-transaction-size=4 --max-parallel-transactions=3"
33
--error 255,65280
44
--exec $NDB_MGM -e "DATABASE QUOTA SET test2 --rate-per-sec = 50000000 --in-memory-size=100 --on-disk-size=0"
55
--exec $NDB_MGM -e "DATABASE QUOTA SET test2 --rate-per-sec = 500 --in-memory-size=10 --on-disk-size=0"
@@ -25,7 +25,7 @@
2525
--error 255,65280
2626
--exec $NDB_MGM -e "DATABASE QUOTA GET test_1234567890_1234567890_1234567890_1234567890_1234567890_1234567890_1234567890_1234567890_1234567890_1234567890_1234567890_100"
2727
--disable_warnings
28-
DROP TABLE IF EXISTS t1;
28+
DROP TABLE IF EXISTS t1, t2;
2929
--enable_warnings
3030

3131
CREATE TABLE t1 (
@@ -60,9 +60,10 @@ CREATE TABLE t1 (
6060
b28 VARCHAR(20000) NULL
6161
) engine ndb character set latin1;
6262

63-
CREATE TABLE t2 (a int not null primary key) engine ndb;
63+
CREATE TABLE t2 (a int not null primary key, b int) engine ndb;
6464
--error 1297
65-
INSERT INTO t2 VALUES (1),(2),(3),(4),(5);
65+
INSERT INTO t2 VALUES (1,0),(2,0),(3,0),(4,0),(5,0);
66+
INSERT INTO t2 VALUES (1,0),(2,0),(3,0);
6667

6768
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (0, '0', '0', '0', '0',REPEAT('a', 19000)),(30,'30', '0', '0', '0',REPEAT('a', 19000));
6869
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (1, '0', '0', '0', '0',REPEAT('a', 19000)),(31,'30', '0', '0', '0',REPEAT('a', 19000));
@@ -84,11 +85,17 @@ INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (16, '0', '0', '0', '0',REPEAT('a',
8485
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (17, '0', '0', '0', '0',REPEAT('a', 19000)),(47,'30', '0', '0', '0',REPEAT('a', 19000));
8586
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (18, '0', '0', '0', '0',REPEAT('a', 19000)),(48,'30', '0', '0', '0', '0');
8687
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (19, '0', '0', '0', '0',REPEAT('a', 19000)),(49,'30', '0', '0', '0', '0');
88+
--error 0, 1297
8789
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (20, '0', '0', '0', '0',REPEAT('a', 19000)),(50,'30', '0', '0', '0', '0');
90+
--error 0, 1297
8891
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (21, '0', '0', '0', '0',REPEAT('a', 19000)),(51,'30', '0', '0', '0', '0');
92+
--error 0, 1297
8993
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (22, '0', '0', '0', '0',REPEAT('a', 19000)),(52,'30', '0', '0', '0', '0');
94+
--error 0, 1297
9095
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (23, '0', '0', '0', '0',REPEAT('a', 19000)),(53,'30', '0', '0', '0', '0');
96+
--error 0, 1297
9197
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (24, '0', '0', '0', '0',REPEAT('a', 19000)),(54,'30', '0', '0', '0', '0');
98+
--error 0, 1297
9299
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (25, '0', '0', '0', '0',REPEAT('a', 19000)),(55,'30', '0', '0', '0', '0');
93100
--error 0, 1297
94101
INSERT INTO t1 (pk1,b1,b2,b3,b4,b28) VALUES (26, '0', '0', '0', '0',REPEAT('a', 19000)),(56,'30', '0', '0', '0', '0');
@@ -140,16 +147,118 @@ UPDATE t1 SET b28 = REPEAT('b', 19000) WHERE pk1 = 48;
140147
DELETE from t1 WHERE pk1 = 30;
141148
UPDATE t1 SET b28 = REPEAT('b', 19000) WHERE pk1 = 48;
142149

150+
--disable_query_log
151+
--disable_result_log
152+
let $c = 100;
153+
while ($c)
154+
{
155+
SELECT * from t2;
156+
dec $c;
157+
}
158+
159+
connect(mysqld2,127.0.0.1,root,,test,$MASTER_MYPORT1);
160+
connect(mysqld3,127.0.0.1,root,,test,$MASTER_MYPORT1);
161+
connect(mysqld4,127.0.0.1,root,,test,$MASTER_MYPORT1);
162+
connect(mysqld5,127.0.0.1,root,,test,$MASTER_MYPORT1);
163+
connect(mysqld6,127.0.0.1,root,,test,$MASTER_MYPORT1);
164+
165+
connection default;
166+
BEGIN;
167+
INSERT INTO t2 VALUES (4,0);
168+
169+
connection mysqld2;
170+
BEGIN;
171+
INSERT INTO t2 VALUES (5,0);
172+
173+
connection mysqld3;
174+
BEGIN;
175+
INSERT INTO t2 VALUES (6,0);
176+
177+
connection mysqld4;
178+
BEGIN;
179+
--error 1297
180+
INSERT INTO t2 VALUES (7,0);
181+
182+
connection mysqld5;
183+
BEGIN;
184+
--error 1297
185+
INSERT INTO t2 VALUES (8,0);
186+
187+
connection mysqld6;
188+
BEGIN;
189+
--error 1297
190+
INSERT INTO t2 VALUES (9,0);
191+
192+
connection default;
193+
COMMIT;
194+
195+
connection mysqld2;
196+
COMMIT;
197+
198+
connection mysqld3;
199+
COMMIT;
200+
201+
connection default;
202+
SELECT * FROM t2;
203+
204+
--exec $NDB_MGM -e "DATABASE QUOTA ALTER test --rate-per-sec = 5 --in-memory-size=2 --max-transaction-size=100 --max-parallel-transactions=10"
205+
206+
--error 0,1297
207+
SELECT * from t2;
208+
--error 0,1297
209+
SELECT * from t2;
210+
--error 0,1297
211+
UPDATE t2 SET b = 0 where a = 4;
212+
COMMIT;
213+
214+
connection mysqld2;
215+
--error 0,1297
216+
SELECT * from t2;
217+
--error 0,1297
218+
UPDATE t2 SET b = 0 where a = 5;
219+
COMMIT;
220+
221+
connection mysqld3;
222+
--error 0,1297
223+
SELECT * from t2;
224+
--error 0,1297
225+
UPDATE t2 SET b = 0 where a = 6;
226+
COMMIT;
227+
228+
connection mysqld4;
229+
--error 0,1297
230+
SELECT * from t2;
231+
--error 0,1297
232+
UPDATE t2 SET b = 0 where a = 0;
233+
COMMIT;
234+
235+
connection mysqld5;
236+
--error 0,1297
237+
SELECT * from t2;
238+
--error 0,1297
239+
UPDATE t2 SET b = 0 where a = 1;
240+
COMMIT;
241+
242+
connection mysqld6;
243+
--error 0,1297
244+
SELECT * from t2;
245+
--error 0,1297
246+
UPDATE t2 SET b = 0 where a = 2;
247+
COMMIT;
248+
249+
--enable_result_log
250+
--enable_query_log
251+
252+
connection default;
253+
143254
DROP TABLE t1;
144255
DROP TABLE t2;
145256

146-
--disable_query_log
147257
if (!$NDB_BACKUP_DIR)
148258
{
149259
--die Need NDB_BACKUP_DIR variable
150260
}
151261
--let BACKUP_FILE=$NDB_BACKUP_DIR/backup.txt
152-
--disable_query_log
153262
--exec $NDB_MGM -e "DATABASE QUOTA BACKUP $BACKUP_FILE"
154263
--exec $NDB_MGM -e "DATABASE QUOTA DROP test"
155264
--exec $NDB_MGM -e "DATABASE QUOTA DROP test2"

storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3795,7 +3795,7 @@ void Dblqh::execTAB_COMMITREQ(Signal *signal) {
37953795
NdbMutex_Unlock(&tabptr.p->m_usage_count);
37963796
#endif
37973797
tabptr.p->usageCountR = 0;
3798-
D(tabptr.i << "Init2 usageCountR = 0");
3798+
D(tabptr.i << "Init2 usageCountR and W = 0");
37993799
tabptr.p->usageCountW = 0;
38003800
tabptr.p->tableStatus = Tablerec::TABLE_DEFINED;
38013801
DEB_SCHEMA_VERSION(
@@ -4118,7 +4118,8 @@ void Dblqh::dropTab_wait_usage(Signal *signal) {
41184118

41194119
if (tabPtr.p->usageCountR > 0 || tabPtr.p->usageCountW > 0) {
41204120
jam();
4121-
D(tabPtr.i << "usageCountR = " << tabPtr.p->usageCountR);
4121+
D(tabPtr.i << "usageCountR = " << tabPtr.p->usageCountR
4122+
<< "usageCountW = " << tabPtr.p->usageCountW);
41224123
#ifdef DEBUG_USAGE_COUNT
41234124
NdbMutex_Lock(&tabPtr.p->m_usage_count);
41244125
TcConnectionrecPtr tcPtr;
@@ -9384,6 +9385,9 @@ void Dblqh::execLQHKEYREQ(Signal *signal) {
93849385
else
93859386
{
93869387
tabptr.p->usageCountW++;
9388+
D("++usageCountW[" << tabptr.i << "] = " << tabptr.p->usageCountW
9389+
<< " transid[0x" << hex << tcConnectptr.p->transid[0]
9390+
<< ",0x" << hex << tcConnectptr.p->transid[1] << "]");
93879391
}
93889392

93899393
if (LqhKeyReq::getNrCopyFlag(Treqinfo) &&
@@ -14099,6 +14103,9 @@ void Dblqh::releaseTcrec(Signal *signal, TcConnectionrecPtr locTcConnectptr) {
1409914103
{
1410014104
Uint32 pre_usageCountW = tabPtr.p->usageCountW--;
1410114105
ndbrequire(pre_usageCountW > 0);
14106+
D("--usageCountW[" << tabPtr.i << "] = " << tabPtr.p->usageCountW
14107+
<< " transid: 0x" << hex << locTcConnectptr.p->transid[0]
14108+
<< ", 0x" << hex << locTcConnectptr.p->transid[1]);
1410214109
}
1410314110
}
1410414111
locTcConnectptr.p->original_operation = 0xFF;
@@ -33049,7 +33056,7 @@ Dblqh::initTable(Tablerec *tabPtrP)
3304933056
tabPtrP->tableStatus = Tablerec::NOT_DEFINED;
3305033057
tabPtrP->usageCountR = 0;
3305133058
tabPtrP->usageCountW = 0;
33052-
D(tabptr.i << "Init usageCountR = 0");
33059+
D(tabptr.i << "Init usageCountR and W = 0");
3305333060
tabPtrP->m_addfragptr_i = RNIL;
3305433061
tabPtrP->num_fragments_in_array = 0;
3305533062
tabPtrP->num_fragments = 0;

0 commit comments

Comments
 (0)