SQLite

Check-in [d0de32e4c6]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fix a race condition in test_server.c/test7.c (test changes only). (CVS 4073)
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: d0de32e4c630c43ecd9d5e5296ae84aeff80c083
User & Date: danielk1977 2007-06-15 17:50:04.000
Context
2007-06-15
18:43
Add a script for "soak" testing. (CVS 4074) (check-in: d4ea1287a8 user: drh tags: trunk)
17:50
Fix a race condition in test_server.c/test7.c (test changes only). (CVS 4073) (check-in: d0de32e4c6 user: danielk1977 tags: trunk)
17:04
Fix typo in change comments for 3.4.0. Ticket #2416 (CVS 4072) (check-in: 1f6f033000 user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/test_server.c.
445
446
447
448
449
450
451
452
453

454
455
456
457
458
459
460

    /* Signal the client that the message has been processed.
    */
    pMsg->op = MSG_Done;
    pthread_mutex_unlock(&pMsg->clientMutex);
    pthread_cond_signal(&pMsg->clientWakeup);
  }
  pthread_mutex_unlock(&g.serverMutex);
  sqlite3_thread_cleanup();

  return 0;
}

/*
** Start a server thread if one is not already running.  If there
** is aleady a server thread running, the new thread will quickly
** die and this routine is effectively a no-op.







<

>







445
446
447
448
449
450
451

452
453
454
455
456
457
458
459
460

    /* Signal the client that the message has been processed.
    */
    pMsg->op = MSG_Done;
    pthread_mutex_unlock(&pMsg->clientMutex);
    pthread_cond_signal(&pMsg->clientWakeup);
  }

  sqlite3_thread_cleanup();
  pthread_mutex_unlock(&g.serverMutex);
  return 0;
}

/*
** Start a server thread if one is not already running.  If there
** is aleady a server thread running, the new thread will quickly
** die and this routine is effectively a no-op.
469
470
471
472
473
474
475
476
477
478
479
480
481


482
483
484
485
  }
}

/*
** If a server thread is running, then stop it.  If no server is
** running, this routine is effectively a no-op.
**
** This routine returns immediately without waiting for the server
** thread to stop.  But be assured that the server will eventually stop.
*/
void sqlite3_server_stop(void){
  g.serverHalt = 1;
  pthread_cond_broadcast(&g.serverWakeup);


}

#endif /* defined(OS_UNIX) && OS_UNIX && defined(THREADSAFE) && THREADSAFE */
#endif /* defined(SQLITE_SERVER) */







|
|




>
>




469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
  }
}

/*
** If a server thread is running, then stop it.  If no server is
** running, this routine is effectively a no-op.
**
** This routine waits until the server has actually stopped before
** returning.
*/
void sqlite3_server_stop(void){
  g.serverHalt = 1;
  pthread_cond_broadcast(&g.serverWakeup);
  pthread_mutex_lock(&g.serverMutex);
  pthread_mutex_unlock(&g.serverMutex);
}

#endif /* defined(OS_UNIX) && OS_UNIX && defined(THREADSAFE) && THREADSAFE */
#endif /* defined(SQLITE_SERVER) */