Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Wrap use of getpid() in the trace statements. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | win32Proc |
Files: | files | file ages | folders |
SHA3-256: |
842bf225d2b93e896d544d7f232ef0f9 |
User & Date: | mistachkin 2018-08-02 03:03:01.534 |
Context
2018-08-02
| ||
03:05 | Just in case, modify backofficeTimeout() to handle being called more than once on Win32. ... (Closed-Leaf check-in: 0ef0e105 user: mistachkin tags: win32Proc) | |
03:03 | Wrap use of getpid() in the trace statements. ... (check-in: 842bf225 user: mistachkin tags: win32Proc) | |
02:27 | When sleeping inside the backoffice work loop, permit the sleep to be interrupted on Win32, which stops processing. ... (check-in: 9840313b user: mistachkin tags: win32Proc) | |
Changes
Changes to src/backoffice.c.
︙ | ︙ | |||
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | */ #include "config.h" #include "backoffice.h" #include <time.h> #if defined(_WIN32) # include <process.h> # include <windows.h> #else # include <unistd.h> # include <sys/types.h> # include <signal.h> #endif /* ** The BKOFCE_LEASE_TIME is the amount of time for which a single backoffice ** processing run is valid. Each backoffice run monopolizes the lease for ** at least this amount of time. Hopefully all backoffice processing is ** finished much faster than this - usually in less than a second. But | > > | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | */ #include "config.h" #include "backoffice.h" #include <time.h> #if defined(_WIN32) # include <process.h> # include <windows.h> # define GETPID (int)GetCurrentProcessId #else # include <unistd.h> # include <sys/types.h> # include <signal.h> # define GETPID getpid #endif /* ** The BKOFCE_LEASE_TIME is the amount of time for which a single backoffice ** processing run is valid. Each backoffice run monopolizes the lease for ** at least this amount of time. Hopefully all backoffice processing is ** finished much faster than this - usually in less than a second. But |
︙ | ︙ | |||
193 194 195 196 197 198 199 | #endif } /* ** Return a process id number for the current process */ static sqlite3_uint64 backofficeProcessId(void){ | < | < < < | 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | #endif } /* ** Return a process id number for the current process */ static sqlite3_uint64 backofficeProcessId(void){ return (sqlite3_uint64)GETPID(); } /* ** Set an alarm to cause the process to exit after "x" seconds. This ** prevents any kind of bug from keeping a backoffice process running ** indefinitely. */ |
︙ | ︙ | |||
323 324 325 326 327 328 329 | x.tmCurrent = tmNow + BKOFCE_LEASE_TIME; x.idNext = 0; x.tmNext = 0; backofficeWriteLease(&x); db_end_transaction(0); if( g.fAnyTrace ){ fprintf(stderr, "/***** Begin Backoffice Processing %d *****/\n", | | | | | | 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 | x.tmCurrent = tmNow + BKOFCE_LEASE_TIME; x.idNext = 0; x.tmNext = 0; backofficeWriteLease(&x); db_end_transaction(0); if( g.fAnyTrace ){ fprintf(stderr, "/***** Begin Backoffice Processing %d *****/\n", GETPID()); } backoffice_work(); break; } if( backofficeNoDelay ){ /* If the no-delay flag is set, exit immediately rather than queuing ** up. Assume that some future request will come along and handle any ** necessary backoffice work. */ db_end_transaction(0); break; } /* This process needs to queue up and wait for the current lease ** to expire before continuing. */ x.idNext = idSelf; x.tmNext = (tmNow>x.tmCurrent ? tmNow : x.tmCurrent) + BKOFCE_LEASE_TIME; backofficeWriteLease(&x); db_end_transaction(0); if( g.fAnyTrace ){ fprintf(stderr, "/***** Backoffice On-deck %d *****/\n", GETPID()); } if( x.tmCurrent >= tmNow ){ if( backofficeSleep(1000*(x.tmCurrent - tmNow + 1)) ){ /* The sleep was interrupted by a signal from another thread. */ if( g.fAnyTrace ){ fprintf(stderr, "/***** Backoffice Interrupt %d *****/\n", GETPID()); } db_end_transaction(0); break; } }else{ if( lastWarning+warningDelay < tmNow ){ fossil_warning( "backoffice process %lld still running after %d seconds", x.idCurrent, (int)(BKOFCE_LEASE_TIME + tmNow - x.tmCurrent)); lastWarning = tmNow; warningDelay *= 2; } if( backofficeSleep(1000) ){ /* The sleep was interrupted by a signal from another thread. */ if( g.fAnyTrace ){ fprintf(stderr, "/***** Backoffice Interrupt %d *****/\n", GETPID()); } db_end_transaction(0); break; } } } #if defined(_WIN32) |
︙ | ︙ |