diff --git a/src/box/applier.cc b/src/box/applier.cc
index ebaed8c2472828b872e415f7d88ad52759b3b732..616d879d5510bc3d6c94d8a0287b5dc99d1c7565 100644
--- a/src/box/applier.cc
+++ b/src/box/applier.cc
@@ -170,13 +170,14 @@ applier_check_sync(struct applier *applier)
  * but doesn't start it.
  */
 static struct fiber *
-applier_fiber_new(struct applier *applier, const char *name, fiber_func func)
+applier_fiber_new(struct applier *applier, const char *name, fiber_func func,
+		  bool is_joinable)
 {
 	char buf[FIBER_NAME_MAX];
 	int pos = snprintf(buf, sizeof(buf), "%s/", name);
 	uri_format(buf + pos, sizeof(buf) - pos, &applier->uri, false);
 	struct fiber *f = fiber_new_system_xc(buf, func);
-	fiber_set_joinable(f, true);
+	fiber_set_joinable(f, is_joinable);
 	return f;
 }
 
@@ -2160,12 +2161,13 @@ applier_thread_fiber_init(struct applier *applier)
 	assert(applier->thread.reader == NULL);
 	assert(applier->thread.writer == NULL);
 	applier->thread.reader = applier_fiber_new(applier, "reader",
-						   applier_thread_reader_f);
+						   applier_thread_reader_f,
+						   true);
 	fiber_start(applier->thread.reader, applier);
 	if (applier->version_id >= version_id(1, 7, 4)) {
 		/* Enable replication ACKs for newer servers */
 		applier->thread.writer = applier_fiber_new(
-			applier, "writer", applier_thread_writer_f);
+			applier, "writer", applier_thread_writer_f, true);
 		fiber_start(applier->thread.writer, applier);
 	}
 
@@ -2631,7 +2633,7 @@ void
 applier_start(struct applier *applier)
 {
 	assert(applier->fiber == NULL);
-	applier->fiber = applier_fiber_new(applier, "applier", applier_f);
+	applier->fiber = applier_fiber_new(applier, "applier", applier_f, true);
 	fiber_start(applier->fiber, applier);
 }