minor changes
This commit is contained in:
parent
e22d4b8e59
commit
935de3aeb5
6 changed files with 18 additions and 11 deletions
|
@ -83,7 +83,7 @@ available.%
|
||||||
nearly as flexible as modern programming languages or typical
|
nearly as flexible as modern programming languages or typical
|
||||||
in-memory data structure libraries {[}Java Collections,
|
in-memory data structure libraries {[}Java Collections,
|
||||||
STL{]}. Historically, programming language and software library
|
STL{]}. Historically, programming language and software library
|
||||||
development has focused upon the production of wide array of
|
development has focused upon the production of a wide array of
|
||||||
composable general purpose tools, allowing the application developer
|
composable general purpose tools, allowing the application developer
|
||||||
to pick algorithms and data structures that are most appropriate for
|
to pick algorithms and data structures that are most appropriate for
|
||||||
the problem at hand.}
|
the problem at hand.}
|
||||||
|
@ -131,7 +131,7 @@ popularity of MySQL~\cite{mysql}, which allows some of these
|
||||||
constraints to be relaxed at the discretion of a developer or end
|
constraints to be relaxed at the discretion of a developer or end
|
||||||
user.
|
user.
|
||||||
|
|
||||||
\item{\bf OODBMS / XML database systems provide model tied closely to PL
|
\item{\bf OODBMS / XML database systems provide models tied closely to PL
|
||||||
or hierarchical formats, but, like the relational model, these
|
or hierarchical formats, but, like the relational model, these
|
||||||
models are extremely general, and might be inappropriate for
|
models are extremely general, and might be inappropriate for
|
||||||
applications with stringent performance demands, or that use these
|
applications with stringent performance demands, or that use these
|
||||||
|
@ -248,7 +248,7 @@ not provided by existing systems.
|
||||||
%errors in data structures, errors in the log format, etc)
|
%errors in data structures, errors in the log format, etc)
|
||||||
|
|
||||||
% second point: more difficult techniques can be used to optimize
|
% second point: more difficult techniques can be used to optimize
|
||||||
% log bandwidth. _in ways that other techniques cannot provide
|
% log bandwidth. _in ways that other techniques cannot provide_
|
||||||
% to application developers.
|
% to application developers.
|
||||||
|
|
||||||
Instead of providing a comprehensive discussion of ARIES, we will
|
Instead of providing a comprehensive discussion of ARIES, we will
|
||||||
|
@ -679,6 +679,8 @@ LLADD's linear hash table uses linked lists of overflow buckets.
|
||||||
|
|
||||||
\begin{enumerate}
|
\begin{enumerate}
|
||||||
|
|
||||||
|
\item {\bf Comparison of transactional primatives (best case for each operator)}
|
||||||
|
|
||||||
\item {\bf Serialization Benchmarks (Abstract log) }
|
\item {\bf Serialization Benchmarks (Abstract log) }
|
||||||
|
|
||||||
{\bf Need to define application semantics workload (write heavy w/ periodic checkpoint?) that allows for optimization.}
|
{\bf Need to define application semantics workload (write heavy w/ periodic checkpoint?) that allows for optimization.}
|
||||||
|
|
|
@ -1,11 +1,16 @@
|
||||||
|
#define __USE_GNU
|
||||||
|
#define _GNU_SOURCE
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
#include <lladd/transactional.h>
|
#include <lladd/transactional.h>
|
||||||
#include <lladd/hash.h>
|
#include <lladd/hash.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#define __USE_GNU
|
/*#ifndef PTHREAD_MUTEX_RECURSIVE
|
||||||
#include <pthread.h>
|
#define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
|
||||||
|
#endif*/
|
||||||
|
|
||||||
/** A quick note on the format of linked lists. Each entry consists
|
/** A quick note on the format of linked lists. Each entry consists
|
||||||
of a struct with some variable length data appended to it.
|
of a struct with some variable length data appended to it.
|
||||||
|
@ -394,7 +399,7 @@ compensated_function int TlinkedListNext(int xid, lladd_linkedList_iterator * it
|
||||||
if(it->next.size == -1) { free(it); return 0; }
|
if(it->next.size == -1) { free(it); return 0; }
|
||||||
|
|
||||||
int done = 0;
|
int done = 0;
|
||||||
int ret;
|
int ret = 0;
|
||||||
lladd_linkedList_entry * entry;
|
lladd_linkedList_entry * entry;
|
||||||
begin_action_ret(pthread_mutex_unlock, &linked_list_mutex, compensation_error()) {
|
begin_action_ret(pthread_mutex_unlock, &linked_list_mutex, compensation_error()) {
|
||||||
pthread_mutex_lock(&linked_list_mutex);
|
pthread_mutex_lock(&linked_list_mutex);
|
||||||
|
|
|
@ -180,12 +180,12 @@ compensated_function int TpagedListMove(int xid, recordid start_list, recordid e
|
||||||
try_ret(compensation_error()) {
|
try_ret(compensation_error()) {
|
||||||
int valueSize = TpagedListFind(xid, start_list, key, keySize, &value);
|
int valueSize = TpagedListFind(xid, start_list, key, keySize, &value);
|
||||||
if(valueSize != -1) {
|
if(valueSize != -1) {
|
||||||
int ret = TpagedListRemove(xid, start_list, key, keySize);
|
ret = TpagedListRemove(xid, start_list, key, keySize);
|
||||||
assert(ret);
|
assert(ret);
|
||||||
ret = TpagedListInsert(xid, end_list, key, keySize, value, valueSize);
|
ret = TpagedListInsert(xid, end_list, key, keySize, value, valueSize);
|
||||||
assert(!ret);
|
assert(!ret);
|
||||||
if(value) { free(value); }
|
if(value) { free(value); }
|
||||||
ret = 1;
|
// ret = 1;
|
||||||
} else {
|
} else {
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
INCLUDES = @CHECK_CFLAGS@
|
INCLUDES = @CHECK_CFLAGS@
|
||||||
if HAVE_CHECK
|
if HAVE_CHECK
|
||||||
## Had to disable check_lht because lht needs to be rewritten.
|
## Had to disable check_lht because lht needs to be rewritten.
|
||||||
TESTS = check_logEntry check_logWriter check_page check_operations check_transactional2 check_recovery check_blobRecovery check_bufferManager check_indirect check_pageOperations check_linearHash check_logicalLinearHash check_header check_linkedListNTA check_linearHashNTA check_pageOrientedList check_lockManager check_compensations check_errorHandling
|
TESTS = check_logEntry check_logWriter check_page check_operations check_transactional2 check_recovery check_blobRecovery check_bufferManager check_indirect check_pageOperations check_linearHash check_logicalLinearHash check_header check_linkedListNTA check_linearHashNTA check_pageOrientedList check_lockManager check_compensations check_errorHandling check_ringbuffer
|
||||||
#check_lladdhash
|
#check_lladdhash
|
||||||
else
|
else
|
||||||
TESTS =
|
TESTS =
|
||||||
|
|
|
@ -18,7 +18,7 @@ START_TEST(simpleDeadlockTest) {
|
||||||
int xid = Tbegin();
|
int xid = Tbegin();
|
||||||
|
|
||||||
recordid rid = Talloc(xid, sizeof(int));
|
recordid rid = Talloc(xid, sizeof(int));
|
||||||
recordid rid2 = Talloc(xid, sizeof(int));
|
Talloc(xid, sizeof(int));
|
||||||
|
|
||||||
Tcommit(xid);
|
Tcommit(xid);
|
||||||
assert(!compensation_error());
|
assert(!compensation_error());
|
||||||
|
|
|
@ -44,7 +44,7 @@ void * pageWorkerThread(void * j) {
|
||||||
// } end_ret();
|
// } end_ret();
|
||||||
} else {
|
} else {
|
||||||
// writelock
|
// writelock
|
||||||
int locked = 0;
|
// int locked = 0;
|
||||||
// begin_action_ret(NULL, NULL, 0) {
|
// begin_action_ret(NULL, NULL, 0) {
|
||||||
|
|
||||||
if(LLADD_DEADLOCK == globalLockManager.writeLockPage(xid, m)) {
|
if(LLADD_DEADLOCK == globalLockManager.writeLockPage(xid, m)) {
|
||||||
|
|
Loading…
Reference in a new issue