Lukas Eder created SLING-2774:
---------------------------------

             Summary: Bad initialisation of a cache in SlingPostServlet
                 Key: SLING-2774
                 URL: https://issues.apache.org/jira/browse/SLING-2774
             Project: Sling
          Issue Type: Bug
          Components: Servlets
    Affects Versions: Servlets Post 2.2.0
            Reporter: Lukas Eder
            Priority: Minor


This issue is intended to track the problems mentioned in this thread from the 
developer list:
http://www.mail-archive.com/[email protected]/msg18940.html

An extract of the original mail:
--------------------------------------------------------
I've been stepping through the SlingPostServlet, having a look at its
code. I feel that there is a potential "code smell" in some of its
methods. As I'm unsure how the Sling project deals with such
situations, I felt that posting a mail here before creating an issue
might be better.

The code I'm talking about is contained in
registerPostResponseCreator(), where the cachedPostResponseCreators
attribute is initialised. There are two issues here:

1. The cachedPostResponseCreators array is re-initialised every time
this method is invoked. This leads to an unnecessary O(n^2)
initialisation complexity on componentContext.locateService() method.
I guess that this cache's whole purpose is to avoid expensive
locateService() calls, so this should probably be fixed.

2. A first loop initialises this cachedPostResponseCreators array. In
a second step, "null" entries are "removed" by copying the array. This
behaviour is hard to read from the existing code, which is a bit
verbose. In order to avoid the potential for bugs, I'd like to suggest
using the (untested) behaviour from the attached patch. Note that
other methods, such as registerPostProcessor(),
registerNodeNameGenerator() suffers from similar "verbosity problems".
--------------------------------------------------------

Also, attached the .patch file that was blocked in the mail on the mailing list

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to