mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8316927: JFR: Move shouldCommit check earlier for socket events
Reviewed-by: alanb, dfuchs, mgronlun
This commit is contained in:
parent
5ca1beb30e
commit
6aa837eee6
5 changed files with 49 additions and 29 deletions
|
@ -1096,7 +1096,10 @@ public class Socket implements java.io.Closeable {
|
|||
}
|
||||
long start = SocketReadEvent.timestamp();
|
||||
int nbytes = implRead(b, off, len);
|
||||
SocketReadEvent.offer(start, nbytes, parent.getRemoteSocketAddress(), getSoTimeout());
|
||||
long duration = SocketReadEvent.timestamp() - start;
|
||||
if (SocketReadEvent.shouldCommit(duration)) {
|
||||
SocketReadEvent.emit(start, duration, nbytes, parent.getRemoteSocketAddress(), getSoTimeout());
|
||||
}
|
||||
return nbytes;
|
||||
}
|
||||
|
||||
|
@ -1209,7 +1212,10 @@ public class Socket implements java.io.Closeable {
|
|||
}
|
||||
long start = SocketWriteEvent.timestamp();
|
||||
implWrite(b, off, len);
|
||||
SocketWriteEvent.offer(start, len, parent.getRemoteSocketAddress());
|
||||
long duration = SocketWriteEvent.timestamp() - start;
|
||||
if (SocketWriteEvent.shouldCommit(duration)) {
|
||||
SocketWriteEvent.emit(start, duration, len, parent.getRemoteSocketAddress());
|
||||
}
|
||||
}
|
||||
|
||||
private void implWrite(byte[] b, int off, int len) throws IOException {
|
||||
|
|
|
@ -113,21 +113,19 @@ public class SocketReadEvent extends Event {
|
|||
* {@link #commit(long, long, String, String, int, long, long, boolean)}.
|
||||
*
|
||||
* @param start the start time
|
||||
* @param duration the duration
|
||||
* @param nbytes how many bytes were transferred
|
||||
* @param remote the address of the remote socket
|
||||
* @param timeout maximum time to wait
|
||||
*/
|
||||
public static void offer(long start, long nbytes, SocketAddress remote, long timeout) {
|
||||
long duration = timestamp() - start;
|
||||
if (shouldCommit(duration)) {
|
||||
boolean eof = nbytes < 0 ? true : false;
|
||||
nbytes = nbytes < 0 ? 0 : nbytes;
|
||||
if (remote instanceof InetSocketAddress isa) {
|
||||
commit(start, duration, isa.getHostString(), isa.getAddress().getHostAddress(), isa.getPort(), timeout, nbytes, eof);
|
||||
} else if (remote instanceof UnixDomainSocketAddress udsa) {
|
||||
String path = "[" + udsa.getPath().toString() + "]";
|
||||
commit(start, duration, "Unix domain socket", path, 0, timeout, nbytes, eof);
|
||||
}
|
||||
public static void emit(long start, long duration, long nbytes, SocketAddress remote, long timeout) {
|
||||
boolean eof = nbytes < 0 ? true : false;
|
||||
nbytes = nbytes < 0 ? 0 : nbytes;
|
||||
if (remote instanceof InetSocketAddress isa) {
|
||||
commit(start, duration, isa.getHostString(), isa.getAddress().getHostAddress(), isa.getPort(), timeout, nbytes, eof);
|
||||
} else if (remote instanceof UnixDomainSocketAddress udsa) {
|
||||
String path = "[" + udsa.getPath().toString() + "]";
|
||||
commit(start, duration, "Unix domain socket", path, 0, timeout, nbytes, eof);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -108,19 +108,17 @@ public class SocketWriteEvent extends Event {
|
|||
* {@link #commit(long, long, String, String, int, long)}.
|
||||
*
|
||||
* @param start the start time
|
||||
* @param duration the duration
|
||||
* @param bytesWritten how many bytes were sent
|
||||
* @param remote the address of the remote socket being written to
|
||||
*/
|
||||
public static void offer(long start, long bytesWritten, SocketAddress remote) {
|
||||
long duration = timestamp() - start;
|
||||
if (shouldCommit(duration)) {
|
||||
long bytes = bytesWritten < 0 ? 0 : bytesWritten;
|
||||
if (remote instanceof InetSocketAddress isa) {
|
||||
commit(start, duration, isa.getHostString(), isa.getAddress().getHostAddress(), isa.getPort(), bytes);
|
||||
} else if (remote instanceof UnixDomainSocketAddress udsa) {
|
||||
String path = "[" + udsa.getPath().toString() + "]";
|
||||
commit(start, duration, "Unix domain socket", path, 0, bytes);
|
||||
}
|
||||
public static void emit(long start, long duration, long bytesWritten, SocketAddress remote) {
|
||||
long bytes = bytesWritten < 0 ? 0 : bytesWritten;
|
||||
if (remote instanceof InetSocketAddress isa) {
|
||||
commit(start, duration, isa.getHostString(), isa.getAddress().getHostAddress(), isa.getPort(), bytes);
|
||||
} else if (remote instanceof UnixDomainSocketAddress udsa) {
|
||||
String path = "[" + udsa.getPath().toString() + "]";
|
||||
commit(start, duration, "Unix domain socket", path, 0, bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -494,7 +494,10 @@ class SocketChannelImpl
|
|||
}
|
||||
long start = SocketReadEvent.timestamp();
|
||||
int nbytes = implRead(buf);
|
||||
SocketReadEvent.offer(start, nbytes, remoteAddress(), 0);
|
||||
long duration = SocketReadEvent.timestamp() - start;
|
||||
if (SocketReadEvent.shouldCommit(duration)) {
|
||||
SocketReadEvent.emit(start, duration, nbytes, remoteAddress(), 0);
|
||||
}
|
||||
return nbytes;
|
||||
}
|
||||
|
||||
|
@ -508,7 +511,10 @@ class SocketChannelImpl
|
|||
}
|
||||
long start = SocketReadEvent.timestamp();
|
||||
long nbytes = implRead(dsts, offset, length);
|
||||
SocketReadEvent.offer(start, nbytes, remoteAddress(), 0);
|
||||
long duration = SocketReadEvent.timestamp() - start;
|
||||
if (SocketReadEvent.shouldCommit(duration)) {
|
||||
SocketReadEvent.emit(start, duration, nbytes, remoteAddress(), 0);
|
||||
}
|
||||
return nbytes;
|
||||
}
|
||||
|
||||
|
@ -619,7 +625,10 @@ class SocketChannelImpl
|
|||
}
|
||||
long start = SocketWriteEvent.timestamp();
|
||||
int nbytes = implWrite(buf);
|
||||
SocketWriteEvent.offer(start, nbytes, remoteAddress());
|
||||
long duration = SocketWriteEvent.timestamp() - start;
|
||||
if (SocketWriteEvent.shouldCommit(duration)) {
|
||||
SocketWriteEvent.emit(start, duration, nbytes, remoteAddress());
|
||||
}
|
||||
return nbytes;
|
||||
}
|
||||
|
||||
|
@ -632,7 +641,10 @@ class SocketChannelImpl
|
|||
}
|
||||
long start = SocketWriteEvent.timestamp();
|
||||
long nbytes = implWrite(srcs, offset, length);
|
||||
SocketWriteEvent.offer(start, nbytes, remoteAddress());
|
||||
long duration = SocketWriteEvent.timestamp() - start;
|
||||
if (SocketWriteEvent.shouldCommit(duration)) {
|
||||
SocketWriteEvent.emit(start, duration, nbytes, remoteAddress());
|
||||
}
|
||||
return nbytes;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue