Skip to content

Commit

Permalink
Refactor metdata lookup process for tag deletion
Browse files Browse the repository at this point in the history
  • Loading branch information
houjun committed Jul 18, 2023
1 parent 22340ba commit 95a0aae
Showing 1 changed file with 27 additions and 33 deletions.
60 changes: 27 additions & 33 deletions src/server/pdc_server_metadata.c
Original file line number Diff line number Diff line change
Expand Up @@ -2795,70 +2795,64 @@ PDC_Server_del_kvtag(metadata_get_kvtag_in_t *in, metadata_add_tag_out_t *out)

#ifdef ENABLE_MULTITHREAD
// Obtain lock for hash table
unlocked = 0;
hg_thread_mutex_lock(&pdc_metadata_hash_table_mutex_g);
#endif

// Look cont tags first
cont_lookup_value = hash_table_lookup(container_hash_table_g, &hash_key);
if (cont_lookup_value != NULL) {
PDC_del_kvtag_value_from_list(&cont_lookup_value->kvtag_list_head, in->key);
out->ret = 1;
// Look obj tags first
lookup_value = hash_table_lookup(metadata_hash_table_g, &hash_key);
if (lookup_value != NULL) {
pdc_metadata_t *target;
target = find_metadata_by_id_from_list(lookup_value->metadata, obj_id);
if (target != NULL) {
ret_value = PDC_del_kvtag_value_from_list(&target->kvtag_list_head, in->key);
out->ret = 1;
}
else {
ret_value = FAIL;
out->ret = -1;
printf("==PDC_SERVER[%d]: %s - failed to find requested kvtag [%s]\n",
pdc_server_rank_g, __func__, in->key);
goto done;
}
}
else {
lookup_value = hash_table_lookup(metadata_hash_table_g, &hash_key);
if (lookup_value != NULL) {
pdc_metadata_t *target;
target = find_metadata_by_id_from_list(lookup_value->metadata, obj_id);
if (target != NULL) {
PDC_del_kvtag_value_from_list(&target->kvtag_list_head, in->key);
out->ret = 1;
}
else {
ret_value = FAIL;
out->ret = -1;
}
cont_lookup_value = hash_table_lookup(container_hash_table_g, &hash_key);
if (cont_lookup_value != NULL) {
PDC_del_kvtag_value_from_list(&cont_lookup_value->kvtag_list_head, in->key);
out->ret = 1;
}
else {
ret_value = FAIL;
out->ret = -1;
printf("==PDC_SERVER[%d]: %s - failed to find requested kvtag [%s]\n",
pdc_server_rank_g, __func__, in->key);
goto done;
}
}

if (ret_value != SUCCEED) {
printf("==PDC_SERVER[%d]: %s - error \n", pdc_server_rank_g, __func__);
goto done;
}

done:
#ifdef ENABLE_MULTITHREAD
// ^ Release hash table lock
hg_thread_mutex_unlock(&pdc_metadata_hash_table_mutex_g);
unlocked = 1;
#endif


#ifdef ENABLE_TIMING
// Timing
gettimeofday(&pdc_timer_end, 0);
ht_total_sec = PDC_get_elapsed_time_double(&pdc_timer_start, &pdc_timer_end);
#endif

#ifdef ENABLE_MULTITHREAD
hg_thread_mutex_lock(&pdc_time_mutex_g);
#endif

#ifdef ENABLE_TIMING
server_update_time_g += ht_total_sec;
#endif

#ifdef ENABLE_MULTITHREAD
hg_thread_mutex_unlock(&pdc_time_mutex_g);
#endif

done:
#ifdef ENABLE_MULTITHREAD
if (unlocked == 0)
hg_thread_mutex_unlock(&pdc_metadata_hash_table_mutex_g);
#endif
#endif // End ENABLE_TIMING

fflush(stdout);

FUNC_LEAVE(ret_value);
Expand Down

0 comments on commit 95a0aae

Please sign in to comment.