diff --git a/apps/t3/app/src/main/java/org/onosproject/t3/impl/McastGenerator.java b/apps/t3/app/src/main/java/org/onosproject/t3/impl/McastGenerator.java
index a5022a2..e93af15 100644
--- a/apps/t3/app/src/main/java/org/onosproject/t3/impl/McastGenerator.java
+++ b/apps/t3/app/src/main/java/org/onosproject/t3/impl/McastGenerator.java
@@ -40,6 +40,9 @@
     private static final Logger log = getLogger(McastGenerator.class);
     protected static final MacAddress IPV4_ADDRESS = MacAddress.valueOf("01:00:5E:00:00:00");
     protected static final MacAddress IPV6_ADDRESS = MacAddress.valueOf("33:33:00:00:00:00");
+    private static final String NO_SINK = "There is no sink for this mcast route";
+    private static final String GENERATOR_ERROR =
+            "Generator for mcast route trace has benn interrupted. The trace result may be incomplete.";
 
     private final MulticastRouteService mcastService;
     private final TroubleshootManager manager;
@@ -77,16 +80,27 @@
                                 .matchIPv6Dst(group.toIpPrefix())
                                 .matchEthType(EthType.EtherType.IPV6.ethType().toShort());
                     }
+
+                    StaticPacketTrace trace;
+                    // check this mcast route has no sink
+                    if (routeData.allSinks().size() == 0) {
+                        trace = new StaticPacketTrace(selector.build(), source);
+                        trace.addResultMessage(NO_SINK);
+                        // tracing mcast route with no sink is not a failure
+                        trace.setSuccess(true);
+                    } else {
+                        trace = manager.trace(selector.build(), source);
+                    }
                     try {
-                        yield(ImmutableSet.of(manager.trace(selector.build(), source)));
+                        yield(ImmutableSet.of(trace));
                     } catch (InterruptedException e) {
                         log.warn("Interrupted generator", e.getMessage());
                         log.debug("exception", e);
+                        trace.setSuccess(false);
+                        trace.addResultMessage(GENERATOR_ERROR);
                     }
                 });
             });
-
         });
-
     }
 }
