.. OH, and jetty version please!

On Thu, Sep 18, 2014 at 8:45 AM, Raymond Auge <[email protected]>
wrote:

> May I ask to see the stacktrace of the original error?
>
> I want to correlate a strange jetty error from non-felix code against this
> one because they seem eerily similar. (long shot)
>
> - Ray
>
> On Thu, Sep 18, 2014 at 8:35 AM, Richard S. Hall <[email protected]>
> wrote:
>
>> I guess the question to ask is what behavior is the correct behavior if
>> there really is an exception on close? This patch will ignore every
>> exception, not just ones that occurs because of a double close (although it
>> seems to me a double close should be a no-op, not sure why it throws, but
>> that is another issue).
>>
>> Does it make sense that every close exception is ignored and the user is
>> never alerted? Granted, there isn't much we can do, but often such errors
>> are better breaking things than just being ignored.
>>
>> -> richard
>>
>>
>> On 9/18/14 03:43 , Rob Walker wrote:
>>
>>> Just wanted to check this one before I raise a JIRA, in case it's known
>>> and/or already been fixed or being worked on.
>>>
>>> In one of our models we  provision our application over WebStart, which
>>> causes bundles to be loaded over HTTP. Occasionally we get a Stream Closed
>>> exception being thrown from the Jetty HTTP server (the server serving up
>>> the code is also running under Felix).
>>>
>>> What seems to happen is a double close of the input stream - which
>>> throws an error. I've include the notes below from our developer who found
>>> this.
>>>
>>> It's a pretty simple mod to ignore the exception on second close
>>> (highlighted red below) - assuming everyone is happy this is an ok approach.
>>>
>>> -- Rob
>>>
>>> ===
>>>
>>> /It turns out the problem was arising when caching the VersaTest jar
>>> files. Whilst they are coming across via WebStart ok, an error was being
>>> thrown because the stream used to read them was being closed multiple times
>>> and at some point the close operation causes an exception that isn't caught
>>> so stops the load.  This error occurs in Felix in the JarRevision class, in
>>> the initialize() method. I put a simple fix in that ignored the error on
>>> close. So in the code below, a close on the input stream was being called
>>> in the //BundleCache.copyStreamToFile(is, m_bundleFile)  and in the
>>> bottom finally block (you can see below where I put in that disregarding
>>> catch.  (Note, I suspect that also the input stream could be closed in the
>>> //((HttpURLConnection) conn).disconnect() //as well. But it is explicitly
>>> closed in the copyStreamToFile.)////
>>> ///
>>>
>>>                 if (!byReference)
>>>                 {
>>>                     URLConnection conn = null;
>>>                     try
>>>                     {
>>>                         if (is == null)
>>>                         {
>>>                             // Do it the manual way to have a chance to
>>>                             // set request properties such as proxy auth.
>>>                             URL url = BundleCache.getSecureAction().
>>> createURL(
>>>                                 null, getLocation(), null);
>>>                             conn = url.openConnection();
>>>
>>>                             // Support for http proxy authentication.
>>>                             String auth = BundleCache.getSecureAction()
>>> .getSystemProperty("http.proxyAuth", null);
>>>                             if ((auth != null) && (auth.length() > 0))
>>>                             {
>>>                                 if ("http".equals(url.getProtocol()) ||
>>> "https".equals(url.getProtocol()))
>>>                                 {
>>>                                     String base64 =
>>> Util.base64Encode(auth);
>>> conn.setRequestProperty(
>>> "Proxy-Authorization", "Basic " + base64);
>>>                                 }
>>>                             }
>>>                             is = BundleCache.getSecureAction()
>>> .getURLConnectionInputStream(conn);
>>>                         }
>>>
>>>                         // Save the bundle jar file.
>>> BundleCache.copyStreamToFile(is, m_bundleFile);
>>>                     }
>>>                     finally
>>>                     {
>>>                         // This is a hack to fix an issue on Android,
>>> where
>>>                         // HttpURLConnections are not properly closed.
>>> (FELIX-2728)
>>>                         if ((conn != null) && (conn instanceof
>>> HttpURLConnection))
>>>                         {
>>>                             ((HttpURLConnection) conn).disconnect();
>>>                         }
>>>                     }
>>>                 }
>>>             }
>>>         }
>>>         finally
>>>         {
>>>             if (is != null)
>>>             {
>>>                 try
>>>                 {
>>>                     is.close();
>>>                 } catch (IOException ioe)
>>>                 {
>>>                     /*  Catch and disregard exception on close as could
>>> already have been closed,
>>>                         either in the disconnect or in the
>>> copyStreamToProfile
>>>                     */
>>>
>>>                 }
>>>
>>>             }
>>>         }
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>
>
>
> --
> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>  (@rotty3000)
> Senior Software Architect
> *Liferay, Inc.* <http://www.liferay.com> (@Liferay)
>
>


-- 
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
 (@rotty3000)
Senior Software Architect
*Liferay, Inc.* <http://www.liferay.com> (@Liferay)

Reply via email to