harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "chunrong lai" <chunrong...@gmail.com>
Subject Re: svn commit: r721444 - in /harmony/enhanced/classlib/trunk/modules/luni/src/main: java/java/net/ java/org/apache/harmony/luni/net/ java/org/apache/harmony/luni/platform/ native/luni/shared/
Date Wed, 03 Dec 2008 05:54:17 GMT
 It is a note that multiple classlib tests fail in Linux platform with this
commit, according to the integrity results.
 Below is the stacktrace.

     [java]     [junit] Uncaught exception in Thread-18:
     [java]     [junit] java.lang.UnsatisfiedLinkError: Cannot load native
org/apache/harmony/luni/platform/OSNetworkSystem.write(Ljava/io/FileDescriptor;[BII)I
     [java]     [junit] at
org.apache.harmony.luni.net.PlainSocketImpl.write(PlainSocketImpl.java:554)
     [java]     [junit] at
org.apache.harmony.luni.net.SocketOutputStream.write(SocketOutputStream.java:50)
     [java]     [junit] at
org.apache.harmony.xnet.provider.jsse.SSLSocketImpl.close(SSLSocketImpl.java:507)
     [java]     [junit] at
org.apache.harmony.xnet.provider.jsse.SSLSocketFunctionalTest$2.run(SSLSocketFunctionalTest.java:322)
     [java]     [junit] Caused by: java.lang.UnsatisfiedLinkError:
org/apache/harmony/luni/platform/OSNetworkSystem.write(Ljava/io/FileDescriptor;[BII)I
     [java]     [junit] at
org.apache.harmony.luni.net.PlainSocketImpl.write(PlainSocketImpl.java:554)


On Fri, Nov 28, 2008 at 8:08 PM, <tellison@apache.org> wrote:

> Author: tellison
> Date: Fri Nov 28 04:08:30 2008
> New Revision: 721444
>
> URL: http://svn.apache.org/viewvc?rev=721444&view=rev
> Log:
> Continued tidy-up of socket read and write functionality.
>  - Switch callers from using sendStream() to write().  sendStream() will be
> removed as redundant.
>  - Switch callers from using receiveStream() to read().  receiveStream()
> will be removed as redundant.
>  - Extend read() native to account for non-blocking sockets.
>
> Modified:
>
>  harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/SocketImpl.java
>
>  harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/net/PlainSocketImpl.java
>
>  harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/platform/OSNetworkSystem.java
>
>  harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/shared/OSNetworkSystem.c
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/SocketImpl.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/SocketImpl.java?rev=721444&r1=721443&r2=721444&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/SocketImpl.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/SocketImpl.java
> Fri Nov 28 04:08:30 2008
> @@ -274,7 +274,7 @@
>             return this.netImpl.sendDatagram2(fd, buffer, offset, count,
> port,
>                     address);
>         }
> -        return this.netImpl.sendStream(fd, buffer, offset, count);
> +        return this.netImpl.write(fd, buffer, offset, count);
>     }
>
>     /**
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/net/PlainSocketImpl.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/net/PlainSocketImpl.java?rev=721444&r1=721443&r2=721444&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/net/PlainSocketImpl.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/net/PlainSocketImpl.java
> Fri Nov 28 04:08:30 2008
> @@ -534,16 +534,16 @@
>         if (shutdownInput) {
>             return -1;
>         }
> -        try {
> -            int read = netImpl.receiveStream(fd, buffer, offset, count,
> -                    receiveTimeout);
> -            if (read == -1) {
> -                shutdownInput = true;
> -            }
> -            return read;
> -        } catch (InterruptedIOException e) {
> -            throw new SocketTimeoutException(e.getMessage());
> +        int read = netImpl.read(fd, buffer, offset, count,
> receiveTimeout);
> +        // Return of zero bytes for a blocking socket means a timeout
> occurred
> +        if (read == 0) {
> +            throw new SocketTimeoutException();
>         }
> +        // Return of -1 indicates the peer was closed
> +        if (read == -1) {
> +            shutdownInput = true;
> +        }
> +        return read;
>     }
>
>     int write(byte[] buffer, int offset, int count) throws IOException {
> @@ -551,6 +551,6 @@
>             return netImpl.sendDatagram2(fd, buffer, offset, count, port,
>                     address);
>         }
> -        return netImpl.sendStream(fd, buffer, offset, count);
> +        return netImpl.write(fd, buffer, offset, count);
>     }
>  }
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/platform/OSNetworkSystem.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/platform/OSNetworkSystem.java?rev=721444&r1=721443&r2=721444&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/platform/OSNetworkSystem.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/platform/OSNetworkSystem.java
> Fri Nov 28 04:08:30 2008
> @@ -228,6 +228,11 @@
>     /**
>      * Read available bytes from the given file descriptor into a byte
> array.
>      *
> +     * The read has an optional timeout parameter, which if non-zero is
> the
> +     * length of time that the read will wait on a select call to see if
> any
> +     * bytes are available for reading. If the timeout expires the method
> +     * returns zero to indicate no bytes were read.
> +     *
>      * @param fd
>      *            the socket file descriptor to read
>      * @param data
> @@ -238,7 +243,9 @@
>      * @param count
>      *            the maximum number of bytes to read
>      * @param timeout
> -     *            the length of time to wait for the bytes, in
> milliseconds
> +     *            the length of time to wait for the bytes, in
> milliseconds; or
> +     *            zero to indicate no timeout applied. When there is no
> timeout
> +     *            applied the read may block based upon socket options.
>      * @return number of bytes read, or zero if there were no bytes
> available
>      *         before the timeout occurred, or -1 to indicate the socket is
>      *         closed
> @@ -314,11 +321,13 @@
>      *            the max number of bytes to receive
>      * @param timeout
>      *            the max time the read operation should block waiting for
> data
> -     * @return int the actual number of bytes read
> +     * @return the actual number of bytes read
>      * @throws IOException
>      * @throws SocketException
>      *             if an error occurs while reading
> +     * @deprecated use {@link #read(FileDescriptor, byte[], int, int,
> int)}
>      */
> +    @Deprecated
>     public native int receiveStream(FileDescriptor aFD, byte[] data,
>             int offset, int count, int timeout) throws IOException;
>
> @@ -482,7 +491,9 @@
>      * @throws IOException
>      * @throws SocketException
>      *             if an error occurs while writing
> +     * @deprecated use {@link #write(FileDescriptor, byte[], int, int)}
>      */
> +    @Deprecated
>     public native int sendStream(FileDescriptor fd, byte[] data, int
> offset,
>             int count) throws IOException;
>
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/shared/OSNetworkSystem.c
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/shared/OSNetworkSystem.c?rev=721444&r1=721443&r2=721444&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/shared/OSNetworkSystem.c
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/shared/OSNetworkSystem.c
> Fri Nov 28 04:08:30 2008
> @@ -339,7 +339,7 @@
>   /* Read directly into the byte array */
>   result =
>     Java_org_apache_harmony_luni_platform_OSNetworkSystem_readDirect
> -    (env, thiz, fd, (jlong) (IDATA)message + offset, count, timeout);
> +    (env, thiz, fd, (jlong) (IDATA)(message + offset), count, timeout);
>
>   /* If the pointer was to a copy it needs to be released */
>   if (isCopy == JNI_TRUE) {
> @@ -361,32 +361,38 @@
>  */
>  JNIEXPORT jint JNICALL
>  Java_org_apache_harmony_luni_platform_OSNetworkSystem_readDirect
> -  (JNIEnv * env, jobject thiz, jobject fileDescriptor, jlong address,
> +  (JNIEnv * env, jobject thiz, jobject fd, jlong address,
>    jint count, jint timeout)
>  {
>   PORT_ACCESS_FROM_ENV(env);
>   hysocket_t hysocketP;
> -  jbyte *message = (jbyte *) (IDATA)address;
> +  U_8 *message = (U_8 *)(IDATA)address;
>   I_32 result, localCount;
>
> -  hysocketP = getJavaIoFileDescriptorContentsAsAPointer(env,
> fileDescriptor);
> +  hysocketP = getJavaIoFileDescriptorContentsAsAPointer(env, fd);
>
> -  /* Check and potentially wait to see if any bytes available */
> -  result = selectRead(env, hysocketP, timeout * 1000, FALSE);
> -  if (0 > result) {
> -    if (result == HYPORT_ERROR_SOCKET_TIMEOUT) {
> -      return (jint) 0;  // return zero bytes to indicate timeout
> +  /* A non-zero timeout will first check, and potentially wait, to see if
> any
> +   * bytes are available
> +   */
> +  if (timeout != 0) {
> +    result = selectRead(env, hysocketP, timeout * 1000, FALSE);
> +    if (0 > result) {
> +      if (result == HYPORT_ERROR_SOCKET_TIMEOUT) {
> +        return (jint) 0;  // return zero bytes to indicate timeout
> +      }
> +      throwJavaNetSocketException(env, result);
> +      return (jint) 0;  // Unused, exception takes precedence
>     }
> -    throwJavaNetSocketException(env, result);
> -    return (jint) 0;  // Unused, exception takes precedence
>   }
>
>   /* Limit size of read to 64k bytes */
>   localCount = (count < 65536) ? count : 65536;
> -
> -  result =
> -    hysock_read(hysocketP, (U_8 *) message, localCount, HYSOCK_NOFLAGS);
> +  result = hysock_read(hysocketP, message, localCount, HYSOCK_NOFLAGS);
>   if (0 > result) {
> +    if (HYPORT_ERROR_SOCKET_WOULDBLOCK == result) {
> +      /* We were asked to read on a nonblocking socket and there is no
> data available */
> +      return (jint) 0;
> +    }
>     throwJavaNetSocketException(env, result);
>     return (jint) 0;
>   }
> @@ -395,6 +401,7 @@
>   return (0 == result) ? (jint) - 1 : (jint) result;
>  }
>
> +
>  /*
>  * Class:     org_apache_harmony_luni_platform_OSNetworkSystem
>  * Method:    write
> @@ -415,7 +422,7 @@
>   /* Write directly from the byte array */
>   result =
>     Java_org_apache_harmony_luni_platform_OSNetworkSystem_writeDirect
> -    (env, thiz, fd, (jlong)((IDATA) message + offset), count);
> +    (env, thiz, fd, (jlong) (IDATA)(message + offset), count);
>
>
>   /* If the pointer was to a copy it needs to be released */
> @@ -1622,6 +1629,9 @@
>   }
>  }
>
> +/*
> + * Deprecated.  Use
> Java_org_apache_harmony_luni_platform_OSNetworkSystem_read
> + */
>  JNIEXPORT jint JNICALL
>  Java_org_apache_harmony_luni_platform_OSNetworkSystem_receiveStream
>   (JNIEnv * env, jobject thiz, jobject fileDescriptor, jbyteArray data,
> @@ -1682,9 +1692,7 @@
>
>
>  /*
> - * Class:     org_apache_harmony_luni_platform_OSNetworkSystem
> - * Method:    sendStream
> - * Signature: (Ljava/io/FileDescriptor;[BII)I
> + * Deprecated : use
> Java_org_apache_harmony_luni_platform_OSNetworkSystem_write
>  */
>  JNIEXPORT jint JNICALL
>  Java_org_apache_harmony_luni_platform_OSNetworkSystem_sendStream
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message