Re: 6988037: fileClose prints debug message if close fails
Hi Alan, That sounds familiar and looks good. (There has been some testing with such a change already 8-) ) Regards Kevin On 29/09/2010 13:25, Alan Bateman wrote: I need a reviewer for a small change to remove a debug message that someone left when fixing a bug in the java.io implementation early in jdk7. The debug message is printed if closing a file fails (for example EIO because of a NFS stale handle). That change also added code to restore the file descriptor field but this isn't needed because the stream classes have a closed flag to ensure that they only attempt to close the underlying file descriptor once. Furthermore, if close fails then the state of the file descriptor is unspecified and so cannot be used again. The proposed patch is attached. Thanks, Alan. diff --git a/src/solaris/native/java/io/io_util_md.c b/src/solaris/native/java/io/io_util_md.c --- a/src/solaris/native/java/io/io_util_md.c +++ b/src/solaris/native/java/io/io_util_md.c @@ -83,8 +83,6 @@ fileClose(JNIEnv *env, jobject this, jfi close(devnull); } } else if (JVM_Close(fd) == -1) { -SET_FD(this, fd, fid); // restore fd -printf(JVM_Close returned -1\n); -JNU_ThrowIOExceptionWithLastError(env, close failed); +JNU_ThrowIOExceptionWithLastError(env, close failed); } } diff --git a/src/windows/native/java/io/io_util_md.c b/src/windows/native/java/io/io_util_md.c --- a/src/windows/native/java/io/io_util_md.c +++ b/src/windows/native/java/io/io_util_md.c @@ -531,7 +531,6 @@ handleClose(JNIEnv *env, jobject this, j SET_FD(this, -1, fid); if (CloseHandle(h) == 0) { /* Returns zero on failure */ -SET_FD(this, fd, fid); // restore fd JNU_ThrowIOExceptionWithLastError(env, close failed); } return 0;
6988037: fileClose prints debug message if close fails
I need a reviewer for a small change to remove a debug message that someone left when fixing a bug in the java.io implementation early in jdk7. The debug message is printed if closing a file fails (for example EIO because of a NFS stale handle). That change also added code to restore the file descriptor field but this isn't needed because the stream classes have a closed flag to ensure that they only attempt to close the underlying file descriptor once. Furthermore, if close fails then the state of the file descriptor is unspecified and so cannot be used again. The proposed patch is attached. Thanks, Alan. diff --git a/src/solaris/native/java/io/io_util_md.c b/src/solaris/native/java/io/io_util_md.c --- a/src/solaris/native/java/io/io_util_md.c +++ b/src/solaris/native/java/io/io_util_md.c @@ -83,8 +83,6 @@ fileClose(JNIEnv *env, jobject this, jfi close(devnull); } } else if (JVM_Close(fd) == -1) { -SET_FD(this, fd, fid); // restore fd -printf(JVM_Close returned -1\n); -JNU_ThrowIOExceptionWithLastError(env, close failed); +JNU_ThrowIOExceptionWithLastError(env, close failed); } } diff --git a/src/windows/native/java/io/io_util_md.c b/src/windows/native/java/io/io_util_md.c --- a/src/windows/native/java/io/io_util_md.c +++ b/src/windows/native/java/io/io_util_md.c @@ -531,7 +531,6 @@ handleClose(JNIEnv *env, jobject this, j SET_FD(this, -1, fid); if (CloseHandle(h) == 0) { /* Returns zero on failure */ -SET_FD(this, fd, fid); // restore fd JNU_ThrowIOExceptionWithLastError(env, close failed); } return 0;
Re: 6988037: fileClose prints debug message if close fails
Looks good. Rémi Le 29/09/2010 14:25, Alan Bateman a écrit : I need a reviewer for a small change to remove a debug message that someone left when fixing a bug in the java.io implementation early in jdk7. The debug message is printed if closing a file fails (for example EIO because of a NFS stale handle). That change also added code to restore the file descriptor field but this isn't needed because the stream classes have a closed flag to ensure that they only attempt to close the underlying file descriptor once. Furthermore, if close fails then the state of the file descriptor is unspecified and so cannot be used again. The proposed patch is attached. Thanks, Alan. diff --git a/src/solaris/native/java/io/io_util_md.c b/src/solaris/native/java/io/io_util_md.c --- a/src/solaris/native/java/io/io_util_md.c +++ b/src/solaris/native/java/io/io_util_md.c @@ -83,8 +83,6 @@ fileClose(JNIEnv *env, jobject this, jfi close(devnull); } } else if (JVM_Close(fd) == -1) { -SET_FD(this, fd, fid); // restore fd -printf(JVM_Close returned -1\n); -JNU_ThrowIOExceptionWithLastError(env, close failed); +JNU_ThrowIOExceptionWithLastError(env, close failed); } } diff --git a/src/windows/native/java/io/io_util_md.c b/src/windows/native/java/io/io_util_md.c --- a/src/windows/native/java/io/io_util_md.c +++ b/src/windows/native/java/io/io_util_md.c @@ -531,7 +531,6 @@ handleClose(JNIEnv *env, jobject this, j SET_FD(this, -1, fid); if (CloseHandle(h) == 0) { /* Returns zero on failure */ -SET_FD(this, fd, fid); // restore fd JNU_ThrowIOExceptionWithLastError(env, close failed); } return 0;