Commit 2e583c94 authored by Geoff Simmons's avatar Geoff Simmons

remove the xid field from the data entry struct

parent 995fd679
......@@ -310,6 +310,7 @@ dispatch(struct VSL_data *vsl, struct VSL_transaction * const pt[], void *priv)
int status = DISPATCH_RETURN_OK;
dataentry *de = NULL;
char reqend_str[REQEND_T_LEN];
int32_t vxid;
(void) priv;
if (all_wrk_abandoned())
......@@ -344,7 +345,7 @@ dispatch(struct VSL_data *vsl, struct VSL_transaction * const pt[], void *priv)
assert(VSL_CLIENT(t->c->rec.ptr));
if (de->end == 0) {
de->xid = t->vxid;
vxid = t->vxid;
snprintf(de->data, config.max_reclen, "XID=%u", t->vxid);
de->end = strlen(de->data);
if (de->end > len_hi)
......@@ -423,7 +424,7 @@ dispatch(struct VSL_data *vsl, struct VSL_transaction * const pt[], void *priv)
snprintf(reqend_str, REQEND_T_LEN, "%s=%u.%06lu", REQEND_T_VAR,
(unsigned) de->reqend_t.tv_sec, de->reqend_t.tv_usec);
append(de, SLT_Timestamp, de->xid, reqend_str, REQEND_T_LEN - 1);
append(de, SLT_Timestamp, vxid, reqend_str, REQEND_T_LEN - 1);
de->occupied = 1;
MON_StatsUpdate(STATS_OCCUPANCY, 0);
data_submit(de);
......
......@@ -112,7 +112,6 @@ DATA_Reset(dataentry *entry)
entry->keylen = 0;
*entry->key = '\0';
entry->hasdata = 0;
entry->xid = 0;
entry->reqend_t.tv_sec = 0;
entry->reqend_t.tv_usec = 0;
}
......@@ -158,8 +157,8 @@ DATA_Dump(void)
if (!OCCUPIED(entry))
continue;
LOG_Log(LOG_INFO,
"Data entry %d: XID=%u data=[%.*s] key=[%.*s] reqend_t=%u.%06u",
i, entry->xid, entry->end, entry->data, entry->keylen,
entry->key, entry->reqend_t.tv_sec, entry->reqend_t.tv_usec);
"Data entry %d: data=[%.*s] key=[%.*s] reqend_t=%u.%06u",
i, entry->end, entry->data, entry->keylen, entry->key,
entry->reqend_t.tv_sec, entry->reqend_t.tv_usec);
}
}
......@@ -63,7 +63,6 @@ static char
MAZ(entrytbl[i].hasdata);
MAN(entrytbl[i].data);
MAN(entrytbl[i].key);
MAZ(entrytbl[i].xid);
MAZ(entrytbl[i].end);
MAZ(entrytbl[i].keylen);
MAZ(entrytbl[i].reqend_t.tv_sec);
......
......@@ -29,10 +29,11 @@
*
*/
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <errno.h>
#include <stdint.h>
#include <inttypes.h>
#include "minunit.h"
......@@ -57,7 +58,7 @@ typedef enum {
} fail_e;
typedef struct {
unsigned sum;
uintptr_t sum;
fail_e fail;
} prod_con_data_t;
......@@ -78,20 +79,15 @@ static void
(void) arg;
srand48(time(NULL));
unsigned xid = (unsigned int) lrand48();
for (int i = 0; i < config.max_records; i++) {
entries[i].xid = xid;
debug_print("Producer: enqueue %d (xid = %u)\n", ++enqs, xid);
debug_print("Producer: enqueue %d\n", ++enqs);
SPMCQ_Enq(&entries[i]);
debug_print("%s\n", "Producer: broadcast");
if (pthread_cond_broadcast(&spmcq_datawaiter_cond) != 0) {
proddata.fail = PRODUCER_BCAST;
pthread_exit(&proddata);
}
proddata.sum += xid;
xid++;
proddata.sum += (uintptr_t) entries[i].data;
}
debug_print("%s\n", "Producer: exit");
pthread_exit((void *) &proddata);
......@@ -138,16 +134,14 @@ static void
}
} else {
/* entry != NULL */
debug_print("Consumer %d: dequeue %d (xid = %u)\n", id, ++deqs,
entry->xid);
pcdata->sum += entry->xid;
debug_print("Consumer %d: dequeue %d\n", id, ++deqs);
pcdata->sum += (uintptr_t) entry->data;
}
}
debug_print("Consumer %d: drain queue, run = %d\n", id, run);
while ((entry = SPMCQ_Deq()) != NULL) {
debug_print("Consumer %d: dequeue %d (xid = %u)\n", id, ++deqs,
entry->xid);
pcdata->sum += entry->xid;
debug_print("Consumer %d: dequeue %d\n", id, ++deqs);
pcdata->sum += (uintptr_t) entry->data;
}
debug_print("Consumer %d: exit\n", id);
pthread_exit((void *) pcdata);
......@@ -181,18 +175,15 @@ static char
static const char
*test_spmcq_enq_deq(void)
{
#define XID 1234567890
dataentry entry1, *entry2;
printf("... testing SPMCQ enqueue and dequeue\n");
entry1.xid = 1234567890;
SPMCQ_Enq(&entry1);
entry2 = SPMCQ_Deq();
mu_assert("SPMCQ_Deq: returned NULL from non-empty queue", entry2 != NULL);
sprintf(errmsg, "SMPCQ_Deq: expected %d, got %d", XID, entry2->xid);
mu_assert(errmsg, XID == entry2->xid);
MASSERT(&entry1 == entry2);
return NULL;
}
......@@ -267,8 +258,9 @@ static const char
mu_assert(errmsg, con2_data->fail == SUCCESS);
}
sprintf(errmsg, "Consumer/producer checksum mismatch: p = %u, c = %u",
prod_data->sum, con1_data->sum + con2_data->sum);
sprintf(errmsg, "Consumer/producer checksum mismatch: p = %" PRIuPTR
", c = %" PRIuPTR,
prod_data->sum, con1_data->sum + con2_data->sum);
mu_assert(errmsg, prod_data->sum == con1_data->sum + con2_data->sum);
return NULL;
......
......@@ -129,9 +129,6 @@ static const char
printf("... testing run of %d workers\n", NWORKERS);
srand48(time(NULL));
unsigned xid = (unsigned int) lrand48();
WRK_Start();
int wrk_running, wrk_wait = 0;
while ((wrk_running = WRK_Running()) < NWORKERS) {
......@@ -145,8 +142,7 @@ static const char
for (int i = 0; i < config.max_records; i++) {
entry = &entrytbl[i];
MCHECK_OBJ_NOTNULL(entry, DATA_MAGIC);
entry->xid = xid;
sprintf(entry->data, "XID=%d&foo=bar&baz=quux&record=%d", xid, i+1);
sprintf(entry->data, "foo=bar&baz=quux&record=%d", i+1);
entry->end = strlen(entry->data);
entry->occupied = 1;
SPMCQ_Enq(entry);
......@@ -171,7 +167,6 @@ static const char
MAZ(entry->keylen);
MAZ(*entry->key);
MAZ(entry->hasdata);
MAZ(entry->xid);
MAZ(entry->reqend_t.tv_sec);
MAZ(entry->reqend_t.tv_usec);
}
......
......@@ -122,7 +122,6 @@ struct dataentry_s {
VSTAILQ_ENTRY(dataentry_s) spmcq;
struct timeval reqend_t;
unsigned xid;
unsigned end; /* End of string index in data */
unsigned keylen;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment