You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2012/01/25 15:01:41 UTC
git commit: WICKET-4359 Package resources leak file handles
Updated Branches:
refs/heads/master dffeb3065 -> 285beae65
WICKET-4359
Package resources leak file handles
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/285beae6
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/285beae6
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/285beae6
Branch: refs/heads/master
Commit: 285beae65a6e75223636751ed8f2782aee732338
Parents: dffeb30
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Jan 25 16:01:18 2012 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Jan 25 16:01:18 2012 +0200
----------------------------------------------------------------------
.../wicket/request/resource/PackageResource.java | 19 ++++++++------
.../wicket/request/resource/ResourceReference.java | 2 +-
.../request/resource/ResourceStreamResource.java | 9 +-----
.../version/MessageDigestResourceVersion.java | 2 +-
.../wicket/util/resource/UrlResourceStream.java | 7 ++++-
.../apache/wicket/devutils/debugbar/DebugBar.java | 1 -
.../org/apache/wicket/util/io/Connections.java | 10 ++++++++
.../wicket/util/resource/IResourceStream.java | 3 +-
8 files changed, 31 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/285beae6/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
index b55b405..bf81f14 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
@@ -273,14 +273,7 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl
// read resource data
final byte[] bytes;
- try
- {
- bytes = IOUtils.toByteArray(resourceStream.getInputStream());
- }
- finally
- {
- resourceStream.close();
- }
+ bytes = IOUtils.toByteArray(resourceStream.getInputStream());
final byte[] processed = processResponse(attributes, bytes);
@@ -307,6 +300,16 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl
log.debug(e.getMessage(), e);
return sendResourceError(resourceResponse, 500, "Unable to open resource stream");
}
+ finally
+ {
+ try {
+ resourceStream.close();
+ }
+ catch (IOException e)
+ {
+ log.warn("Unable to close the resource stream", e);
+ }
+ }
}
return resourceResponse;
http://git-wip-us.apache.org/repos/asf/wicket/blob/285beae6/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java
index be47e7e..49c354d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java
@@ -490,7 +490,7 @@ public abstract class ResourceReference implements Serializable
}
/**
- * @return the resoureces this ResourceReference depends on.
+ * @return the resources this ResourceReference depends on.
*/
public Iterable<? extends HeaderItem> getDependencies()
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/285beae6/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceStreamResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceStreamResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceStreamResource.java
index 9d24d5b..7600aa8 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceStreamResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceStreamResource.java
@@ -46,7 +46,6 @@ public class ResourceStreamResource extends AbstractResource
private String fileName;
private ContentDisposition contentDisposition = ContentDisposition.INLINE;
private String textEncoding;
- private String mimeType;
private Duration cacheDuration;
@@ -145,15 +144,11 @@ public class ResourceStreamResource extends AbstractResource
}
data.setFileName(fileName);
- final String contentType;
- if (fileName != null && Application.exists())
+ String contentType = stream.getContentType();
+ if (contentType == null && fileName != null && Application.exists())
{
contentType = Application.get().getMimeType(fileName);
}
- else
- {
- contentType = stream.getContentType();
- }
data.setContentType(contentType);
data.setTextEncoding(textEncoding);
http://git-wip-us.apache.org/repos/asf/wicket/blob/285beae6/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java
index b30eb8a..a320fd6 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/version/MessageDigestResourceVersion.java
@@ -138,7 +138,7 @@ public class MessageDigestResourceVersion implements IResourceVersion
}
finally
{
- IOUtils.close(inputStream);
+ IOUtils.close(stream);
}
}
catch (IOException e)
http://git-wip-us.apache.org/repos/asf/wicket/blob/285beae6/wicket-core/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java b/wicket-core/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java
index 10d10e4..a3904bf 100644
--- a/wicket-core/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java
+++ b/wicket-core/src/main/java/org/apache/wicket/util/resource/UrlResourceStream.java
@@ -230,8 +230,11 @@ public class UrlResourceStream extends AbstractResourceStream
if (data != null)
{
URLConnection connection = url.openConnection();
- data.contentLength = connection.getContentLength();
- Connections.close(connection);
+ try {
+ data.contentLength = connection.getContentLength();
+ } finally {
+ Connections.close(connection);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/285beae6/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.java
----------------------------------------------------------------------
diff --git a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.java b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.java
index 132b65e..a941ddb 100644
--- a/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.java
+++ b/wicket-devutils/src/main/java/org/apache/wicket/devutils/debugbar/DebugBar.java
@@ -132,7 +132,6 @@ public class DebugBar extends DevUtilsPanel
* Register your own custom contributor that will be part of the debug bar. You must have the
* context of an application for this thread at the time of calling this method.
*
- * @param application
* @param contrib
* custom contributor - can not be null
*/
http://git-wip-us.apache.org/repos/asf/wicket/blob/285beae6/wicket-util/src/main/java/org/apache/wicket/util/io/Connections.java
----------------------------------------------------------------------
diff --git a/wicket-util/src/main/java/org/apache/wicket/util/io/Connections.java b/wicket-util/src/main/java/org/apache/wicket/util/io/Connections.java
index 2b7438e..5336af6 100644
--- a/wicket-util/src/main/java/org/apache/wicket/util/io/Connections.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/io/Connections.java
@@ -124,6 +124,16 @@ public class Connections
return;
}
+ String protocol = connection.getURL().getProtocol();
+ if ("file".equals(protocol)) // XXX what about JarUrlConnection ?!
+ {
+ // Close FileUrlConnection's input stream because
+ // otherwise it leaks open file handles. See WICKET-4359.
+ // Most other connection types should not call getInputStream() here,
+ // especially remote connections.
+ connection.getInputStream().close();
+ }
+
if (connection instanceof HttpURLConnection)
{
((HttpURLConnection)connection).disconnect();
http://git-wip-us.apache.org/repos/asf/wicket/blob/285beae6/wicket-util/src/main/java/org/apache/wicket/util/resource/IResourceStream.java
----------------------------------------------------------------------
diff --git a/wicket-util/src/main/java/org/apache/wicket/util/resource/IResourceStream.java b/wicket-util/src/main/java/org/apache/wicket/util/resource/IResourceStream.java
index da3768d..74bfc29 100644
--- a/wicket-util/src/main/java/org/apache/wicket/util/resource/IResourceStream.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/resource/IResourceStream.java
@@ -44,8 +44,7 @@ public interface IResourceStream extends IModifiable, IClusterable, Closeable
* Gets the mime type of this resource
*
* @return The mime type of this resource, such as "image/jpeg" or "text/html". Return null to
- * let {@link ResourceStreamRequestHandler} handle the Content-Type automatically
- * @see WebResponse#detectContentType(org.apache.wicket.RequestCycle, String)
+ * let ResourceStreamRequestHandler handle the Content-Type automatically
*/
String getContentType();