Fixed multiple trace problems.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4357 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
16
src/ssb.c
16
src/ssb.c
@ -2129,6 +2129,7 @@ tf_ssb_t* tf_ssb_create(uv_loop_t* loop, JSContext* context, const char* db_path
|
||||
|
||||
sqlite3* tf_ssb_acquire_db_reader(tf_ssb_t* ssb)
|
||||
{
|
||||
tf_trace_begin(ssb->trace, "db_reader");
|
||||
sqlite3* db = NULL;
|
||||
uv_mutex_lock(&ssb->db_readers_lock);
|
||||
if (ssb->db_readers_count)
|
||||
@ -2139,8 +2140,8 @@ sqlite3* tf_ssb_acquire_db_reader(tf_ssb_t* ssb)
|
||||
{
|
||||
sqlite3_open_v2(ssb->db_path, &db, SQLITE_OPEN_READONLY | SQLITE_OPEN_URI, NULL);
|
||||
tf_ssb_db_init_reader(db);
|
||||
tf_trace_sqlite(ssb->trace, db);
|
||||
}
|
||||
tf_trace_sqlite(ssb->trace, db);
|
||||
uv_mutex_unlock(&ssb->db_readers_lock);
|
||||
return db;
|
||||
}
|
||||
@ -2151,10 +2152,12 @@ void tf_ssb_release_db_reader(tf_ssb_t* ssb, sqlite3* db)
|
||||
ssb->db_readers = tf_resize_vec(ssb->db_readers, sizeof(sqlite3*) * (ssb->db_readers_count + 1));
|
||||
ssb->db_readers[ssb->db_readers_count++] = db;
|
||||
uv_mutex_unlock(&ssb->db_readers_lock);
|
||||
tf_trace_end(ssb->trace);
|
||||
}
|
||||
|
||||
sqlite3* tf_ssb_acquire_db_writer(tf_ssb_t* ssb)
|
||||
{
|
||||
tf_trace_begin(ssb->trace, "db_writer");
|
||||
uv_mutex_lock(&ssb->db_writer_lock);
|
||||
sqlite3* writer = ssb->db_writer;
|
||||
assert(writer);
|
||||
@ -2167,6 +2170,7 @@ void tf_ssb_release_db_writer(tf_ssb_t* ssb, sqlite3* db)
|
||||
assert(ssb->db_writer == NULL);
|
||||
ssb->db_writer = db;
|
||||
uv_mutex_unlock(&ssb->db_writer_lock);
|
||||
tf_trace_end(ssb->trace);
|
||||
}
|
||||
|
||||
uv_loop_t* tf_ssb_get_loop(tf_ssb_t* ssb)
|
||||
@ -2207,6 +2211,16 @@ void tf_ssb_set_trace(tf_ssb_t* ssb, tf_trace_t* trace)
|
||||
tf_trace_sqlite(trace, db);
|
||||
}
|
||||
tf_ssb_release_db_writer(ssb, db);
|
||||
|
||||
if (trace)
|
||||
{
|
||||
uv_mutex_lock(&ssb->db_readers_lock);
|
||||
for (int i = 0; i < ssb->db_readers_count; i++)
|
||||
{
|
||||
tf_trace_sqlite(trace, ssb->db_readers[i]);
|
||||
}
|
||||
uv_mutex_unlock(&ssb->db_readers_lock);
|
||||
}
|
||||
}
|
||||
|
||||
tf_trace_t* tf_ssb_get_trace(tf_ssb_t* ssb)
|
||||
|
Reference in New Issue
Block a user