8232446: logging enhancement for rmi when socket closed
authormli
Thu, 28 Nov 2019 13:48:25 +0800
changeset 59300 60bdcb9a7b94
parent 59299 17d242844fc9
child 59301 d67bb40f422c
8232446: logging enhancement for rmi when socket closed Reviewed-by: rriggs, plevart
src/java.rmi/share/classes/sun/rmi/transport/tcp/TCPConnection.java
src/java.rmi/share/classes/sun/rmi/transport/tcp/TCPTransport.java
--- a/src/java.rmi/share/classes/sun/rmi/transport/tcp/TCPConnection.java	Wed Nov 27 16:01:34 2019 +0000
+++ b/src/java.rmi/share/classes/sun/rmi/transport/tcp/TCPConnection.java	Thu Nov 28 13:48:25 2019 +0800
@@ -209,7 +209,10 @@
      * Close the connection.  */
     public void close() throws IOException
     {
-        TCPTransport.tcpLog.log(Log.BRIEF, "close connection");
+        if (TCPTransport.tcpLog.isLoggable(Log.BRIEF)) {
+            TCPTransport.tcpLog.log(Log.BRIEF,
+                    "close connection, socket: " + socket);
+        }
 
         if (socket != null)
             socket.close();
--- a/src/java.rmi/share/classes/sun/rmi/transport/tcp/TCPTransport.java	Wed Nov 27 16:01:34 2019 +0000
+++ b/src/java.rmi/share/classes/sun/rmi/transport/tcp/TCPTransport.java	Thu Nov 28 13:48:25 2019 +0800
@@ -273,12 +273,23 @@
     private void decrementExportCount() {
         assert Thread.holdsLock(this);
         exportCount--;
+        if (tcpLog.isLoggable(Log.VERBOSE)) {
+            tcpLog.log(Log.VERBOSE,
+                    "server socket: " + server + ", exportCount: " + exportCount);
+        }
         if (exportCount == 0 && getEndpoint().getListenPort() != 0) {
             ServerSocket ss = server;
             server = null;
             try {
+                if (tcpLog.isLoggable(Log.BRIEF)) {
+                    tcpLog.log(Log.BRIEF, "server socket close: " + ss);
+                }
                 ss.close();
             } catch (IOException e) {
+                if (tcpLog.isLoggable(Log.BRIEF)) {
+                    tcpLog.log(Log.BRIEF,
+                            "server socket close throws: " + e);
+                }
             }
         }
     }
@@ -366,6 +377,10 @@
                 executeAcceptLoop();
             } finally {
                 try {
+                    if (tcpLog.isLoggable(Log.BRIEF)) {
+                        tcpLog.log(Log.BRIEF,
+                                "server socket close: " + serverSocket);
+                    }
                     /*
                      * Only one accept loop is started per server
                      * socket, so after no more connections will be
@@ -374,6 +389,10 @@
                      */
                     serverSocket.close();
                 } catch (IOException e) {
+                    if (tcpLog.isLoggable(Log.BRIEF)) {
+                        tcpLog.log(Log.BRIEF,
+                                "server socket close throws: " + e);
+                    }
                 }
             }
         }
@@ -524,9 +543,15 @@
     /** close socket and eat exception */
     private static void closeSocket(Socket sock) {
         try {
+            if (tcpLog.isLoggable(Log.BRIEF)) {
+                tcpLog.log(Log.BRIEF, "socket close: " + sock);
+            }
             sock.close();
         } catch (IOException ex) {
             // eat exception
+            if (tcpLog.isLoggable(Log.BRIEF)) {
+                tcpLog.log(Log.BRIEF, "socket close throws: " + ex);
+            }
         }
     }
 
@@ -591,6 +616,9 @@
                 conn.close();
             } catch (IOException ex) {
                 // eat exception
+                if (tcpLog.isLoggable(Log.BRIEF)) {
+                    tcpLog.log(Log.BRIEF, "Connection close throws " + ex);
+                }
             }
         }
     }
@@ -723,6 +751,10 @@
                     // just close socket: this would recurse if we marshal an
                     // exception to the client and the protocol at other end
                     // doesn't match.
+                    if (tcpLog.isLoggable(Log.BRIEF)) {
+                        tcpLog.log(Log.BRIEF, "magic or version not match: "
+                                                  + magic + ", " + version);
+                    }
                     closeSocket(socket);
                     return;
                 }