It seems to me Eddie's patch should work as is. Daryoush
> -----Original Message----- > From: Richard Feit > Sent: Tuesday, May 31, 2005 1:03 PM > To: Beehive Developers > Subject: Re: v1/m1 and fixing InputStream leak -- was: Re: [jira] > Resolved: (BEEHIVE-772) service control leaks an InputStream > > One question: could the finally block be moved to the end of the > method? It looks like XmlBeanWSDLProcessor only uses the stream in > methods called from its constructor, but it does seem like it would be > safer to avoid closing the stream before XmlBeanWSDLProcessor could > *possibly* access it. > > > Eddie O'Neil wrote: > > > > > Yeah, I agree that it'd be good to fix...leaking streams doesn't > > tend to scale well. > > > > :) > > > > I've pasted the diff below; please give this a review -- wouldn't be > > good to break something at this late date. > > > > Eddie > > > > > > > > ::::: diff.txt > > Index: > > > src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/Serv ic > eControlImpl.jcs > > > > =================================================================== > > --- > > > src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/Serv ic > eControlImpl.jcs > > (rev > > ision 179055) > > +++ > > > src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/Serv ic > eControlImpl.jcs > > (wor > > king copy) > > @@ -454,14 +454,21 @@ > > > > if (wsdl != null) { > > logger.debug("read wsdl from: " + wsdl.path()); > > - InputStream wsdlStream = > > getWSDLStream(wsdl.path()); > > + InputStream wsdlStream = null; > > + try { > > + wsdlStream = getWSDLStream(wsdl.path()); > > > > - if (wsdlStream != null) { > > - wsdlProcessor = new > > XmlBeanWSDLProcessor(wsdlStream); > > - } else { > > - throw new RuntimeException( > > + if (wsdlStream != null) { > > + wsdlProcessor = new > > XmlBeanWSDLProcessor(wsdlStream); > > + } else { > > + throw new RuntimeException( > > "No WSDL found at the > > provided path: " + wsdl.path() > > ); > > - } > > + } > > + } > > + finally { > > + if(wsdlStream != null) > > + wsdlStream.close(); > > + } > > } else { > > throw new RuntimeException("No WSDL annotation > > found."); > > } > > ::::: > > > > Richard Feit wrote: > > > >> I think that leaking streams is bad enough that the fix should go > >> into the branch. The fix (minus the code cleanup in the same > >> checkin) looks straightforward... > >> > >> Eddie O'Neil (JIRA) wrote: > >> > >>> [ http://issues.apache.org/jira/browse/BEEHIVE-772?page=all ] > >>> Eddie O'Neil resolved BEEHIVE-772: > >>> ---------------------------------- > >>> > >>> Assign To: (was: Eddie O'Neil) > >>> Resolution: Fixed > >>> > >>> Fixed in trunk/; I've not made this change to 1.0m1. If anyone > >>> believes it should go up there (I sort of feel that way), let me > >>> know and I'll be happy to integ it. > >>> > >>> > >>> > >>>> service control leaks an InputStream > >>>> ------------------------------------ > >>>> > >>>> Key: BEEHIVE-772 > >>>> URL: http://issues.apache.org/jira/browse/BEEHIVE-772 > >>>> Project: Beehive > >>>> Type: Bug > >>>> Components: Controls > >>>> Versions: V1Alpha, V1Beta, V1 > >>>> Reporter: Eddie O'Neil > >>>> Priority: Critical > >>>> Fix For: TBD > >>>> > >>> > >>> > >>> > >>> > >>> > >>>> The current ServiceControlImpl.jcs loads a WSDL InputStream but > >>>> never closes that stream. Thus, we're leaking streams. > >>>> Fix coming shortly. > >>>> > >>> > >>> > >>> > >>> > >>> > >> > > > >