summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
Diffstat (limited to 'xlators')
-rw-r--r--xlators/features/changelog/lib/src/gf-changelog-journal-handler.c9
-rw-r--r--xlators/features/changelog/lib/src/gf-changelog.c13
2 files changed, 14 insertions, 8 deletions
diff --git a/xlators/features/changelog/lib/src/gf-changelog-journal-handler.c b/xlators/features/changelog/lib/src/gf-changelog-journal-handler.c
index 2975b06757f..f07d341ddef 100644
--- a/xlators/features/changelog/lib/src/gf-changelog-journal-handler.c
+++ b/xlators/features/changelog/lib/src/gf-changelog-journal-handler.c
@@ -790,13 +790,16 @@ gf_changelog_init_processor (gf_changelog_journal_t *jnl)
goto cleanup_mutex;
INIT_LIST_HEAD (&jnl_proc->entries);
+ jnl_proc->waiting = _gf_false;
+ jnl->jnl_proc = jnl_proc;
+
ret = pthread_create (&jnl_proc->processor,
NULL, gf_changelog_process, jnl);
- if (ret != 0)
+ if (ret != 0) {
+ jnl->jnl_proc = NULL;
goto cleanup_cond;
- jnl_proc->waiting = _gf_false;
+ }
- jnl->jnl_proc = jnl_proc;
return 0;
cleanup_cond:
diff --git a/xlators/features/changelog/lib/src/gf-changelog.c b/xlators/features/changelog/lib/src/gf-changelog.c
index 82abc662632..874ffd0d13b 100644
--- a/xlators/features/changelog/lib/src/gf-changelog.c
+++ b/xlators/features/changelog/lib/src/gf-changelog.c
@@ -292,11 +292,6 @@ gf_init_event (gf_changelog_t *entry)
ev->next_seq = 0; /* bootstrap sequencing */
- ret = gf_thread_create (&ev->invoker, NULL,
- gf_changelog_callback_invoker, ev);
- if (ret != 0)
- goto cleanup_cond;
-
if (GF_NEED_ORDERED_EVENTS (entry)) {
entry->pickevent = pick_event_ordered;
entry->queueevent = queue_ordered_event;
@@ -305,6 +300,14 @@ gf_init_event (gf_changelog_t *entry)
entry->queueevent = queue_unordered_event;
}
+ ret = gf_thread_create (&ev->invoker, NULL,
+ gf_changelog_callback_invoker, ev);
+ if (ret != 0) {
+ entry->pickevent = NULL;
+ entry->queueevent = NULL;
+ goto cleanup_cond;
+ }
+
return 0;
cleanup_cond: