diff --git a/src/box/blackhole.c b/src/box/blackhole.c
index 96b9fd147977ef5ba0a89ac5eb94c2a333d700e4..f979304eb175c543d133de7c6d0a9bf7803f0332 100644
--- a/src/box/blackhole.c
+++ b/src/box/blackhole.c
@@ -206,5 +206,6 @@ blackhole_engine_new(void)
 
 	engine->vtab = &blackhole_engine_vtab;
 	engine->name = "blackhole";
+	engine->flags = ENGINE_BYPASS_TX;
 	return engine;
 }
diff --git a/test/box/blackhole.result b/test/box/blackhole.result
index a985fcd7236cc21c320f11d0ae0fd4c9262adbcd..945b2755cd5a4fa8c93b6dd263dea25076b300b0 100644
--- a/test/box/blackhole.result
+++ b/test/box/blackhole.result
@@ -95,6 +95,58 @@ s:on_replace(nil, f1)
 s:before_replace(nil, f2)
 ---
 ...
+-- Blackhole statements can be mixed in other engines' transactions.
+memtx = box.schema.space.create('memtx', {engine = 'memtx'})
+---
+...
+_ = memtx:create_index('pk')
+---
+...
+test_run:cmd("setopt delimiter ';'")
+---
+- true
+...
+box.begin()
+s:replace{1}
+memtx:replace{1}
+s:replace{2}
+memtx:replace{2}
+box.commit();
+---
+...
+test_run:cmd("setopt delimiter ''");
+---
+- true
+...
+memtx:select()
+---
+- - [1]
+  - [2]
+...
+f = s:on_replace(function(old, new) memtx:replace(new) end)
+---
+...
+s:replace{3}
+---
+- [3]
+...
+s:replace{4}
+---
+- [4]
+...
+memtx:select()
+---
+- - [1]
+  - [2]
+  - [3]
+  - [4]
+...
+s:on_replace(nil, f)
+---
+...
+memtx:drop()
+---
+...
 -- Test recovery.
 test_run:cmd('restart server default')
 s = box.space.test
diff --git a/test/box/blackhole.test.lua b/test/box/blackhole.test.lua
index 5dcf9e6181ba1d40a692fcb8d3468eb088aab057..bcf05f3a648659c0ae9ecaab9469ded807693860 100644
--- a/test/box/blackhole.test.lua
+++ b/test/box/blackhole.test.lua
@@ -33,6 +33,25 @@ s_old, s_new
 s:on_replace(nil, f1)
 s:before_replace(nil, f2)
 
+-- Blackhole statements can be mixed in other engines' transactions.
+memtx = box.schema.space.create('memtx', {engine = 'memtx'})
+_ = memtx:create_index('pk')
+test_run:cmd("setopt delimiter ';'")
+box.begin()
+s:replace{1}
+memtx:replace{1}
+s:replace{2}
+memtx:replace{2}
+box.commit();
+test_run:cmd("setopt delimiter ''");
+memtx:select()
+f = s:on_replace(function(old, new) memtx:replace(new) end)
+s:replace{3}
+s:replace{4}
+memtx:select()
+s:on_replace(nil, f)
+memtx:drop()
+
 -- Test recovery.
 test_run:cmd('restart server default')
 s = box.space.test