]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Test the case where a db connection blocks for a while and then successfully obtains...
authordan <Dan Kennedy>
Mon, 9 Dec 2024 17:30:20 +0000 (17:30 +0000)
committerdan <Dan Kennedy>
Mon, 9 Dec 2024 17:30:20 +0000 (17:30 +0000)
FossilOrigin-Name: 9cbc97ff8411a672b572000e4509ac02b3d29911be5ce1bcf334ed8e2a91db77

manifest
manifest.uuid
test/walsetlk.test

index 76c631decd38b07109fcfc8d7f359058f2629062..4d1256ddc4f88fa212f46b46209911a5f13d0b7d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Enhance\stests\sto\sensure\sthat\sblocking\slocks,\sand\snot\scalls\sto\sxSleep(),\sare\sbeing\sused\sby\sSQLITE_ENABLE_SETLK_TIMEOUT\sbuilds\swhen\sthey\sshould\sbe.
-D 2024-12-09T16:01:28.611
+C Test\sthe\scase\swhere\sa\sdb\sconnection\sblocks\sfor\sa\swhile\sand\sthen\ssuccessfully\sobtains\sthe\slock.
+D 2024-12-09T17:30:20.069
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -2021,7 +2021,7 @@ F test/walro.test cb438d05ba0d191f10b688e39c4f0cd5b71569a1d1f4440e5bdf3c6880e08c
 F test/walro2.test 33955a6fd874dd9724005e17f77fef89d334b3171454a1256fe4941a96766cdc
 F test/walrofault.test c70cb6e308c443867701856cce92ad8288cd99488fa52afab77cca6cfd51af68
 F test/walseh1.test bae700eb99519b6d5cd3f893c04759accc5a59c391d4189fe4dd6995a533442b
-F test/walsetlk.test 18dcf274891bd93916ca4ba831078f89ef99388c6fdd495745443ed2c1b2f382
+F test/walsetlk.test 910a8ef8cc500b0be5cf818e2fff7a4505186d33bf08147dc23e38f78d0b2016
 F test/walshared.test 42e3808582504878af237ea02c42ca793e8a0efaa19df7df26ac573370dbc7a3
 F test/walslow.test 0c51843836c9dcf40a5ac05aa781bfb977b396ee2c872d92bd48b79d5dd9aa23
 F test/walthread.test 14b20fcfa6ae152f5d8e12f5dc8a8a724b7ef189f5d8ef1e2ceab79f2af51747
@@ -2202,8 +2202,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 70b0cfb0493e3fe56645648b462cb035d0d791f95b2913b7622f08c1090338c0
-R 9de6f4b05e49f722496a553eef28dd0a
+P c892242bb642f7a6a961e310ed8b4f1e140f8ee32c00f50021c6011c6e7e1476
+R c5bbc43d548daaa55d847d34080f9ae5
 U dan
-Z b306d8cfc696ddcddaf2101fbec84ebb
+Z 080db00c6e437599cb3a53612222f7cd
 # Remove this line to create a well-formed Fossil manifest.
index 84434c2dcfcf96db924c32f4c48649ed3d874030..364baa9b7a723a0c5d319d4635d1490c08f8c1ae 100644 (file)
@@ -1 +1 @@
-c892242bb642f7a6a961e310ed8b4f1e140f8ee32c00f50021c6011c6e7e1476
+9cbc97ff8411a672b572000e4509ac02b3d29911be5ce1bcf334ed8e2a91db77
index 23fcac59d27eb2d821a9caaf6eef8584faf331cd..1f1c0b7c3207e4364bccc7b71f7502d002740348 100644 (file)
@@ -219,8 +219,20 @@ do_multiclient_test tn {
 
 #-------------------------------------------------------------------------
 reset_db
-sqlite3 db2 test.db
+
+testvfs tvfs -fullshm 1
+tvfs script xSleep_callback
+tvfs filter xSleep
+
+set ::sleep_count 0
+proc xSleep_callback {xSleep nMs} {
+  after [expr $nMs / 1000]
+  incr ::sleep_count
+}
+
+sqlite3 db2 test.db -vfs tvfs
 db2 timeout 1000
+
 do_execsql_test 3.0 {
   PRAGMA journal_mode = wal;
   CREATE TABLE x1(x, y);
@@ -232,4 +244,45 @@ do_test 3.1 {
   list [catch { db2 eval {BEGIN EXCLUSIVE} } msg] $msg
 } {1 {database is locked}}
 
+do_execsql_test 3.2 {
+  COMMIT;
+}
+
+testfixture_nb done {
+  sqlite3 db test.db
+  db eval {
+    BEGIN EXCLUSIVE;
+     INSERT INTO x1 VALUES(3, 4);
+  }
+  after 2000
+  db eval {
+    COMMIT
+  }
+}
+
+after 500
+db2 timeout 5000
+do_test 3.3 {
+  set t [lindex [time { db2 eval { BEGIN EXCLUSIVE } }] 0]
+  expr ($t>1000000)
+} {1}
+
+set bExpect 0
+if {$::sqlite_options(setlk_timeout)==1} {
+  set bExpect 1
+}
+do_test 3.4 {
+  expr {$::sleep_count > 0}
+} $bExpect
+
+do_execsql_test -db db2 3.5 {
+  INSERT INTO x1 VALUES(5, 6);
+  COMMIT;
+  SELECT * FROM x1;
+} {1 2 3 4 5 6}
+
+db2 close
+tvfs delete
+
 finish_test
+