diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java
index 210a94d..6c9ef8d 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java
@@ -206,15 +206,21 @@
                 inputSideHandler.setFinished(true);
             }
             coreOperator.close();
-            System.out.println("CLOSED " + coreOperator + " STALLED ?" + stalled + " ENDED " + end);
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.fine("CLOSED " + coreOperator + " STALLED ?" + stalled + " ENDED " + end);
+            }
         } catch (InterruptedException e) {
             throw new HyracksDataException(e);
         } finally {
             if (!stalled) {
                 deregister();
-                System.out.println("DEREGISTERING " + this.feedRuntime.getRuntimeId());
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.fine("DEREGISTERING " + this.feedRuntime.getRuntimeId());
+                }
             } else {
-                System.out.println("NOT DEREGISTERING " + this.feedRuntime.getRuntimeId());
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.fine("NOT DEREGISTERING " + this.feedRuntime.getRuntimeId());
+                }
             }
             inputSideHandler.close();
             if (LOGGER.isLoggable(Level.INFO)) {
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaStoreNodePushable.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaStoreNodePushable.java
index 7150210..f11b948 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaStoreNodePushable.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaStoreNodePushable.java
@@ -191,12 +191,16 @@
 
     @Override
     public void close() throws HyracksDataException {
-        System.out.println("CLOSE CALLED FOR " + this.feedRuntime.getRuntimeId());
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("CLOSE CALLED FOR " + this.feedRuntime.getRuntimeId());
+        }
         boolean stalled = inputSideHandler.getMode().equals(Mode.STALL);
         try {
             if (!stalled) {
-                System.out.println("SIGNALLING END OF DATA for " + this.feedRuntime.getRuntimeId() + " mode is "
-                        + inputSideHandler.getMode() + " WAITING ON " + coreOperator);
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.fine("SIGNALLING END OF DATA for " + this.feedRuntime.getRuntimeId() + " mode is "
+                            + inputSideHandler.getMode() + " WAITING ON " + coreOperator);
+                }
                 inputSideHandler.nextFrame(null); // signal end of data
                 while (!inputSideHandler.isFinished()) {
                     synchronized (coreOperator) {
@@ -206,7 +210,9 @@
                         coreOperator.wait();
                     }
                 }
-                System.out.println("ABOUT TO CLOSE OPERATOR  " + coreOperator);
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.fine("ABOUT TO CLOSE OPERATOR  " + coreOperator);
+                }
             }
             coreOperator.close();
         } catch (Exception e) {
@@ -214,9 +220,13 @@
         } finally {
             if (!stalled) {
                 deregister();
-                System.out.println("DEREGISTERING " + this.feedRuntime.getRuntimeId());
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.fine("DEREGISTERING " + this.feedRuntime.getRuntimeId());
+                }
             } else {
-                System.out.println("NOT DEREGISTERING " + this.feedRuntime.getRuntimeId());
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.fine("NOT DEREGISTERING " + this.feedRuntime.getRuntimeId());
+                }
             }
             inputSideHandler.close();
             if (LOGGER.isLoggable(Level.INFO)) {
diff --git a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTest.java b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTest.java
index 32ce485..572460e 100644
--- a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTest.java
+++ b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTest.java
@@ -49,7 +49,7 @@
      * Rigourous Test :-)
      */
     public void test() {
-        String[] args = { "", "-d", "-vv", "-all" };
+        String[] args = { "", "-d", "-all" };
         try {
             ClassAdUnitTester.test(args.length, args, new ClassAdObjectPool());
         } catch (Throwable e) {
