[ https://issues.apache.org/struts/browse/STR-3190?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul Benedict resolved STR-3190. -------------------------------- Resolution: Cannot Reproduce Fix Version/s: (was: Pending Review) Feel free to send more information and, if it is helpful, we can reopen this ticket. > RequestProcessor synchronized block getting hanged in Sun One Server > -------------------------------------------------------------------- > > Key: STR-3190 > URL: https://issues.apache.org/struts/browse/STR-3190 > Project: Struts 1 > Issue Type: Improvement > Components: Core > Affects Versions: 1.1.0 > Environment: Application server - Sun One Application server 8.1 , > Sun solaris OS. > Reporter: Moushmi Bhattacharya > Assignee: Paul Benedict > Priority: Critical > > We have incidents of the Application server hanging for a few minutes and > then coming back to normal. Sun Analyzed the code and came back with the > analysis that the hang is likely happening in the synchronized block of the > RequestProcessor.java [ processActionCreate method ] . > We are using the struts 1.1 . Has this issue been resolved in the later > releases of struts. Will Moving to a later release solve this issue. > The hang is likely happening in the synchronized block below: > 247 protected Action processActionCreate(HttpServletRequest request, > 248 HttpServletResponse response, > 249 ActionMapping mapping) > 250 throws IOException { > 251 > 252 // Acquire the Action instance we will be using (if there is one) > 253 String className = mapping.getType(); > 254 if (log.isDebugEnabled()) { > 255 log.debug(" Looking for Action instance for class " + > className); > 256 } > 257 > 258 // :TODO: If there were a mapping property indicating whether > 259 // an Action were a singleton or not ([true]), > 260 // could we just instantiate and return a new instance here? > 261 > 262 Action instance = null; > 263 synchronized (actions) { > 264 > 265 // Return any existing Action instance of this class > 266 instance = (Action) actions.get(className); > 267 if (instance != null) { > 268 if (log.isTraceEnabled()) { > 269 log.trace(" Returning existing Action instance"); > 270 } > 271 return (instance); > 272 } > 273 > 274 // Create and return a new Action instance > 275 if (log.isTraceEnabled()) { > 276 log.trace(" Creating new Action instance"); > 277 } > 278 > 279 try { > 280 instance = (Action) > RequestUtils.applicationInstance(className); > 281 // :TODO: Maybe we should propagate this exception > 282 // instead of returning null. > 283 } catch (Exception e) { > 284 log.error( > 285 getInternal().getMessage("actionCreate", > mapping.getPath()), > 286 e); > 287 > 288 response.sendError( > 289 HttpServletResponse.SC_INTERNAL_SERVER_ERROR, > 290 getInternal().getMessage("actionCreate", > mapping.getPath())); > 291 > 292 return (null); > 293 } > 294 > 295 instance.setServlet(this.servlet); > 296 actions.put(className, instance); > 297 } > 298 > 299 return (instance); > 300 > 301 } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.