mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 14:54:20 +01:00
#4869 increase test coverage of txn.c, remove spin locks refs[t:4869]
git-svn-id: file:///svn/toku/tokudb@43421 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
e584e1cf35
commit
0a2f3a36aa
3 changed files with 7 additions and 92 deletions
26
newbrt/txn.c
26
newbrt/txn.c
|
@ -188,13 +188,11 @@ toku_txn_create_txn (
|
|||
verify_snapshot_system(logger);
|
||||
}
|
||||
assert(logger->rollback_cachefile);
|
||||
TOKUTXN MALLOC(result);
|
||||
if (result == 0)
|
||||
return errno;
|
||||
TOKUTXN XMALLOC(result);
|
||||
result->starttime = time(NULL); // getting timestamp in seconds is a cheap call
|
||||
int r;
|
||||
r = toku_omt_create(&result->open_brt_headers);
|
||||
if (r!=0) goto died;
|
||||
assert_zero(r);
|
||||
|
||||
result->logger = logger;
|
||||
result->parent = parent_tokutxn;
|
||||
|
@ -237,11 +235,6 @@ toku_txn_create_txn (
|
|||
verify_snapshot_system(logger);
|
||||
}
|
||||
return 0;
|
||||
|
||||
died:
|
||||
// TODO memory leak
|
||||
toku_logger_panic(logger, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -252,7 +245,7 @@ toku_txn_start_txn(TOKUTXN txn) {
|
|||
if (txn->txnid64 == TXNID_NONE) {
|
||||
LSN first_lsn;
|
||||
r = toku_log_xbegin(logger, &first_lsn, 0, parent ? parent->txnid64 : 0);
|
||||
if (r!=0) goto died;
|
||||
assert_zero(r);
|
||||
txn->txnid64 = first_lsn.lsn;
|
||||
}
|
||||
XIDS parent_xids;
|
||||
|
@ -260,8 +253,8 @@ toku_txn_start_txn(TOKUTXN txn) {
|
|||
parent_xids = xids_get_root_xids();
|
||||
else
|
||||
parent_xids = parent->xids;
|
||||
if ((r = xids_create_child(parent_xids, &txn->xids, txn->txnid64)))
|
||||
goto died;
|
||||
r = xids_create_child(parent_xids, &txn->xids, txn->txnid64);
|
||||
assert_zero(r);
|
||||
|
||||
if (toku_omt_size(logger->live_txns) == 0) {
|
||||
assert(logger->oldest_living_xid == TXNID_NONE_LIVING);
|
||||
|
@ -275,7 +268,7 @@ toku_txn_start_txn(TOKUTXN txn) {
|
|||
//Add txn to list (omt) of live transactions
|
||||
//We know it is the newest one.
|
||||
r = toku_omt_insert_at(logger->live_txns, txn, toku_omt_size(logger->live_txns));
|
||||
if (r!=0) goto died;
|
||||
assert_zero(r);
|
||||
|
||||
//
|
||||
// maintain the data structures necessary for MVCC:
|
||||
|
@ -296,7 +289,7 @@ toku_txn_start_txn(TOKUTXN txn) {
|
|||
if (parent == NULL) {
|
||||
//Add txn to list (omt) of live root txns
|
||||
r = toku_omt_insert_at(logger->live_root_txns, (OMTVALUE) txn->txnid64, toku_omt_size(logger->live_root_txns)); //We know it is the newest one.
|
||||
if (r!=0) goto died;
|
||||
assert_zero(r);
|
||||
txn->ancestor_txnid64 = txn->txnid64;
|
||||
}
|
||||
else {
|
||||
|
@ -329,11 +322,6 @@ toku_txn_start_txn(TOKUTXN txn) {
|
|||
}
|
||||
r = toku_pthread_mutex_unlock(&logger->txn_list_lock); assert_zero(r);
|
||||
return 0;
|
||||
|
||||
died:
|
||||
// TODO memory leak
|
||||
toku_logger_panic(logger, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
//Used on recovery to recover a transaction.
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
#define _TOKU_PTHREAD_H
|
||||
|
||||
#include <pthread.h>
|
||||
#include "toku_spinlock.h"
|
||||
#include <time.h>
|
||||
#include <stdint.h>
|
||||
#include "toku_assert.h"
|
||||
|
|
|
@ -1,72 +0,0 @@
|
|||
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
#ident "Copyright (c) 2012 Tokutek Inc. All rights reserved."
|
||||
#ident "$Id$"
|
||||
|
||||
#ifndef __TOKU_SPINLOCK_H__
|
||||
#define __TOKU_SPINLOCK_H__
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "toku_assert.h"
|
||||
|
||||
#ifdef HAVE_LIBKERN_OSATOMIC_H
|
||||
|
||||
#include <libkern/OSAtomic.h>
|
||||
typedef OSSpinLock toku_spinlock_t;
|
||||
static inline void
|
||||
toku_spin_init(toku_spinlock_t *lock __attribute__((unused)),
|
||||
int pshared __attribute__((unused))) {
|
||||
}
|
||||
|
||||
static inline void
|
||||
toku_spin_destroy(toku_spinlock_t *lock __attribute__((unused))) {
|
||||
|
||||
}
|
||||
|
||||
static inline void
|
||||
toku_spin_lock(toku_spinlock_t *lock) {
|
||||
OSSpinLockLock(lock);
|
||||
}
|
||||
|
||||
static inline void
|
||||
toku_spin_unlock(toku_spinlock_t *lock) {
|
||||
OSSpinLockUnlock(lock);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#ifdef HAVE_PTHREAD_H
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
typedef pthread_spinlock_t toku_spinlock_t;
|
||||
|
||||
static inline void
|
||||
toku_spin_init(toku_spinlock_t *lock, int pshared) {
|
||||
int r = pthread_spin_init(lock, pshared);
|
||||
assert_zero(r);
|
||||
}
|
||||
|
||||
static inline void
|
||||
toku_spin_destroy(toku_spinlock_t *lock) {
|
||||
int r = pthread_spin_destroy(lock);
|
||||
assert_zero(r);
|
||||
}
|
||||
|
||||
static inline void
|
||||
toku_spin_lock(toku_spinlock_t *lock) {
|
||||
int r = pthread_spin_lock(lock);
|
||||
assert_zero(r);
|
||||
}
|
||||
|
||||
static inline void
|
||||
toku_spin_unlock(toku_spinlock_t *lock) {
|
||||
int r = pthread_spin_unlock(lock);
|
||||
assert_zero(r);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* __TOKU_SPINLOCK_H__ */
|
Loading…
Add table
Reference in a new issue