Hi, 
I'm a student doing research on logging practices of projects which are from 
Apache Foundation Software.
I found there are inconsistent log level practices in the Qpid project, and we 
suspect some of them should be fixed.
We select 3 problematic practices to report.
The detail code as well as the modification suggestions are shown below.
***************** Report1 *********************************
the problematic snippet:
============ ReplicatedEnvironmentFacade.java ===================
file path: 
qpid-java-6.1.7\bdbstore\src\main\java\org\apache\qpid\server\store\berkeleydb\replication\ReplicatedEnvironmentFacade.java
logging statement line: 916
modification suggestion: change log level to WARN
 890         try
 891         {
 892             return future.get(timeout, TimeUnit.SECONDS);
 893         }
 894         catch (InterruptedException e)
 895         {
 896             Thread.currentThread().interrupt();
 897         }
 898         catch (ExecutionException e)
 899         {
 900             Throwable cause = e.getCause();
 901             if (cause instanceof Error)
 902             {
 903                 throw (Error) cause;
 904             }
 905             else if (cause instanceof RuntimeException)
 906             {
 907                 throw (RuntimeException) cause;
 908             }
 909             else
 910             {
 911                 throw new ConnectionScopedRuntimeException("Unexpected 
exception while " + action, e);
 912             }
 913         }
 914         catch (TimeoutException e)
 915         {
 916             LOGGER.info("{}  on {} timed out after {} seconds", action, 
_prettyGroupNodeName, timeout);
 917         }


the similar snippet:
============ SelectorThread.java ===============================
file path: 
qpid-java-6.1.7\broker-core\src\main\java\org\apache\qpid\server\transport\SelectorThread.java
logging statement line: 464
449         try
450         {
451             result.get(ACCEPT_CANCELATION_TIMEOUT, TimeUnit.MILLISECONDS);
452         }
453         catch (InterruptedException e)
454         {
455             LOGGER.warn("Cancellation of accepting socket was interrupted");
456             Thread.currentThread().interrupt();
457         }
458         catch (ExecutionException e)
459         {
460             LOGGER.warn("Cancellation of accepting socket failed", 
e.getCause());
461         }
462         catch (TimeoutException e)
463         {
464             LOGGER.warn("Cancellation of accepting socket timed out");
465         }


============ BDBHAVirtualHostNodeImpl.java ====================
file path: 
qpid-java-6.1.7\bdbstore\src\main\java\org\apache\qpid\server\virtualhostnode\berkeleydb\BDBHAVirtualHostNodeImpl.java
logging statement line: 912
 906         try
 907         {
 908             future.get(MUTATE_JE_TIMEOUT_MS, TimeUnit.MILLISECONDS);
 909         }
 910         catch (TimeoutException e)
 911         {
 912             LOGGER.warn(timeoutLogMessage);
 913         }




***************** Report2 *********************************
the problematic snippet:
============ AbstractJDBCPreferenceStore.java ===================
file path: 
qpid-java-6.1.7\broker-core\src\main\java\org\apache\qpid\server\store\preferences\AbstractJDBCPreferenceStore.java
 
logging statement line: 334
modification suggestion: change log level to ERROR 
325             try
326             {
327                 if (connection != null)
328                 {
329                     connection.close();
330                 }
331             }
332             catch (SQLException e)
333             {
334                 getLogger().warn("Failed to close JDBC connection", e);
335             }


the similar snippets:
============ JdbcUtils.java ==================================
file path: 
qpid-java-6.1.7\broker-core\src\main\java\org\apache\qpid\server\store\JdbcUtils.java
logging statement line: 42
 36             try
 37             {
 38                 conn.close();
 39             }
 40             catch (SQLException e)
 41             {
 42                 logger.error("Problem closing connection", e);
 43             }


***************** Report3 *********************************
the problematic snippet:
============ DojoHelper.java =================================
file path: 
qpid-java-6.1.7\broker-plugins\management-http\src\main\java\org\apache\qpid\server\management\plugin\DojoHelper.java
logging statement line: 75
modification suggestion: change log level to ERROR
 69                     try
 70                     {
 71                         propertyStream.close();
 72                     }
 73                     catch (IOException e)
 74                     {
 75                         _logger.warn("Exception closing InputStream for " + 
VERSION_FILE + " resource:", e);
 76                     }


the similar snippet:
============ CallbackHandlerRegistry.java =======================
file path: 
qpid-java-6.1.7\client\src\main\java\org\apache\qpid\client\security\CallbackHandlerRegistry.java
logging statement line: 112
105                 try
106                 {
107                     is.close();
108
109                 }
110                 catch (IOException e)
111                 {
112                     _logger.error("Unable to close properties stream: " + 
e, e);
113                 }


============ DynamicSaslRegistrar.java =========================
file path: 
qpid-java-6.1.7\client\src\main\java\org\apache\qpid\client\security\DynamicSaslRegistrar.java
logging statement line: 143
136                 try
137                 {
138                     is.close();
139
140                 }
141                 catch (IOException e)
142                 {
143                     _logger.error("Unable to close properties stream: " + 
e, e);
144                 }


***************** Report4 *********************************
the problematic snippet:
============ SSLUtil.java ====================================
file path: 
qpid-java-6.1.7\common\src\main\java\org\apache\qpid\transport\network\security\ssl\SSLUtil.java
logging statement line: 231
modification suggestion: change log level to ERROR
206             try
207             {
208                 LdapName ln = new LdapName(dn);
209                 for(Rdn rdn : ln.getRdns())
210                 {
211                     if("CN".equalsIgnoreCase(rdn.getType()))
212                     {
213                         cnStr = rdn.getValue().toString();
214                     }
215                     else if("DC".equalsIgnoreCase(rdn.getType()))
216                     {
217                         if(dcStr == null)
218                         {
219                             dcStr = rdn.getValue().toString();
220                         }
221                         else
222                         {
223                             dcStr = rdn.getValue().toString() + '.' + dcStr;
224                         }
225                     }
226                 }
227                 return cnStr == null || cnStr.length()==0 ? "" : dcStr == 
null ? cnStr : cnStr + '@' + dcStr;
228             }
229             catch (InvalidNameException e)
230             {
231                 LOGGER.warn("Invalid name: '{}'", dn);
232                 return "";
233             }


the similar snippet:
============ NonJavaTrustStoreImpl.java ==========================
file path: 
qpid-java-6.1.7\broker-core\src\main\java\org\apache\qpid\server\security\NonJavaTrustStoreImpl.java
logging statement line: 163
147         try
148         {
149             LdapName ldapDN = new LdapName(dn);
150             name = dn;
151             for (Rdn rdn : ldapDN.getRdns())
152             {
153                 if (rdn.getType().equalsIgnoreCase("CN"))
154                 {
155                     name = String.valueOf(rdn.getValue());
156                     break;
157                 }
158             }
159
160         }
161         catch (InvalidNameException e)
162         {
163             LOGGER.error("Error getting subject name from certificate");
164             name =  null;
165         }


============ NonJavaKeyStoreImpl.java =========================
file path: 
qpid-java-6.1.7\broker-core\src\main\java\org\apache\qpid\server\security\NonJavaKeyStoreImpl.java
logging statement line: 132
115             try
116             {
117                 String dn = 
_certificate.getSubjectX500Principal().getName();
118                 LdapName ldapDN = new LdapName(dn);
119                 String name = dn;
120                 for (Rdn rdn : ldapDN.getRdns())
121                 {
122                     if (rdn.getType().equalsIgnoreCase("CN"))
123                     {
124                         name = String.valueOf(rdn.getValue());
125                         break;
126                     }
127                 }
128                 return name;
129             }
130             catch (InvalidNameException e)
131             {
132                 LOGGER.error("Error getting subject name from certificate");
133                 return null;
134             }


We will highly appreciate your feedback!


--
Anh

Reply via email to