Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add the lock-timeout setting. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
6d3daf74e385072cdf1dcf748e709fae |
User & Date: | drh 2019-09-12 07:31:58.092 |
Context
2019-09-12
| ||
16:31 | Performance optimization in the control artifact parser. ... (check-in: 3d802ec514 user: drh tags: trunk) | |
07:31 | Add the lock-timeout setting. ... (check-in: 6d3daf74e3 user: drh tags: trunk) | |
2019-09-10
| ||
11:30 | Performance optimization in fossil_strcmp(). ... (check-in: 72a4b61347 user: drh tags: trunk) | |
Changes
Changes to src/db.c.
︙ | ︙ | |||
3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 | ** For maximum security, set "localauth" to 1. However, because ** of the other restrictions (2) through (4), it should be safe ** to leave "localauth" set to 0 in most installations, and ** especially on cloned repositories on workstations. Leaving ** "localauth" at 0 makes the "fossil ui" command more convenient ** to use. */ /* ** SETTING: main-branch width=40 default=trunk ** The value is the primary branch for the project. */ /* ** SETTING: manifest width=5 versionable ** If enabled, automatically create files "manifest" and "manifest.uuid" | > > > > > > > > > > > > > > > > > > | 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 | ** For maximum security, set "localauth" to 1. However, because ** of the other restrictions (2) through (4), it should be safe ** to leave "localauth" set to 0 in most installations, and ** especially on cloned repositories on workstations. Leaving ** "localauth" at 0 makes the "fossil ui" command more convenient ** to use. */ /* ** SETTING: lock-timeout width=25 default=86400 ** This is the number of seconds that a check-in lock will be held on ** the server before the lock expires. The default is a 24-hour delay. ** Set this value to zero to disable the check-in lock mechanism. ** ** This value should be set on the server to which users auto-sync ** their work. This setting has no affect on client repositories. The ** check-in lock mechanism is only effective if all users are auto-syncing ** to the same server. ** ** Check-in locks are an advisory mechanism designed to help prevent ** accidental forks due to a check-in race in installations where many ** user are committing to the same branch and auto-sync is enabled. ** As forks are harmless, there is no harm in disabling this mechanism. ** However, keeping check-in locks turned on can help prevent unnecessary ** confusion. */ /* ** SETTING: main-branch width=40 default=trunk ** The value is the primary branch for the project. */ /* ** SETTING: manifest width=5 versionable ** If enabled, automatically create files "manifest" and "manifest.uuid" |
︙ | ︙ |
Changes to src/xfer.c.
︙ | ︙ | |||
1557 1558 1559 1560 1561 1562 1563 | */ if( blob_eq(&xfer.aToken[1], "ci-lock") && xfer.nToken==4 && blob_is_hname(&xfer.aToken[2]) ){ Stmt q; sqlite3_int64 iNow = time(0); | | | | 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 | */ if( blob_eq(&xfer.aToken[1], "ci-lock") && xfer.nToken==4 && blob_is_hname(&xfer.aToken[2]) ){ Stmt q; sqlite3_int64 iNow = time(0); sqlite3_int64 maxAge = db_get_int("lock-timeout",3600*24); int seenFault = 0; db_prepare(&q, "SELECT json_extract(value,'$.login')," " mtime," " json_extract(value,'$.clientid')," " (SELECT rid FROM blob WHERE uuid=substr(name,9))," " name" " FROM config WHERE name GLOB 'ci-lock-*'" ); while( db_step(&q)==SQLITE_ROW ){ int x = db_column_int(&q,3); const char *zName = db_column_text(&q,4); if( db_column_int64(&q,1)<=iNow-maxAge || !is_a_leaf(x) ){ /* check-in locks expire after maxAge seconds, or when the ** check-in is no longer a leaf */ db_multi_exec("DELETE FROM config WHERE name=%Q", zName); continue; } if( fossil_strcmp(zName+8, blob_str(&xfer.aToken[2]))==0 ){ const char *zClientId = db_column_text(&q, 2); |
︙ | ︙ |