IdempotencyRequestMetadata add field n for integer argument
parent
a966d1bf4d
commit
803d3cb626
|
|
@ -32,13 +32,14 @@ static struct {
|
||||||
|
|
||||||
|
|
||||||
#define CHECK_MASTER_METADATA(meta) \
|
#define CHECK_MASTER_METADATA(meta) \
|
||||||
(meta != NULL && g_current_time - meta->enqueue_time > \
|
(meta != NULL && g_current_time - (long)meta->enqueue_time > \
|
||||||
g_request_metadata.master_side_timeout)
|
g_request_metadata.master_side_timeout)
|
||||||
|
|
||||||
static void process_master_side(IdempotencyRequestMetadataContext *ctx)
|
static void process_master_side(IdempotencyRequestMetadataContext *ctx)
|
||||||
{
|
{
|
||||||
struct fast_mblock_chain chain;
|
struct fast_mblock_chain chain;
|
||||||
struct fast_mblock_node *node;
|
struct fast_mblock_node *node;
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
chain.head = chain.tail = NULL;
|
chain.head = chain.tail = NULL;
|
||||||
PTHREAD_MUTEX_LOCK(&ctx->lock);
|
PTHREAD_MUTEX_LOCK(&ctx->lock);
|
||||||
|
|
@ -52,6 +53,7 @@ static void process_master_side(IdempotencyRequestMetadataContext *ctx)
|
||||||
}
|
}
|
||||||
chain.tail = node;
|
chain.tail = node;
|
||||||
|
|
||||||
|
++count;
|
||||||
ctx->list.head = ctx->list.head->next;
|
ctx->list.head = ctx->list.head->next;
|
||||||
} while (CHECK_MASTER_METADATA(ctx->list.head));
|
} while (CHECK_MASTER_METADATA(ctx->list.head));
|
||||||
|
|
||||||
|
|
@ -65,6 +67,10 @@ static void process_master_side(IdempotencyRequestMetadataContext *ctx)
|
||||||
fast_mblock_batch_free(&ctx->allocator, &chain);
|
fast_mblock_batch_free(&ctx->allocator, &chain);
|
||||||
}
|
}
|
||||||
PTHREAD_MUTEX_UNLOCK(&ctx->lock);
|
PTHREAD_MUTEX_UNLOCK(&ctx->lock);
|
||||||
|
|
||||||
|
if (count > 0) {
|
||||||
|
logInfo("#######func: %s, deal count: %d", __FUNCTION__, count);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CHECK_SLAVE_METADATA(meta, dv) \
|
#define CHECK_SLAVE_METADATA(meta, dv) \
|
||||||
|
|
@ -129,9 +135,8 @@ static void *thread_run(void *arg)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int idempotency_request_metadata_init(
|
int idempotency_request_metadata_init(IdempotencyRequestMetadataContext
|
||||||
IdempotencyRequestMetadataContext *ctx,
|
*ctx, sf_is_master_callback is_master_callback, void *arg)
|
||||||
sf_is_master_callback is_master_callback, void *arg)
|
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
|
|
@ -192,9 +197,8 @@ int idempotency_request_metadata_start(const int process_interval_ms,
|
||||||
SF_G_THREAD_STACK_SIZE);
|
SF_G_THREAD_STACK_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
int idempotency_request_metadata_add(
|
int idempotency_request_metadata_add(IdempotencyRequestMetadataContext
|
||||||
IdempotencyRequestMetadataContext *ctx,
|
*ctx, const SFRequestMetadata *metadata, const int n)
|
||||||
SFRequestMetadata *metadata)
|
|
||||||
{
|
{
|
||||||
IdempotencyRequestMetadata *idemp_meta;
|
IdempotencyRequestMetadata *idemp_meta;
|
||||||
|
|
||||||
|
|
@ -206,6 +210,7 @@ int idempotency_request_metadata_add(
|
||||||
|
|
||||||
idemp_meta->req_id = metadata->req_id;
|
idemp_meta->req_id = metadata->req_id;
|
||||||
idemp_meta->data_version = metadata->data_version;
|
idemp_meta->data_version = metadata->data_version;
|
||||||
|
idemp_meta->n = n;
|
||||||
idemp_meta->enqueue_time = g_current_time;
|
idemp_meta->enqueue_time = g_current_time;
|
||||||
idemp_meta->next = NULL;
|
idemp_meta->next = NULL;
|
||||||
|
|
||||||
|
|
@ -221,9 +226,8 @@ int idempotency_request_metadata_add(
|
||||||
return (idemp_meta != NULL ? 0 : ENOMEM);
|
return (idemp_meta != NULL ? 0 : ENOMEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
int idempotency_request_metadata_get(
|
int idempotency_request_metadata_get(IdempotencyRequestMetadataContext
|
||||||
IdempotencyRequestMetadataContext *ctx,
|
*ctx, const int64_t req_id, int64_t *data_version, int *n)
|
||||||
const int64_t req_id, int64_t *data_version)
|
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
IdempotencyRequestMetadata *meta;
|
IdempotencyRequestMetadata *meta;
|
||||||
|
|
@ -235,6 +239,9 @@ int idempotency_request_metadata_get(
|
||||||
if (req_id == meta->req_id) {
|
if (req_id == meta->req_id) {
|
||||||
result = 0;
|
result = 0;
|
||||||
*data_version = meta->data_version;
|
*data_version = meta->data_version;
|
||||||
|
if (n != NULL) {
|
||||||
|
*n = meta->n;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
meta = meta->next;
|
meta = meta->next;
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,8 @@ typedef bool (*sf_is_master_callback)(void *arg, int64_t *data_version);
|
||||||
typedef struct idempotency_request_metadata {
|
typedef struct idempotency_request_metadata {
|
||||||
int64_t req_id;
|
int64_t req_id;
|
||||||
int64_t data_version;
|
int64_t data_version;
|
||||||
time_t enqueue_time;
|
int n; //integer argument
|
||||||
|
uint32_t enqueue_time;
|
||||||
struct idempotency_request_metadata *next;
|
struct idempotency_request_metadata *next;
|
||||||
} IdempotencyRequestMetadata;
|
} IdempotencyRequestMetadata;
|
||||||
|
|
||||||
|
|
@ -46,20 +47,17 @@ typedef struct idempotency_request_metadata_context {
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int idempotency_request_metadata_init(
|
int idempotency_request_metadata_init(IdempotencyRequestMetadataContext
|
||||||
IdempotencyRequestMetadataContext *ctx,
|
*ctx, sf_is_master_callback is_master_callback, void *arg);
|
||||||
sf_is_master_callback is_master_callback, void *arg);
|
|
||||||
|
|
||||||
int idempotency_request_metadata_start(const int process_interval_ms,
|
int idempotency_request_metadata_start(const int process_interval_ms,
|
||||||
const int master_side_timeout);
|
const int master_side_timeout);
|
||||||
|
|
||||||
int idempotency_request_metadata_add(
|
int idempotency_request_metadata_add(IdempotencyRequestMetadataContext
|
||||||
IdempotencyRequestMetadataContext *ctx,
|
*ctx, const SFRequestMetadata *metadata, const int n);
|
||||||
SFRequestMetadata *metadata);
|
|
||||||
|
|
||||||
int idempotency_request_metadata_get(
|
int idempotency_request_metadata_get(IdempotencyRequestMetadataContext
|
||||||
IdempotencyRequestMetadataContext *ctx,
|
*ctx, const int64_t req_id, int64_t *data_version, int *n);
|
||||||
const int64_t req_id, int64_t *data_version);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue