Dolda2000 GitWeb
/
jagi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
31f44c3
)
Log errors when closing watchers.
author
Fredrik Tolf
<fredrik@dolda2000.com>
Wed, 16 Feb 2022 18:25:11 +0000
(19:25 +0100)
committer
Fredrik Tolf
<fredrik@dolda2000.com>
Wed, 16 Feb 2022 18:25:11 +0000
(19:25 +0100)
src/jagi/event/Driver.java
patch
|
blob
|
blame
|
history
diff --git
a/src/jagi/event/Driver.java
b/src/jagi/event/Driver.java
index
a8475b4
..
4d23c76
100644
(file)
--- a/
src/jagi/event/Driver.java
+++ b/
src/jagi/event/Driver.java
@@
-26,7
+26,18
@@
public class Driver {
current.set(this);
w.handle(evs);
} catch(Throwable t) {
current.set(this);
w.handle(evs);
} catch(Throwable t) {
- error(w, t);
+ error(w, t, "handling event");
+ } finally {
+ current.remove();
+ }
+ }
+
+ protected void close(Watcher w) {
+ try {
+ current.set(this);
+ w.close();
+ } catch(Throwable t) {
+ error(w, t, "closing");
} finally {
current.remove();
}
} finally {
current.remove();
}
@@
-36,8
+47,8
@@
public class Driver {
worker.submit(task);
}
worker.submit(task);
}
- protected void error(Watcher w, Throwable t) {
- hlog.log(Level.WARNING, w + ": uncaught error when
handling event"
, t);
+ protected void error(Watcher w, Throwable t
, String thing
) {
+ hlog.log(Level.WARNING, w + ": uncaught error when
" + thing
, t);
remove(w);
}
remove(w);
}
@@
-164,7
+175,7
@@
public class Driver {
double timeout = w.timeout();
boolean hastime = timeout < Double.POSITIVE_INFINITY;
if(evs < 0) {
double timeout = w.timeout();
boolean hastime = timeout < Double.POSITIVE_INFINITY;
if(evs < 0) {
- submit(
w::close
);
+ submit(
() -> close(w)
);
return;
}
w.added(Driver.this);
return;
}
w.added(Driver.this);
@@
-188,7
+199,7
@@
public class Driver {
throw(new RuntimeException(w + ": inconsistent internal state"));
if(wc == null)
throw(new IllegalStateException(w + ": not registered"));
throw(new RuntimeException(w + ": inconsistent internal state"));
if(wc == null)
throw(new IllegalStateException(w + ": not registered"));
- submit(
w::close
);
+ submit(
() -> close(w)
);
poll.wakeup();
}
poll.wakeup();
}