db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mike Matrigali <mikem_...@sbcglobal.net>
Subject Re: [jira] Commented: (DERBY-1466) Network Server should flush the PrintWriter after console output
Date Thu, 13 Jul 2006 22:20:03 GMT

Sunitha Kambhampati (JIRA) wrote:
>     [ http://issues.apache.org/jira/browse/DERBY-1466?page=comments#action_12420949 ]

> Sunitha Kambhampati commented on DERBY-1466:
> --------------------------------------------
> I took a quick look at this and want to  start a discussion on how this could be solved.

> Per java api for PrintWriter
> -- There is no method to turn autoflush on an existing PrintWriter object.
> -- when autoflush is on, flush will happen on the println statement only.
> some solution options:
> 1) one is wrap the user's writer object with a PrintWriter and set autoflush to true
>     -- change in code only required in two places.
>     -- maybe ugly to wrap the object.
> 2)  explicitly call flush in all places after  we write to this writer object.
> In Eclipse, searched for places where the logWriter in NetworkServerControl is referenced,
here is the list
> NetworkServerControlImpl - org.apache.derby.impl.drda - java/drda - ks_trunk
> consoleExceptionPrintTrace(Throwable) (3 potential matches)
> consoleMessage(String) (3 potential matches)
> executeWork(String[]) (potential match)
> setLogWriter(PrintWriter) (potential match)
> shutdown() (2 potential matches)
> So that is not a lot of places. so option 2 should be simple too. unless we miss to call
flush in all the places.
> ------------------
> There is one case where the writer is passed to exception.printStackTrace . If this gets
flushed correctly in autoflush mode, I think #1 seems ok to me, less number of changes than
> I  was concerned a bit if setting autoflush will have any performance impact.  But maybe
it is ok since console output is not expected to be verbose anyways.
I am ok with either solution, at this point I would lean toward the 1st 
- assuming that console output doesn't happen very often.  Would there
ever be a case where performance mattered and would only want some
of these calls autoflushed and not others?

Is there any way to determine if the existing printWriter is autoflush, 
if so it might be worth checking before wrapping?

View raw message