Improve internal signal handling
authorFrancois Chouinard <fchouinard@gmail.com>
Fri, 11 Mar 2011 18:40:49 +0000 (13:40 -0500)
committerFrancois Chouinard <fchouinard@gmail.com>
Fri, 11 Mar 2011 18:40:49 +0000 (13:40 -0500)
14 files changed:
org.eclipse.linuxtools.lttng.tests/traceset/.gitignore [new file with mode: 0644]
org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramRequest.java
org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/experiment/StateExperimentManager.java
org.eclipse.linuxtools.tmf/.options
org.eclipse.linuxtools.tmf/ChangeLog
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/Tracer.java
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfDataRequest.java
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfEventRequest.java
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/signal/TmfSignalManager.java
org.eclipse.linuxtools.tmf/traceset/.gitignore [new file with mode: 0644]

diff --git a/org.eclipse.linuxtools.lttng.tests/traceset/.gitignore b/org.eclipse.linuxtools.lttng.tests/traceset/.gitignore
new file mode 100644 (file)
index 0000000..cbd138f
--- /dev/null
@@ -0,0 +1,2 @@
+/trace-15316events_nolost_newformat
+/trace-15471events_nolost_newformat
index c21816d19f85833c630614981fe3ffbef81e5461..3fa66dbb454a3c458c82766c4670ef9a68f1136b 100644 (file)
@@ -204,6 +204,7 @@ public class HistogramRequest extends TmfEventRequest<LttngEvent> {
     @Override
     public void handleCancel() {
        redrawAsyncronously();
+               super.handleCancel();
     }
        
     /**
index 30aa439630b2d45166aad8a47c8c8d6463cf2163..1093ec595934b56e557454c394e2b2affb8582ea 100644 (file)
@@ -387,6 +387,7 @@ public class StateExperimentManager extends LTTngTreeNode implements
                        @Override
                        public void handleFailure() {
                                printCompletedMessage();
+                               super.handleFailure();
                        }
 
                        /*
@@ -398,6 +399,7 @@ public class StateExperimentManager extends LTTngTreeNode implements
                        @Override
                        public void handleCancel() {
                                printCompletedMessage();
+                               super.handleCancel();
                        }
 
                        /*
@@ -409,6 +411,7 @@ public class StateExperimentManager extends LTTngTreeNode implements
                        @Override
                        public void handleSuccess() {
                                printCompletedMessage();
+                               super.handleSuccess();
                        }
 
                        /**
index 290591c805fd62dd7d39c06e232599c741628875..dcc5d6bca43f2b897fc11f35919ea96095905a15 100644 (file)
@@ -4,5 +4,5 @@ org.eclipse.linuxtools.tmf/info=false
 
 org.eclipse.linuxtools.tmf/component=false
 org.eclipse.linuxtools.tmf/request=false
-org.eclipse.linuxtools.tmf/signals=false
+org.eclipse.linuxtools.tmf/signal=false
 org.eclipse.linuxtools.tmf/event=false
index 31c73819108c818f93c9ff57e9dcec5644987059..2ad58a7fcfcae3fb546738e67406bc05dba6ebd8 100644 (file)
@@ -1,3 +1,15 @@
+2011-03-10  Francois Chouinard  <fchouinard@gmail.com>
+
+    * src/org/eclipse/linuxtools/tmf/.options: Fixed a typo
+       * src/org/eclipse/linuxtools/tmf/signal/TmfSignalManager.java: Improved request tracing
+       * src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java: Improved request tracing
+       * src/org/eclipse/linuxtools/tmf/request/TmfEventRequest.java: Streamlined constructor
+       * src/org/eclipse/linuxtools/tmf/request/TmfDataRequest.java: Improved request tracing
+       * src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java: Improved request tracing
+       * src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java: Improved request tracing
+       * src/org/eclipse/linuxtools/tmf/Tracer.java: Improved request tracing
+    * src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java: Fixed request completion call
+       
 2010-12-13  Bernd Hufmann  <bhufmann@gmail.com>
 
        * src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java (armRequest): For data requests, seek only if necessary   
index 27d25c3e530b276b95aee0d7dc641d73b7eafbe8..69f30deb1fbc639a283faaf510fdecac9c43e8ce 100644 (file)
@@ -9,6 +9,7 @@ import org.eclipse.linuxtools.tmf.component.ITmfComponent;
 import org.eclipse.linuxtools.tmf.component.ITmfDataProvider;\r
 import org.eclipse.linuxtools.tmf.event.TmfData;\r
 import org.eclipse.linuxtools.tmf.request.ITmfDataRequest;\r
+import org.eclipse.linuxtools.tmf.signal.TmfSignal;\r
 \r
 @SuppressWarnings("nls")\r
 public class Tracer {\r
@@ -115,6 +116,10 @@ public class Tracer {
                return REQUEST;\r
        }\r
        \r
+       public static boolean isSignalTraced() {\r
+               return SIGNAL;\r
+       }\r
+       \r
        public static boolean isEventTraced() {\r
                return EVENT;\r
        }\r
@@ -125,7 +130,7 @@ public class Tracer {
                StringBuilder message = new StringBuilder("[");\r
                message.append(currentTime / 1000);\r
                message.append(".");\r
-               message.append(currentTime % 1000);\r
+               message.append(String.format("%1$03d", currentTime % 1000));\r
                message.append("] ");\r
                message.append(msg);\r
 //             System.out.println(message);\r
@@ -147,10 +152,16 @@ public class Tracer {
        }\r
 \r
        public static void traceRequest(ITmfDataRequest<?> request, String msg) {\r
-               String message = ("[REQ] Thread=" + Thread.currentThread().getId() + " Req=" + request.getRequestId() + \r
-                               (request.getExecType() == ITmfDataRequest.ExecutionType.BACKGROUND ? "(BG)" : "(FG)") +\r
-                               ", Type=" + request.getClass().getName() + \r
-                               ", DataType=" + request.getDataType().getSimpleName() + " " + msg);\r
+               String message = ("[REQ] Req=" + request.getRequestId() + \r
+               (request.getExecType() == ITmfDataRequest.ExecutionType.BACKGROUND ? " (BG)" : " (FG)") +\r
+               " Thread=" + Thread.currentThread().getId() + \r
+               " Type=" + request.getClass().getName() + \r
+               " DataType=" + request.getDataType().getSimpleName() + " " + msg);\r
+               trace(message);\r
+       }\r
+\r
+       public static void traceSignal(TmfSignal signal, String msg) {\r
+               String message = ("[SIG] Type=" + signal.getClass().getSimpleName() + " Target=" + msg);\r
                trace(message);\r
        }\r
 \r
index 7d24f5063a397f9450bd2716bfdd08512ff356ed..3174650f94fd34f4a2a605d983ebcfb6d6d94a06 100644 (file)
@@ -198,8 +198,7 @@ public abstract class TmfDataProvider<T extends TmfData> extends TmfComponent im
                                        fType, request.getIndex(), request.getNbRequested(),request.getExecType());
                        coalescedRequest.addRequest(request);
                if (Tracer.isRequestTraced()) {
-                       Tracer.traceRequest(request, "coalesced with " + coalescedRequest.getRequestId()); //$NON-NLS-1$
-                       Tracer.traceRequest(coalescedRequest,  "added " + request.getRequestId()); //$NON-NLS-1$
+                       Tracer.traceRequest(request, "coalesced with " + coalescedRequest.getRequestId()); //$NON-NLS-1$
                }
                        fPendingCoalescedRequests.add(coalescedRequest);
                }
@@ -207,12 +206,11 @@ public abstract class TmfDataProvider<T extends TmfData> extends TmfComponent im
 
        protected void coalesceDataRequest(ITmfDataRequest<T> request) {
                synchronized(fLock) {
-                       for (TmfCoalescedDataRequest<T> req : fPendingCoalescedRequests) {
-                               if (req.isCompatible(request)) {
-                                       req.addRequest(request);
+                       for (TmfCoalescedDataRequest<T> coalescedRequest : fPendingCoalescedRequests) {
+                               if (coalescedRequest.isCompatible(request)) {
+                                       coalescedRequest.addRequest(request);
                                if (Tracer.isRequestTraced()) {
-                                       Tracer.traceRequest(request, "coalesced with " + req.getRequestId()); //$NON-NLS-1$
-                                       Tracer.traceRequest(req,  "added " + request.getRequestId()); //$NON-NLS-1$
+                                       Tracer.traceRequest(request, "coalesced with " + coalescedRequest.getRequestId()); //$NON-NLS-1$
                                }
                                        return;
                                }
@@ -247,7 +245,7 @@ public abstract class TmfDataProvider<T extends TmfData> extends TmfComponent im
                        @Override
                        public void run() {
 
-                               if (Tracer.isRequestTraced()) Tracer.traceRequest(request, "started"); //$NON-NLS-1$
+                               if (Tracer.isRequestTraced()) Tracer.trace("Request #" + request.getRequestId() + " is being serviced by " + provider.getName());  //$NON-NLS-1$//$NON-NLS-2$
 
                                // Extract the generic information
                                request.start();
@@ -263,7 +261,6 @@ public abstract class TmfDataProvider<T extends TmfData> extends TmfComponent im
 
                                try {
                                        // Get the ordered events
-                                       if (Tracer.isRequestTraced()) Tracer.trace("Request #" + request.getRequestId() + " is being serviced by " + provider.getName());  //$NON-NLS-1$//$NON-NLS-2$
                                        T data = getNext(context);
                                        if (Tracer.isRequestTraced()) Tracer.trace("Request #" + request.getRequestId() + " read first event"); //$NON-NLS-1$ //$NON-NLS-2$
                                        while (data != null && !isCompleted(request, data, nbRead))
@@ -274,11 +271,9 @@ public abstract class TmfDataProvider<T extends TmfData> extends TmfComponent im
                                                // To avoid an unnecessary read passed the last data requested
                                                if (++nbRead < nbRequested) {
                                                        data = getNext(context);
-                                                       if (Tracer.isRequestTraced() && (data == null || data.isNullRef())) {
-                                                               Tracer.trace("Request #" + request.getRequestId() + " end of data");  //$NON-NLS-1$//$NON-NLS-2$
-                                                       }
                                                }
                                        }
+                                       if (Tracer.isRequestTraced()) Tracer.trace("Request #" + request.getRequestId() + " finished");  //$NON-NLS-1$//$NON-NLS-2$
 
                                        if (request.isCancelled()) {
                                                request.cancel();                                           
@@ -286,19 +281,16 @@ public abstract class TmfDataProvider<T extends TmfData> extends TmfComponent im
                                        else {
                                                request.done();
                                        }
-
-                                       if (Tracer.isRequestTraced()) Tracer.traceRequest(request, "completed"); //$NON-NLS-1$
                                }
                                catch (Exception e) {
-                               if (Tracer.isRequestTraced()) Tracer.traceRequest(request, "exception (failed)"); //$NON-NLS-1$
                                        request.fail();
                                }
                        }
                };
 
+        if (Tracer.isRequestTraced()) Tracer.traceRequest(request, "queued"); //$NON-NLS-1$
                fExecutor.execute(thread);
 
-        if (Tracer.isRequestTraced()) Tracer.traceRequest(request, "queued"); //$NON-NLS-1$
        }
 
        // By default, same behavior as a foreground request
index 1cbbf7e7d14e68509b373d06f004b1fe5e2e2dac..1cf2e7927617b65a12aa7c12ed0e0c4885e77c66 100644 (file)
@@ -57,7 +57,6 @@ public abstract class TmfEventProvider<T extends TmfEvent> extends TmfDataProvid
                        coalescedRequest.addRequest(eventRequest);
                if (Tracer.isRequestTraced()) {
                        Tracer.traceRequest(request, "coalesced with " + coalescedRequest.getRequestId()); //$NON-NLS-1$
-                       Tracer.traceRequest(coalescedRequest, "added " + request.getRequestId()); //$NON-NLS-1$
                }
                        fPendingCoalescedRequests.add(coalescedRequest);
                }
index c580d90cf10825ab37d3311253e8467690fe62f7..be173777738422dabb17c8ca60fd7bdf52c89bd7 100644 (file)
@@ -705,6 +705,7 @@ public class TmfExperiment<T extends TmfEvent> extends TmfEventProvider<T> imple
 //                             long average = (indexingEnd - indexingStart) / fNbEvents;
 //                             System.out.println(getName() + ": start=" + startTime + ", end=" + lastTime + ", elapsed=" + (indexingEnd * 1.0 - indexingStart) / 1000000000);
 //                             System.out.println(getName() + ": nbEvents=" + fNbEvents + " (" + (average / 1000) + "." + (average % 1000) + " us/evt)");
+                               super.handleSuccess();
                        }
 
                        private void updateExperiment() {
index 030d814adaf5033e94c9cffe080bd528a797a53b..7eba296f22e7de20cf2e01fdab2f12e57fe63efc 100644 (file)
@@ -272,6 +272,7 @@ public abstract class TmfDataRequest<T extends TmfData> implements ITmfDataReque
      * 
      * @param data Data value to set.
      */
+
     /**
      * Handle a block of incoming data. This method is called every time
      * a block of data becomes available.
@@ -296,6 +297,7 @@ public abstract class TmfDataRequest<T extends TmfData> implements ITmfDataReque
 
     @Override
        public void handleStarted() {
+        if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "started"); //$NON-NLS-1$
     }
 
     /**
@@ -311,29 +313,30 @@ public abstract class TmfDataRequest<T extends TmfData> implements ITmfDataReque
     @Override
        public void handleCompleted() {
        if (fRequestFailed) { 
-            if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "failed"); //$NON-NLS-1$
                handleFailure();
        }
        else if (fRequestCanceled) {
-            if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "cancelled"); //$NON-NLS-1$
                handleCancel();
        }
        else {
-            if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "succeeded"); //$NON-NLS-1$
                        handleSuccess();
        }
+        if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "completed"); //$NON-NLS-1$
     }
 
     @Override
        public void handleSuccess() {
+        if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "succeeded"); //$NON-NLS-1$
     }
 
     @Override
        public void handleFailure() {
+        if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "failed"); //$NON-NLS-1$
     }
 
     @Override
        public void handleCancel() {
+        if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "cancelled"); //$NON-NLS-1$
     }
 
     /**
@@ -366,13 +369,11 @@ public abstract class TmfDataRequest<T extends TmfData> implements ITmfDataReque
      */
     @Override
        public void start() {
-        if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "starting"); //$NON-NLS-1$
         synchronized(this) {
             fRequestRunning = true;
         }
         handleStarted();
         startedLatch.countDown();
-        if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "started"); //$NON-NLS-1$
     }
 
     /**
@@ -380,7 +381,6 @@ public abstract class TmfDataRequest<T extends TmfData> implements ITmfDataReque
      */
     @Override
        public void done() {
-        if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "completing"); //$NON-NLS-1$
         synchronized(this) {
                if (!fRequestCompleted) {
                fRequestRunning   = false;
index 2c510d74b4ca4d5ced381d39499a01737f658de9..f86793dc4b918bfec2645c835fe35349378f67c3 100644 (file)
@@ -72,8 +72,7 @@ public abstract class TmfEventRequest<T extends TmfEvent> extends TmfDataRequest
      * @param blockSize Size of the largest blocks expected
      */
     public TmfEventRequest(Class<T> dataType, TmfTimeRange range, int nbRequested, int blockSize) {
-       super(dataType, 0, nbRequested, blockSize, ExecutionType.FOREGROUND);
-       fRange = range;
+       this(dataType, range, nbRequested, blockSize, ExecutionType.FOREGROUND);
     }
 
     public TmfEventRequest(Class<T> dataType, TmfTimeRange range, int nbRequested, int blockSize, ExecutionType execType) {
index 6f1aff448db76d39019daf1118fc747b7d25f780..a459cf8fbc9973c817a29dd4a33bd77022d45573 100644 (file)
@@ -101,7 +101,6 @@ public class TmfRequestExecutor implements Executor {
                        public void run() {
                                try {
                                        requestThread.run();
-                                   if (Tracer.isRequestTraced()) Tracer.trace("[REQ] Request finished"); //$NON-NLS-1$
                                } finally {
                                        scheduleNext();
                                }
index a88c9200561ef976f2301490c8fc5c52b831bcd7..fc3e0d348e3d53b81291369e33c1d98c91107091 100644 (file)
@@ -19,6 +19,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.eclipse.linuxtools.tmf.Tracer;
+
 /**
  * <b><u>TmfSignalHandler</u></b>
  * <p>
@@ -93,11 +95,12 @@ public class TmfSignalManager {
                signal.setReference(fSignalId);
                sendSignal(signal);
                sendSignal(new TmfEndSynchSignal(fSignalId));
-///            Tracer.traceSignal(signal);
        }
 
        static private void sendSignal(TmfSignal signal) {
 
+               if (Tracer.isSignalTraced()) Tracer.traceSignal(signal, "(start)"); //$NON-NLS-1$
+
                // Build the list of listener methods that are registered for this signal
                Class<?> signalClass = signal.getClass();
                Map<Object, List<Method>> listeners = new HashMap<Object, List<Method>>();
@@ -119,6 +122,12 @@ public class TmfSignalManager {
                        for (Method method : entry.getValue()) {
                                try {
                                        method.invoke(entry.getKey(), new Object[] { signal });
+                                       if (Tracer.isSignalTraced()) {
+                                               Object key = entry.getKey();
+                                               String hash = String.format("%1$08X", entry.getKey().hashCode()); //$NON-NLS-1$
+                                               String target = "[" + hash + "] " + key.getClass().getSimpleName() + ":" + method.getName();   //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+                                               Tracer.traceSignal(signal, target);                                             
+                                       }
                                } catch (IllegalArgumentException e) {
                                        // TODO Auto-generated catch block
                                } catch (IllegalAccessException e) {
@@ -128,6 +137,8 @@ public class TmfSignalManager {
                                }
                        }
                }
-       }
+
+               if (Tracer.isSignalTraced()) Tracer.traceSignal(signal, "(end)"); //$NON-NLS-1$
+}
 
 }
\ No newline at end of file
diff --git a/org.eclipse.linuxtools.tmf/traceset/.gitignore b/org.eclipse.linuxtools.tmf/traceset/.gitignore
new file mode 100644 (file)
index 0000000..cbd138f
--- /dev/null
@@ -0,0 +1,2 @@
+/trace-15316events_nolost_newformat
+/trace-15471events_nolost_newformat
This page took 0.03618 seconds and 5 git commands to generate.