public ThreadRecorder init(int size, int level) { if(!recording) return null; ThreadRecorder recorder = recorders.get(Thread.currentThread()); // threadRecorder.get(); if (recorder != null) { if (recorder.timestamps.length != size) System.err.println("Flight recorder already initialized for thread " + Thread.currentThread() + " with size " + recorder.timestamps.length + ", which is different from the requested size of " + size); } else { recorder = new ThreadRecorder(size, level, aux); //threadRecorder.set(recorder); recorders.put(Thread.currentThread(), recorder); } System.err.println("STARTING FLIGHT RECORDER FOR THREAD " + Thread.currentThread() + " OF SIZE " + size); return recorder; }
System.err.println("===================="); for (Map.Entry<Thread, ThreadRecorder> entry : recorders.entrySet()) System.err.println("THREAD " + entry.getKey() + " TOTAL RECORDED: " + entry.getValue().getTotalRecs() + " AVAILABLE: " + entry.getValue().numOfElements());
public void record(int level, Object obj) { assert Thread.currentThread() == myThread : "my thread: " + myThread.getName() + " current thread: " + Thread.currentThread().getName(); if (!recording) return; if (level > this.level) return; // if (obj instanceof FlightRecorderMessage) { // FlightRecorderMessage frm = (FlightRecorderMessage) obj; // if (!Objects.equals(frm.getClazz(), "ParkableForkJoinTask") && !Objects.equals(frm.getClazz(), "Fiber")) // return; // } totalRecs++; timestamps[tail] = System.nanoTime(); payloads[tail] = obj; tail = next(tail); if (tail == head) head = next(head); // sync = true; }
System.err.println("===================="); for (Map.Entry<Thread, ThreadRecorder> entry : recorders.entrySet()) System.err.println("THREAD " + entry.getKey() + " TOTAL RECORDED: " + entry.getValue().getTotalRecs() + " AVAILABLE: " + entry.getValue().numOfElements());
/** * Returns the next message from the mailbox. If no message is currently available, this method blocks until a message arrives. * * @return a message sent to this actor. * @throws InterruptedException */ @Override public final Message receive() throws SuspendExecution, InterruptedException { try { for (;;) { checkThrownIn0(); record(1, "Actor", "receive", "%s waiting for a message", this); final Object m = mailbox().receive(); record(1, "Actor", "receive", "Received %s <- %s", this, m); if (Debug.isDebug() && flightRecorder != null && flightRecorder.get().recordsLevel(2)) record(2, "Actor", "receive", "%s queue %s", this, getQueueLength()); monitorAddMessage(); Message msg = filterMessage(m); if (msg != null) return msg; } } catch (InterruptedException e) { checkThrownIn0(); throw e; } }
public synchronized void dump(PrintStream ps) { ps.println("============================"); ps.println("=== FLIGHT RECORDER DUMP ==="); ps.println("============================"); ps.println(); ps.println("AVAILABLE RECORDERS"); ps.println("===================="); for (Map.Entry<Thread, ThreadRecorder> entry : recorders.entrySet()) ps.println("THREAD " + entry.getKey() + " TOTAL RECORDED: " + entry.getValue().getTotalRecs() + " AVAILABLE: " + entry.getValue().numOfElements()); ps.println(); ps.println("FLIGHT LOG"); ps.println("===================="); ps.println(); for (Record record : getRecords()) ps.println(record); ps.println(); ps.println("NO MORE RECORDS"); ps.println("===================="); } }
public synchronized void dump(PrintStream ps) { ps.println("============================"); ps.println("=== FLIGHT RECORDER DUMP ==="); ps.println("============================"); ps.println(); ps.println("AVAILABLE RECORDERS"); ps.println("===================="); for (Map.Entry<Thread, ThreadRecorder> entry : recorders.entrySet()) ps.println("THREAD " + entry.getKey() + " TOTAL RECORDED: " + entry.getValue().getTotalRecs() + " AVAILABLE: " + entry.getValue().numOfElements()); ps.println(); ps.println("FLIGHT LOG"); ps.println("===================="); ps.println(); for (Record record : getRecords()) ps.println(record); ps.println(); ps.println("NO MORE RECORDS"); ps.println("===================="); } }
public void record(int level, Object payload) { get().record(level, payload); }
private boolean isLast(int i) { return next(i) == tail; }
private boolean isLast(int i) { return next(i) == tail; }
public void record(int level, Object obj) { assert Thread.currentThread() == myThread : "my thread: " + myThread.getName() + " current thread: " + Thread.currentThread().getName(); if (!recording) return; if (level > this.level) return; totalRecs++; timestamps[tail] = System.nanoTime(); payloads[tail] = obj; tail = next(tail); if (tail == head) head = next(head); // sync = true; }
@Override protected final boolean trySend(Message message) { record(1, "Actor", "trySend", "Sending %s -> %s", message, this); if (Debug.isDebug() && flightRecorder != null && flightRecorder.get().recordsLevel(2)) record(2, "Actor", "trySend", "%s queue %s", this, getQueueLength()); if (mailbox().isOwnerAlive()) { if (mailbox().trySend(message)) return true; record(1, "Actor", "trySend", "Message not sent. Mailbox is not ready."); return false; } record(1, "Actor", "trySend", "Message dropped. Owner not alive."); return true; }
public ThreadRecorder init(int size, int level) { if (!recording) return null; ThreadRecorder recorder = recorders.get(Thread.currentThread()); // threadRecorder.get(); if (recorder != null) { if (recorder.timestamps.length != size) System.err.println("Flight recorder already initialized for thread " + Thread.currentThread() + " with size " + recorder.timestamps.length + ", which is different from the requested size of " + size); } else { recorder = new ThreadRecorder(size, level, aux); //threadRecorder.set(recorder); recorders.put(Thread.currentThread(), recorder); } System.err.println("STARTING FLIGHT RECORDER FOR THREAD " + Thread.currentThread() + " OF SIZE " + size + " AT LEVEL " + level); return recorder; }
private static void record(FlightRecorder.ThreadRecorder recorder, int level, String clazz, String method, String format, Object arg1, Object arg2, Object arg3) { if (recorder != null) recorder.record(level, makeFlightRecorderMessage(recorder, clazz, method, format, new Object[]{arg1, arg2, arg3})); }
private static void record(FlightRecorder.ThreadRecorder recorder, int level, String clazz, String method, String format, Object... args) { if (recorder != null) recorder.record(level, makeFlightRecorderMessage(recorder, clazz, method, format, args)); }
private static void record(FlightRecorder.ThreadRecorder recorder, int level, String clazz, String method, String format, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5) { if (recorder != null) recorder.record(level, makeFlightRecorderMessage(recorder, clazz, method, format, new Object[]{arg1, arg2, arg3, arg4, arg5})); }
private static void record(FlightRecorder.ThreadRecorder recorder, int level, String clazz, String method, String format, Object arg1, Object arg2, Object arg3) { if (recorder != null) recorder.record(level, makeFlightRecorderMessage(recorder, clazz, method, format, new Object[]{arg1, arg2, arg3})); }
public void record(int level, Object... objs) { record(level, (Object) objs); } }
private static void record(FlightRecorder.ThreadRecorder recorder, int level, String clazz, String method, String format, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7) { if (recorder != null) recorder.record(level, makeFlightRecorderMessage(recorder, clazz, method, format, new Object[]{arg1, arg2, arg3, arg4, arg5, arg6, arg7})); }
private static void record(FlightRecorder.ThreadRecorder recorder, int level, String clazz, String method, String format, Object arg1, Object arg2) { if (recorder != null) recorder.record(level, makeFlightRecorderMessage(recorder, clazz, method, format, new Object[]{arg1, arg2})); }