Return-Path: Delivered-To: apmail-hadoop-avro-commits-archive@minotaur.apache.org Received: (qmail 47657 invoked from network); 4 Feb 2010 18:58:52 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 4 Feb 2010 18:58:52 -0000 Received: (qmail 48964 invoked by uid 500); 4 Feb 2010 18:58:51 -0000 Delivered-To: apmail-hadoop-avro-commits-archive@hadoop.apache.org Received: (qmail 48917 invoked by uid 500); 4 Feb 2010 18:58:51 -0000 Mailing-List: contact avro-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: avro-dev@hadoop.apache.org Delivered-To: mailing list avro-commits@hadoop.apache.org Received: (qmail 48771 invoked by uid 99); 4 Feb 2010 18:58:51 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Feb 2010 18:58:51 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Feb 2010 18:58:50 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 56F5223888FE; Thu, 4 Feb 2010 18:58:30 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r906610 - in /hadoop/avro/trunk: ./ doc/src/content/xdocs/ lang/java/src/java/org/apache/avro/ipc/ Date: Thu, 04 Feb 2010 18:58:30 -0000 To: avro-commits@hadoop.apache.org From: cutting@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100204185830.56F5223888FE@eris.apache.org> Author: cutting Date: Thu Feb 4 18:58:29 2010 New Revision: 906610 URL: http://svn.apache.org/viewvc?rev=906610&view=rev Log: AVRO-340, AVRO-342: Define usage of HTTP as RPC transport in spec, and document that Java's socket and datagram transports are non-standard. Modified: hadoop/avro/trunk/CHANGES.txt hadoop/avro/trunk/doc/src/content/xdocs/spec.xml hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/DatagramServer.java hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/DatagramTransceiver.java hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/HttpTransceiver.java hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/SocketServer.java hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/SocketTransceiver.java Modified: hadoop/avro/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/CHANGES.txt?rev=906610&r1=906609&r2=906610&view=diff ============================================================================== --- hadoop/avro/trunk/CHANGES.txt (original) +++ hadoop/avro/trunk/CHANGES.txt Thu Feb 4 18:58:29 2010 @@ -292,7 +292,13 @@ AVRO-395. Add a cscope Makefile target (Eli Collins via massie) - AVRO-397. Whitespace change and comment clarification in datafile.py (hammer) + AVRO-397. Whitespace change and comment clarification in + datafile.py (hammer) + + AVRO-340. Define usage of HTTP as RPC transport in spec. (cutting) + + AVRO-342. Document that Java's socket and datagram RPC transports + are non-standard. (cutting) OPTIMIZATIONS Modified: hadoop/avro/trunk/doc/src/content/xdocs/spec.xml URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/doc/src/content/xdocs/spec.xml?rev=906610&r1=906609&r2=906610&view=diff ============================================================================== --- hadoop/avro/trunk/doc/src/content/xdocs/spec.xml (original) +++ hadoop/avro/trunk/doc/src/content/xdocs/spec.xml Thu Feb 4 18:58:29 2010 @@ -750,11 +750,7 @@
Message Transport

Messages may be transmitted via - different transport mechanisms. For example, one - might use the HTTP, raw sockets, or SSL, etc. This document - specifies formats for request and response message data, but - it does not yet specify any details of how message data is - encapsulated in different transports.

+ different transport mechanisms.

To the transport, a message is an opaque byte sequence.

@@ -772,6 +768,23 @@ messages with unique identifiers.

+ +
+ HTTP as Transport +

When + HTTP + is used as a transport, each Avro message exchange is an + HTTP request/response pair. All messages of an Avro + protocol should share a single URL at an HTTP server. + Other protocols may also use that URL. Both normal and + error Avro response messages should use the 200 (OK) + response code. The chunked encoding may be used for + requests and responses, but, regardless the Avro request + and response are the entire content of an HTTP request and + response. The HTTP Content-Type of requests and responses + should be specified as "avro/binary". Requests should be + made using the POST method.

+
Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/DatagramServer.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/DatagramServer.java?rev=906610&r1=906609&r2=906610&view=diff ============================================================================== --- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/DatagramServer.java (original) +++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/DatagramServer.java Thu Feb 4 18:58:29 2010 @@ -27,7 +27,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** A simple datagram-based server implementation. */ +/** A datagram-based server implementation. This uses a simple, non-standard + * wire protocol and is not intended for production services. */ public class DatagramServer extends Thread implements Server { private static final Logger LOG = LoggerFactory.getLogger(DatagramServer.class); Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/DatagramTransceiver.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/DatagramTransceiver.java?rev=906610&r1=906609&r2=906610&view=diff ============================================================================== --- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/DatagramTransceiver.java (original) +++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/DatagramTransceiver.java Thu Feb 4 18:58:29 2010 @@ -28,7 +28,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** A datagram-based {@link Transceiver} implementation. */ +/** A datagram-based {@link Transceiver} implementation. This uses a simple, + * non-standard wire protocol and is not intended for production services. */ public class DatagramTransceiver extends Transceiver { private static final Logger LOG = LoggerFactory.getLogger(DatagramTransceiver.class); Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/HttpTransceiver.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/HttpTransceiver.java?rev=906610&r1=906609&r2=906610&view=diff ============================================================================== --- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/HttpTransceiver.java (original) +++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/HttpTransceiver.java Thu Feb 4 18:58:29 2010 @@ -26,14 +26,14 @@ import java.util.ArrayList; import java.util.List; import java.net.URL; -import java.net.URLConnection; +import java.net.HttpURLConnection; /** An HTTP-based {@link Transceiver} implementation. */ public class HttpTransceiver extends Transceiver { static final String CONTENT_TYPE = "avro/binary"; private URL url; - private URLConnection connection; + private HttpURLConnection connection; public HttpTransceiver(URL url) { this.url = url; } @@ -42,7 +42,8 @@ @Override public synchronized List transceive(List request) throws IOException { - this.connection = url.openConnection(); + this.connection = (HttpURLConnection)url.openConnection(); + connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", CONTENT_TYPE); connection.setRequestProperty("Content-Length", Integer.toString(getLength(request))); Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/SocketServer.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/SocketServer.java?rev=906610&r1=906609&r2=906610&view=diff ============================================================================== --- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/SocketServer.java (original) +++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/SocketServer.java Thu Feb 4 18:58:29 2010 @@ -28,7 +28,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** A simple socket-based server implementation. */ +/** A socket-based server implementation. This uses a simple, non-standard wire + * protocol and is not intended for production services. */ public class SocketServer extends Thread implements Server { private static final Logger LOG = LoggerFactory.getLogger(SocketServer.class); Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/SocketTransceiver.java URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/SocketTransceiver.java?rev=906610&r1=906609&r2=906610&view=diff ============================================================================== --- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/SocketTransceiver.java (original) +++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/ipc/SocketTransceiver.java Thu Feb 4 18:58:29 2010 @@ -28,7 +28,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** A simple socket-based {@link Transceiver} implementation. */ +/** A socket-based {@link Transceiver} implementation. This uses a simple, + * non-standard wire protocol and is not intended for production services. */ public class SocketTransceiver extends Transceiver { private static final Logger LOG = LoggerFactory.getLogger(SocketTransceiver.class);