diff --git a/ovn/controller/binding.c b/ovn/controller/binding.c
index c0631ae..21eb2c8 100644
--- a/ovn/controller/binding.c
+++ b/ovn/controller/binding.c
@@ -362,7 +362,8 @@ consider_local_datapath(struct controller_ctx *ctx,
                         struct hmap *qos_map,
                         struct hmap *local_datapaths,
                         struct shash *lport_to_iface,
-                        struct sset *local_lports)
+                        struct sset *local_lports,
+                        bool update_sb)
 {
     const struct ovsrec_interface *iface_rec
         = shash_find_data(lport_to_iface, binding_rec->logical_port);
@@ -416,7 +417,7 @@ consider_local_datapath(struct controller_ctx *ctx,
         our_chassis = false;
     }
 
-    if (ctx->ovnsb_idl_txn) {
+    if (ctx->ovnsb_idl_txn && update_sb) {
         if (our_chassis) {
             if (binding_rec->chassis != chassis_rec) {
                 if (binding_rec->chassis) {
@@ -471,7 +472,8 @@ binding_run(struct controller_ctx *ctx, const struct ovsrec_bridge *br_int,
             const struct sbrec_chassis *chassis_rec,
             const struct ldatapath_index *ldatapaths,
             const struct lport_index *lports, struct hmap *local_datapaths,
-            struct sset *local_lports)
+            struct sset *local_lports,
+            bool update_sb)
 {
     if (!chassis_rec) {
         return;
@@ -496,7 +498,8 @@ binding_run(struct controller_ctx *ctx, const struct ovsrec_bridge *br_int,
                                 chassis_rec, binding_rec,
                                 sset_is_empty(&egress_ifaces) ? NULL :
                                 &qos_map, local_datapaths, &lport_to_iface,
-                                local_lports);
+                                local_lports,
+                                update_sb);
 
     }
 
diff --git a/ovn/controller/binding.h b/ovn/controller/binding.h
index 3bfa7d1..5b77f1a 100644
--- a/ovn/controller/binding.h
+++ b/ovn/controller/binding.h
@@ -32,7 +32,7 @@ void binding_register_ovs_idl(struct ovsdb_idl *);
 void binding_run(struct controller_ctx *, const struct ovsrec_bridge *br_int,
                  const struct sbrec_chassis *, const struct ldatapath_index *,
                  const struct lport_index *, struct hmap *local_datapaths,
-                 struct sset *all_lports);
+                 struct sset *all_lports, bool update_sb);
 bool binding_cleanup(struct controller_ctx *, const struct sbrec_chassis *);
 
 #endif /* ovn/binding.h */
diff --git a/ovn/controller/ovn-controller.c b/ovn/controller/ovn-controller.c
index 45a670b..5f21b20 100644
--- a/ovn/controller/ovn-controller.c
+++ b/ovn/controller/ovn-controller.c
@@ -244,7 +244,7 @@ create_br_int(struct controller_ctx *ctx,
 }
 
 static const struct ovsrec_bridge *
-get_br_int(struct controller_ctx *ctx)
+get_br_int(struct controller_ctx *ctx, bool need_create)
 {
     const struct ovsrec_open_vswitch *cfg;
     cfg = ovsrec_open_vswitch_first(ctx->ovs_idl);
@@ -257,7 +257,7 @@ get_br_int(struct controller_ctx *ctx)
 
     const struct ovsrec_bridge *br;
     br = get_bridge(ctx->ovs_idl, br_int_name);
-    if (!br) {
+    if (!br && need_create) {
         return create_br_int(ctx, cfg, br_int_name);
     }
     return br;
@@ -621,7 +621,7 @@ main(int argc, char *argv[])
          * local hypervisor, and localnet ports. */
         struct sset local_lports = SSET_INITIALIZER(&local_lports);
 
-        const struct ovsrec_bridge *br_int = get_br_int(&ctx);
+        const struct ovsrec_bridge *br_int = get_br_int(&ctx, true);
         const char *chassis_id = get_chassis_id(ctx.ovs_idl);
 
         struct ldatapath_index ldatapaths;
@@ -636,7 +636,7 @@ main(int argc, char *argv[])
             chassis = chassis_run(&ctx, chassis_id, br_int);
             encaps_run(&ctx, br_int, chassis_id);
             binding_run(&ctx, br_int, chassis, &ldatapaths, &lports,
-                        &local_datapaths, &local_lports);
+                        &local_datapaths, &local_lports, true);
         }
 
         if (br_int && chassis) {
@@ -758,7 +758,7 @@ main(int argc, char *argv[])
             .ovnsb_idl_txn = ovsdb_idl_loop_run(&ovnsb_idl_loop),
         };
 
-        const struct ovsrec_bridge *br_int = get_br_int(&ctx);
+        const struct ovsrec_bridge *br_int = get_br_int(&ctx, false);
         const char *chassis_id = get_chassis_id(ctx.ovs_idl);
         const struct sbrec_chassis *chassis
             = chassis_id ? get_chassis(ctx.ovnsb_idl, chassis_id) : NULL;
