diff --git a/swift/obj/replicator.py b/swift/obj/replicator.py
index 08d50f1e1f..0cecc3bd54 100644
--- a/swift/obj/replicator.py
+++ b/swift/obj/replicator.py
@@ -100,9 +100,10 @@ class ObjectReplicator(Daemon):
         self.handoff_delete = config_auto_int_value(
             conf.get('handoff_delete', 'auto'), 0)
         if any((self.handoff_delete, self.handoffs_first)):
-            self.logger.warn('handoffs_first and handoff_delete should be'
-                             ' changed back to the default before the next'
-                             ' normal rebalance')
+            self.logger.warn('Handoff only mode is not intended for normal '
+                             'operation, please disable handoffs_first and '
+                             'handoff_delete before the next '
+                             'normal rebalance')
         self._diskfile_mgr = DiskFileManager(conf, self.logger)
 
     # Just exists for doc anchor point
diff --git a/test/unit/__init__.py b/test/unit/__init__.py
index a6c5001c3c..ae9723a346 100644
--- a/test/unit/__init__.py
+++ b/test/unit/__init__.py
@@ -510,6 +510,8 @@ class FakeLogger(logging.Logger, object):
         self.lines_dict = {'critical': [], 'error': [], 'info': [],
                            'warning': [], 'debug': [], 'notice': []}
 
+    clear = _clear  # this is a public interface
+
     def get_lines_for_level(self, level):
         if level not in self.lines_dict:
             raise KeyError(
diff --git a/test/unit/obj/test_replicator.py b/test/unit/obj/test_replicator.py
index 2734f247a5..2919eb26cb 100644
--- a/test/unit/obj/test_replicator.py
+++ b/test/unit/obj/test_replicator.py
@@ -185,21 +185,32 @@ class TestObjectReplicator(unittest.TestCase):
         rmtree(self.testdir, ignore_errors=1)
 
     def test_handoff_replication_setting_warnings(self):
-        conf = {'handoffs_first': 'true'}
-        replicator = object_replicator.ObjectReplicator(
-            conf, logger=self.logger)
-        self.assertTrue(replicator.handoffs_first)
-        log_message = 'handoffs_first and handoff_delete should'\
-                      ' be changed back to the default before the'\
-                      ' next normal rebalance'
-        expected = [log_message]
-        self.assertEqual(self.logger.get_lines_for_level('warning'), expected)
-        conf = {'handoff_delete': '2'}
-        replicator = object_replicator.ObjectReplicator(
-            conf, logger=self.logger)
-        self.assertEqual(replicator.handoff_delete, 2)
-        expected.append(log_message)
-        self.assertEqual(self.logger.get_lines_for_level('warning'), expected)
+        conf_tests = [
+            # (config, expected_warning)
+            ({}, False),
+            ({'handoff_delete': 'auto'}, False),
+            ({'handoffs_first': 'no'}, False),
+            ({'handoff_delete': '2'}, True),
+            ({'handoffs_first': 'yes'}, True),
+            ({'handoff_delete': '1', 'handoffs_first': 'yes'}, True),
+        ]
+        log_message = 'Handoff only mode is not intended for normal ' \
+            'operation, please disable handoffs_first and ' \
+            'handoff_delete before the next normal rebalance'
+        for config, expected_warning in conf_tests:
+            self.logger.clear()
+            object_replicator.ObjectReplicator(config, logger=self.logger)
+            warning_log_lines = self.logger.get_lines_for_level('warning')
+            if expected_warning:
+                expected_log_lines = [log_message]
+            else:
+                expected_log_lines = []
+            self.assertEqual(expected_log_lines, warning_log_lines,
+                             'expected %s != %s for config %r' % (
+                                 expected_log_lines,
+                                 warning_log_lines,
+                                 config,
+                             ))
 
     def _write_disk_data(self, disk_name):
         os.mkdir(os.path.join(self.devices, disk_name))