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
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.