You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by my...@apache.org on 2014/10/02 23:03:47 UTC

svn commit: r1629069 - in /db/derby/code/branches/10.10: ./ java/drda/org/apache/derby/impl/drda/DRDAConnThread.java java/drda/org/apache/derby/impl/drda/Database.java java/drda/org/apache/derby/impl/drda/Session.java

Author: myrnavl
Date: Thu Oct  2 21:03:46 2014
New Revision: 1629069

URL: http://svn.apache.org/r1629069
Log:
DERBY-6714; RuntimeInfoTest failed with insufficient data from server
  merge of revision 1628842 from 10.11 branch.

Modified:
    db/derby/code/branches/10.10/   (props changed)
    db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java
    db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/Database.java
    db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/Session.java

Propchange: db/derby/code/branches/10.10/
------------------------------------------------------------------------------
  Merged /db/derby/code/branches/10.11:r1628842
  Merged /db/derby/code/trunk:r1620608

Modified: db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java?rev=1629069&r1=1629068&r2=1629069&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java (original)
+++ db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java Thu Oct  2 21:03:46 2014
@@ -9165,10 +9165,13 @@ class DRDAConnThread extends Thread {
 
     protected String buildRuntimeInfo(String indent, LocalizedResource localLangUtil )
     {
-        if (!hasSession()) {
+        // DERBY-6714: session can be null if the session gets closed just
+        // as we try to read its runtime info.
+        Session s = session;
+        if (s == null) {
             return "";
         } else {
-            return session.buildRuntimeInfo("", localLangUtil) + "\n";
+            return s.buildRuntimeInfo("", localLangUtil) + "\n";
         }
     }
 

Modified: db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/Database.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/Database.java?rev=1629069&r1=1629068&r2=1629069&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/Database.java (original)
+++ db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/Database.java Thu Oct  2 21:03:46 2014
@@ -407,20 +407,28 @@ class Database
 
     protected String buildRuntimeInfo(String indent, LocalizedResource localLangUtil)
     {
-      
+        // DERBY-6714: stmtTable can be null if the session gets closed
+        // while we are constructing the runtime info. Create a local copy
+        // and check for null before accessing it.
+        Hashtable<Object, DRDAStatement> statements = stmtTable;
+
         String s = indent + 
         localLangUtil.getTextMessage("DRDA_RuntimeInfoDatabase.I") +
             dbName + "\n" +  
         localLangUtil.getTextMessage("DRDA_RuntimeInfoUser.I")  +
             userId +  "\n" +
         localLangUtil.getTextMessage("DRDA_RuntimeInfoNumStatements.I") +
-            stmtTable.size() + "\n";
+            (statements == null ? 0 : statements.size()) + "\n";
         s += localLangUtil.getTextMessage("DRDA_RuntimeInfoPreparedStatementHeader.I");
-        for (Enumeration e = stmtTable.elements() ; e.hasMoreElements() ;) 
+
+        if (statements != null) {
+            for (Enumeration e = statements.elements(); e.hasMoreElements(); )
                 {
                     s += ((DRDAStatement) e.nextElement()).toDebugString(indent
                                                                          +"\t") +"\n";
                 }
+        }
+
         return s;
     }
     

Modified: db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/Session.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/Session.java?rev=1629069&r1=1629068&r2=1629069&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/Session.java (original)
+++ db/derby/code/branches/10.10/java/drda/org/apache/derby/impl/drda/Session.java Thu Oct  2 21:03:46 2014
@@ -286,10 +286,15 @@ class Session
         String s = "";
         s += indent +  localLangUtil.getTextMessage("DRDA_RuntimeInfoSessionNumber.I")
             + connNum + "\n";
-        if (database == null)
-            return s;
-        s += database.buildRuntimeInfo(indent,localLangUtil);
-        s += "\n";
+
+        // DERBY-6714: database can be null if the session gets closed
+        // while we construct the runtime info.
+        Database db = database;
+        if (db != null) {
+            s += db.buildRuntimeInfo(indent, localLangUtil);
+            s += "\n";
+        }
+
         return s;
     }
 }