db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Hillegas (JIRA)" <j...@apache.org>
Subject [jira] [Created] (DERBY-5328) The private fields of the NetServlet can be changed by multiple threads, giving rise to race conditions and corruptions.
Date Wed, 13 Jul 2011 16:15:03 GMT
The private fields of the NetServlet can be changed by multiple threads, giving rise to race
conditions and corruptions.
------------------------------------------------------------------------------------------------------------------------

                 Key: DERBY-5328
                 URL: https://issues.apache.org/jira/browse/DERBY-5328
             Project: Derby
          Issue Type: Bug
          Components: Network Server
    Affects Versions: 10.9.0.0
            Reporter: Rick Hillegas


At the beginning of the NetServlet class, there are a number of private fields. These fields
can be inspected and changed by any thread running inside NetServlet.doGet(). Due to the way
that app servers dispatch servlet requests, this means that multiple threads can be operating
inside doGet() at the same time, clobbering one another's work. The weirdest instance of this
is the shared PrintWriter (called "out") which is used to produce the response web page sent
back by the servlet. Multiple threads all writing to the same PrintWriter will create a very
bizarre response page. The following improvements should be made:

1) The "server" field should be set by a synchronized method.

2) Every run through doGet() should create its own PrintWriter which is passed to other methods.
The instance-wide "out" field should be removed.

3) Various other fields should be re-coded using the Atomic classes introduced by Java 5.
These fields include "logStatus" and "traceStatus". This solution can be implemented if the
community votes to approve the sunsetting of JVM 1.4 (currently at the polls).

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message