diff --git a/ft/rollback_log_node_cache.cc b/ft/rollback_log_node_cache.cc
index 323795f449a..62bec1fae10 100644
--- a/ft/rollback_log_node_cache.cc
+++ b/ft/rollback_log_node_cache.cc
@@ -15,7 +15,11 @@ void rollback_log_node_cache::init (uint32_t max_num_avail_nodes) {
     m_max_num_avail = max_num_avail_nodes;
     m_first = 0;
     m_num_avail = 0;
-    toku_adaptive_mutex_init(&m_mutex);
+    toku_pthread_mutexattr_t attr;
+    toku_mutexattr_init(&attr);
+    toku_mutexattr_settype(&attr, TOKU_MUTEX_ADAPTIVE);
+    toku_mutex_init(&m_mutex, &attr);
+    toku_mutexattr_destroy(&attr);
 }
 
 void rollback_log_node_cache::destroy() {
diff --git a/locktree/treenode.cc b/locktree/treenode.cc
index a9bb88b3258..3115484c8f1 100644
--- a/locktree/treenode.cc
+++ b/locktree/treenode.cc
@@ -20,7 +20,11 @@ void treenode::init(comparator *cmp) {
     // use an adaptive mutex at each node since we expect the time the
     // lock is held to be relatively short compared to a context switch.
     // indeed, this improves performance at high thread counts considerably.
-    toku_adaptive_mutex_init(&m_mutex);
+    toku_pthread_mutexattr_t attr;
+    toku_mutexattr_init(&attr);
+    toku_mutexattr_settype(&attr, TOKU_MUTEX_ADAPTIVE);
+    toku_mutex_init(&m_mutex, &attr);
+    toku_mutexattr_destroy(&attr);
     m_left_child.set(nullptr);
     m_right_child.set(nullptr);
 }
diff --git a/portability/toku_pthread.h b/portability/toku_pthread.h
index 1583e6b88b3..21738d32dab 100644
--- a/portability/toku_pthread.h
+++ b/portability/toku_pthread.h
@@ -86,11 +86,21 @@ toku_mutex_init(toku_mutex_t *mutex, const toku_pthread_mutexattr_t *attr) {
 }
 
 static inline void
-toku_adaptive_mutex_init(toku_mutex_t *mutex) {
-    pthread_mutexattr_t attr;
-    pthread_mutexattr_init(&attr);
-    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
-    toku_mutex_init(mutex, &attr);
+toku_mutexattr_init(toku_pthread_mutexattr_t *attr) {
+    int r = pthread_mutexattr_init(attr);
+    assert_zero(r);
+}
+
+static inline void
+toku_mutexattr_settype(toku_pthread_mutexattr_t *attr, int type) {
+    int r = pthread_mutexattr_settype(attr, type);
+    assert_zero(r);
+}
+
+static inline void
+toku_mutexattr_destroy(toku_pthread_mutexattr_t *attr) {
+    int r = pthread_mutexattr_destroy(attr);
+    assert_zero(r);
 }
 
 static inline void