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);