Ben M, Doh! You are right, I am sending the wrong message (went one level too deep).
Thanks for the help. On Fri, May 9, 2014 at 2:38 PM, Benjamin Mahler <benjamin.mah...@gmail.com>wrote: > It seems as though you're trying to send a 'RegisterFrameworkMessage' but > you're actually encoding a 'FrameworkInfo'? > > The error message indicates that your binary data is not matching the > expected format. > > > On Fri, May 9, 2014 at 4:29 AM, Vladimir Vivien <vladimir.viv...@gmail.com > > wrote: > >> Ben M, >> Re built mesos from master. Made the suggested changes for headers. >> Getting HTTP response back now. >> >> Still getting Error, even though getting 201 back (see below) >> "... protobuf.hpp:400] Initialization errors: framework.user, >> framework.name". >> >> I am sending protobuf encoded binary data. >> I am using protobuf 2.5 + a Go protobuf lib. >> >> The String representation is >> "user:"test" name:"gomes" id:<value:"gomes-framework-1" >" >> >> HTTP Request >> POST /master/mesos.internal.RegisterFrameworkMessage HTTP/1.1 >> Host: 127.0.0.1:5050 >> User-Agent: Go 1.1 package http >> Content-Length: 34 >> Connection: Keep-Alive >> Content-Type: application/x-protobuf >> Libprocess-From: scheduler(1)@127.0.0.1:8080 >> Accept-Encoding: gzip >> >> HTTP Response >> 2014/05/09 07:27:11 Response Body: >> HTTP/1.1 202 Accepted >> Content-Length: 0 >> Date: Fri, 09 May 2014 11:27:11 GMT >> >> >> >> On Tue, May 6, 2014 at 4:06 PM, Benjamin Mahler < >> benjamin.mah...@gmail.com> wrote: >> >>> Can you build this off of the latest master code? The reviews have been >>> committed! >>> >>> You should now use "Libprocess-From" instead of "User-Agent". >>> >>> E.g. >>> >>> Libprocess-From: scheduler@127.0.0.1:8080 >>> >>> Also, what is your "string" representation of the protobuf? You're >>> serializing it using a protobuf library, right? It should be binary data. >>> >>> >>> On Sun, May 4, 2014 at 7:57 AM, Vladimir Vivien < >>> vladimir.viv...@gmail.com> wrote: >>> >>>> Slow progress from Go front: >>>> I am at a point where I am testing this approach using Go. >>>> >>>> HTTP Sent: >>>> POST /master/mesos.internal.RegisterFrameworkMessage HTTP/1.1 >>>> Host: 127.0.0.1:5050 >>>> User-Agent: libprocess/scheduler(1)@127.0.0.1:8080 >>>> Content-Length: 34 >>>> Connection: Keep-Alive >>>> Content-Type: application/x-protobuf >>>> Accept-Encoding: gzip >>>> >>>> String representation of protobuf sent: >>>> user:"test" name:"gomes" id:<value:"gomes-framework-1" > >>>> >>>> Master console response >>>> W0504 10:53:48.263000 3960 protobuf.hpp:399] Initialization errors: >>>> framework.user, framework.name >>>> >>>> Before I delve in to CPP to see what's going on, hope someone can let >>>> me know what I am doing wrong. >>>> >>>> PS. I havent applied the two patches mentioned here. >>>> >>>> vladimir.vivien >>>> >>>> >>>> >>>> On Wed, Apr 30, 2014 at 1:59 AM, Benjamin Mahler < >>>> benjamin.mah...@gmail.com> wrote: >>>> >>>>> Brian, I'm curious whether most python HTTP libraries support using >>>>> custom HTTP request headers. >>>>> >>>>> We'll land benh's patches to send 202 responses in 0.19.0: >>>>> >>>>> https://reviews.apache.org/r/20276/ >>>>> https://reviews.apache.org/r/20277/ >>>>> >>>>> Once these get committed, you should be able to get something working >>>>> nicely. This will allow libraries like "pesos" to use a custom header >>>>> "Libprocess-From" to receive 202 responses for messages. >>>>> >>>>> We'd also like to get some more foundation laid for the lower-level >>>>> API, I'll let benh comment on what else is needed here: >>>>> >>>>> https://reviews.apache.org/r/20309/ >>>>> >>>>> >>>>> On Sun, Apr 27, 2014 at 9:23 PM, Vetoshkin Nikita < >>>>> nikita.vetosh...@gmail.com> wrote: >>>>> >>>>>> That's great news indeed! >>>>>> Maybe there should be a place on mesos site mentioning such efforts? >>>>>> >>>>>> >>>>>> On Mon, Apr 28, 2014 at 5:24 AM, Brian Wickman <wick...@gmail.com> >>>>>> wrote: >>>>>> >>>>>> > To my knowledge there is no Zookeeper Group implementation for Go >>>>>> yet. >>>>>> > There do however appear to be Go zookeeper >>>>>> > bindings<https://github.com/samuel/go-zookeeper>. >>>>>> > From my day of spelunking through code, it seems that probably the >>>>>> most >>>>>> > challenging thing will be getting a ZookeeperMasterDetector >>>>>> implementation >>>>>> > working correctly to enable Scheduler "high availability" mode for >>>>>> these >>>>>> > other languages. >>>>>> > >>>>>> > Java/Python/C++ have the benefit of preexisting Group >>>>>> implementations >>>>>> > (java< >>>>>> > >>>>>> https://github.com/twitter/commons/blob/master/src/java/com/twitter/common/zookeeper/Group.java >>>>>> > > >>>>>> > , python< >>>>>> > >>>>>> https://github.com/twitter/commons/blob/master/src/python/twitter/common/zookeeper/group/kazoo_group.py >>>>>> > > >>>>>> > , c++< >>>>>> > >>>>>> https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=blob;f=src/zookeeper/group.cpp;h=70972980dd25618c76eb36e0a31d060c096e36dc;hb=HEAD >>>>>> > >) >>>>>> > which are the foundation for ZK master detection. An intermediate >>>>>> option >>>>>> > could be to pull the ZookeeperMasterDetectorProcess out into a >>>>>> standalone >>>>>> > binary and have the native implementation talk to it as a sort of >>>>>> proxy to >>>>>> > figure out who the leading master is. But that's not nearly as >>>>>> satisfying >>>>>> > as a pure language implementation. >>>>>> > >>>>>> > ~brian >>>>>> > >>>>>> > >>>>>> > On Sun, Apr 27, 2014 at 3:22 PM, Vladimir Vivien >>>>>> > <vladimir.viv...@gmail.com>wrote: >>>>>> > >>>>>> > > It must be the right time for this. I started the same effort >>>>>> for Go. >>>>>> > > I am following Kevin's example and Ben's well-documented email >>>>>> (in this >>>>>> > > thread). >>>>>> > > Very early but should have some proof-of-concept working soon. >>>>>> > > >>>>>> > > https://github.com/vladimirvivien/ionos >>>>>> > > >>>>>> > > >>>>>> > > On Sun, Apr 27, 2014 at 6:07 PM, Tom Arnfeld <t...@duedil.com> >>>>>> wrote: >>>>>> > > >>>>>> > >> (Sorry to jump into this thread) >>>>>> > >> >>>>>> > >> I have to say, this is very exciting! It only became apparent to >>>>>> me how >>>>>> > >> painful it is having to compile the mesos egg into a Python >>>>>> framework >>>>>> > the >>>>>> > >> past week >>>>>> > >> while writing one, especially when running the framework on a >>>>>> different >>>>>> > >> architecture to the one running the executor! >>>>>> > >> >>>>>> > >> Looking forward to being able to use this. :-) >>>>>> > >> >>>>>> > >> It’d be awesome if the API was near identical, so one could >>>>>> switch >>>>>> > >> between `mesos` and `pesos` easily… >>>>>> > >> >>>>>> > >> Tom. >>>>>> > >> >>>>>> > >> On 27 Apr 2014, at 22:42, Brian Wickman <wick...@gmail.com> >>>>>> wrote: >>>>>> > >> >>>>>> > >> > And I've started a skeleton implementation of the Mesos >>>>>> framework API >>>>>> > at >>>>>> > >> > https://github.com/wickman/pesos >>>>>> > >> > >>>>>> > >> > While I vendored the translated protobuf, it would be great to >>>>>> tackle >>>>>> > >> > https://issues.apache.org/jira/browse/MESOS-857 at some point. >>>>>> > >> > >>>>>> > >> > >>>>>> > >> > On Sun, Apr 27, 2014 at 12:50 PM, Brian Wickman < >>>>>> wick...@gmail.com> >>>>>> > >> wrote: >>>>>> > >> > >>>>>> > >> >> I've implemented a pure python version of the basic >>>>>> > >> >> Process/ProtobufProcess mechanics and wire protocol. I >>>>>> haven't gone >>>>>> > >> so far >>>>>> > >> >> as Kevin and tried to register a framework or maybe talk to a >>>>>> > >> replicated >>>>>> > >> >> log, but it shouldn't be much more work: >>>>>> > >> >> >>>>>> > >> >> https://github.com/wickman/compactor >>>>>> > >> >> >>>>>> > >> >> Zero documentation but you can read the tests for a general >>>>>> idea of >>>>>> > >> what's >>>>>> > >> >> going on. >>>>>> > >> >> >>>>>> > >> >> cheers, >>>>>> > >> >> brian >>>>>> > >> >> >>>>>> > >> >> >>>>>> > >> >> >>>>>> > >> >> On Sun, Apr 13, 2014 at 10:28 PM, Kevin Sweeney < >>>>>> > >> kevin.t.swee...@gmail.com >>>>>> > >> >>> wrote: >>>>>> > >> >> >>>>>> > >> >>> I've got the start of a JVM verson on github - it can >>>>>> currently >>>>>> > >> register >>>>>> > >> >>> a framework and parse the response. Client-side I still need >>>>>> to >>>>>> > >> figure out >>>>>> > >> >>> how to properly configure Keep-Alive. Servlet can dispatch >>>>>> messages >>>>>> > to >>>>>> > >> >>> message handlers in a type-safe way and returns a 202 for >>>>>> messages >>>>>> > >> it's >>>>>> > >> >>> going to handle. Code's a mess currently. >>>>>> > >> >>> >>>>>> > >> >>> https://github.com/kevints/mesos-framework-api >>>>>> > >> >>> >>>>>> > >> >>> >>>>>> > >> >>> On Fri, Apr 11, 2014 at 7:12 PM, Benjamin Hindman < >>>>>> > >> b...@eecs.berkeley.edu >>>>>> > >> >>>> wrote: >>>>>> > >> >>> >>>>>> > >> >>>> First, my apologies for getting to this party so late. It's >>>>>> great >>>>>> > to >>>>>> > >> see >>>>>> > >> >>>> people interested in helping create native-language Mesos >>>>>> > libraries. >>>>>> > >> >>>> >>>>>> > >> >>>> Vladimir: my presentation was definitely referring to the >>>>>> the >>>>>> > >> low-level >>>>>> > >> >>>> protocol between master, framework (scheduler), slave, and >>>>>> > >> executors. I'll >>>>>> > >> >>>> do my best here to clarify how the current protocol works >>>>>> and what >>>>>> > >> we need >>>>>> > >> >>>> to do to get it to the point where we can write >>>>>> native-language >>>>>> > >> libraries. >>>>>> > >> >>>> (Eventually it would be great to move some of this into >>>>>> > >> documentation as >>>>>> > >> >>>> necessary.) >>>>>> > >> >>>> >>>>>> > >> >>>> As Nikita pointed out, the protocol is currently >>>>>> "HTTP-like". As my >>>>>> > >> >>>> presentation describes, think actors and one-way message >>>>>> passing >>>>>> > when >>>>>> > >> >>>> considering how the protocol works. >>>>>> > >> >>>> >>>>>> > >> >>>> To send a message an actor POSTs an HTTP request where the >>>>>> actor >>>>>> > >> that is >>>>>> > >> >>>> supposed to receive the message is the first component of >>>>>> the >>>>>> > >> request path >>>>>> > >> >>>> and the name of the message is the remaining part of the >>>>>> path. To >>>>>> > >> >>>> distinguish one of these "messages" from a normal HTTP >>>>>> request we >>>>>> > >> look to >>>>>> > >> >>>> see if the 'User-Agent' is 'libprocess/...'. For example: >>>>>> > >> >>>> >>>>>> > >> >>>> POST /master/mesos.internal.RegisterFrameworkMessage >>>>>> HTTP/1.1 >>>>>> > >> >>>> User-Agent: libprocess/scheduler(1)@10.0.1.7:53523 >>>>>> > >> >>>> >>>>>> > >> >>>> ... represents a message with the name >>>>>> > >> >>>> 'mesos.internal.RegisterFrameworkMessage' destined for the >>>>>> actor >>>>>> > >> 'master' >>>>>> > >> >>>> coming from the actor 'scheduler(1)' at 10.0.1.7:53523. If >>>>>> the >>>>>> > >> 'master' >>>>>> > >> >>>> actor were to send a message back it would look something >>>>>> like >>>>>> > this: >>>>>> > >> >>>> >>>>>> > >> >>>> POST /scheduler(1)/mesos.internal.FrameworkRegisteredMessage >>>>>> > HTTP/1.1 >>>>>> > >> >>>> User-Agent: libprocess/master@10.0.1.7:5050 >>>>>> > >> >>>> >>>>>> > >> >>>> So, one-way message passing via HTTP POST. >>>>>> > >> >>>> >>>>>> > >> >>>> The message data is captured as the body of the HTTP >>>>>> request (which >>>>>> > >> can >>>>>> > >> >>>> be specified using _either_ Content-Length or a >>>>>> Transfer-Encoding, >>>>>> > >> and as >>>>>> > >> >>>> Nikita points out we use chunked transfer encoding >>>>>> internally). The >>>>>> > >> data is >>>>>> > >> >>>> arbitrary and the actor ultimately decides how it wants to >>>>>> "parse" >>>>>> > >> it. In >>>>>> > >> >>>> Mesos, 99% of our messages use serialized protobufs, but we >>>>>> also >>>>>> > >> send a few >>>>>> > >> >>>> messages with just arbitrary data. All this really means is >>>>>> that >>>>>> > >> knowing >>>>>> > >> >>>> the actor and message name is not enough, you also need to >>>>>> know >>>>>> > what >>>>>> > >> the >>>>>> > >> >>>> body type is supposed to be for that message. In the future >>>>>> we'll >>>>>> > >> probably >>>>>> > >> >>>> enable messages with either JSON or serialized protobuf[1] >>>>>> ... for >>>>>> > >> now, >>>>>> > >> >>>> just serialized protobuf. >>>>>> > >> >>>> >>>>>> > >> >>>> Okay, so where does this break down when trying to do this >>>>>> > >> >>>> language-natively? I've had some of this in the works and >>>>>> this >>>>>> > >> conversation >>>>>> > >> >>>> has motivated me to publish some reviews addressing the >>>>>> issues: >>>>>> > >> >>>> >>>>>> > >> >>>> (1) We'll need to return a response if one plans to use a >>>>>> native >>>>>> > HTTP >>>>>> > >> >>>> library since it'll expect request/response. >>>>>> > >> >>>> https://reviews.apache.org/r/20276 introduces responding >>>>>> with a >>>>>> > '202 >>>>>> > >> >>>> Accepted' for these messages (from the HTTP specification, >>>>>> a '202 >>>>>> > >> >>>> Accepted': "The request has been accepted for processing, >>>>>> but the >>>>>> > >> >>>> processing has not been completed. The request might or >>>>>> might not >>>>>> > >> >>>> eventually be acted upon, as it might be disallowed when >>>>>> processing >>>>>> > >> >>>> actually takes place. There is no facility for re-sending a >>>>>> status >>>>>> > >> code >>>>>> > >> >>>> from an asynchronous operation such as this."). >>>>>> > >> >>>> >>>>>> > >> >>>> (2) Most HTTP libraries will set their 'User-Agent' >>>>>> themselves, so >>>>>> > >> >>>> https://reviews.apache.org/r/20277 introduces a >>>>>> 'libprocess-from' >>>>>> > >> >>>> header that works similar to User-Agent. There is still some >>>>>> > cleanup >>>>>> > >> I'd >>>>>> > >> >>>> love to do around stringification of PIDs (the underlying >>>>>> type >>>>>> > Mesos >>>>>> > >> uses >>>>>> > >> >>>> for remote actors, inspired by Erlang). Until then, the >>>>>> > >> 'libprocess-from' >>>>>> > >> >>>> string is unfortunately esoteric (see the test). >>>>>> > >> >>>> >>>>>> > >> >>>> The combination of these two patches should make sending and >>>>>> > >> receiving >>>>>> > >> >>>> messages straightforward. However, we still plan to expose >>>>>> the >>>>>> > >> low-level >>>>>> > >> >>>> Event and Call protobuf messages and that will be the >>>>>> preferred >>>>>> > >> approach >>>>>> > >> >>>> for building a native-language library. Follow along at >>>>>> > >> >>>> https://issues.apache.org/jira/browse/MESOS-1127 for more >>>>>> details. >>>>>> > >> (To >>>>>> > >> >>>> be clear, you'd still be able to implement native-language >>>>>> > libraries >>>>>> > >> with >>>>>> > >> >>>> the patches above but we'll be deprecating the protobufs >>>>>> you'd be >>>>>> > >> using in >>>>>> > >> >>>> favor of Event and Call protobufs instead. If you're eager >>>>>> to get >>>>>> > >> that >>>>>> > >> >>>> going before Event and Call are committed I'm happy to >>>>>> discuss the >>>>>> > >> existing >>>>>> > >> >>>> protobufs in more detail.) >>>>>> > >> >>>> >>>>>> > >> >>>> I hope this helps. >>>>>> > >> >>>> >>>>>> > >> >>>> Ben. >>>>>> > >> >>>> >>>>>> > >> >>>> >>>>>> > >> >>>> On Fri, Apr 11, 2014 at 4:54 AM, Vladimir Vivien < >>>>>> > >> >>>> vladimir.viv...@gmail.com> wrote: >>>>>> > >> >>>> >>>>>> > >> >>>>> Nikita >>>>>> > >> >>>>> Thanks for the JIRA. >>>>>> > >> >>>>> >>>>>> > >> >>>>> >>>>>> > >> >>>>> On Wed, Apr 9, 2014 at 2:16 PM, Vetoshkin Nikita < >>>>>> > >> >>>>> nikita.vetosh...@gmail.com >>>>>> > >> >>>>>> wrote: >>>>>> > >> >>>>> >>>>>> > >> >>>>>> BTW, there is also somehow related ticket >>>>>> > >> >>>>>> https://issues.apache.org/jira/browse/MESOS-930 >>>>>> > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> > >> >>>>>> On Wed, Apr 9, 2014 at 9:54 PM, Benjamin Mahler >>>>>> > >> >>>>>> <benjamin.mah...@gmail.com>wrote: >>>>>> > >> >>>>>> >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>>> I thought the low-level api being referred in the >>>>>> > >> >>>>>>>> video had to do with communication between master and >>>>>> > >> >>>>>> framework|executor >>>>>> > >> >>>>>>>> for scheduling. But, it's really administrative. I >>>>>> thought >>>>>> > that >>>>>> > >> >>>>> would >>>>>> > >> >>>>>>>> have been an opportunity for a Go binding that did not >>>>>> require >>>>>> > >> >>>>> the C++ >>>>>> > >> >>>>>>>> libraries. >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>> >>>>>> > >> >>>>>>> Vladimir, the low-level API referred to in the talk is >>>>>> exactly >>>>>> > >> what >>>>>> > >> >>>>>> you're >>>>>> > >> >>>>>>> interpreting, it is for communication between master and >>>>>> > >> scheduler, >>>>>> > >> >>>>> and >>>>>> > >> >>>>>>> slave and executor. You could definitely build pure go >>>>>> bindings >>>>>> > as >>>>>> > >> >>>>> you >>>>>> > >> >>>>>>> described, just not with JSON. >>>>>> > >> >>>>>>> >>>>>> > >> >>>>>>> Forget I mentioned anything about the administrative >>>>>> endpoints >>>>>> > and >>>>>> > >> >>>>> JSON, >>>>>> > >> >>>>>> as >>>>>> > >> >>>>>>> I see that's leading to confusion. ;) >>>>>> > >> >>>>>>> >>>>>> > >> >>>>>>> On Wed, Apr 9, 2014 at 3:39 AM, Vladimir Vivien >>>>>> > >> >>>>>>> <vladimir.viv...@gmail.com>wrote: >>>>>> > >> >>>>>>> >>>>>> > >> >>>>>>>> Ben, >>>>>> > >> >>>>>>>> Thank you for clarifying. I thought the low-level api >>>>>> being >>>>>> > >> >>>>> referred in >>>>>> > >> >>>>>>> the >>>>>> > >> >>>>>>>> video had to do with communication between master and >>>>>> > >> >>>>>> framework|executor >>>>>> > >> >>>>>>>> for scheduling. But, it's really administrative. I >>>>>> thought >>>>>> > that >>>>>> > >> >>>>> would >>>>>> > >> >>>>>>>> have been an opportunity for a Go binding that did not >>>>>> require >>>>>> > >> >>>>> the C++ >>>>>> > >> >>>>>>>> libraries. >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>>> Thanks anyway. >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>>> On Tue, Apr 8, 2014 at 4:52 PM, Benjamin Mahler >>>>>> > >> >>>>>>>> <benjamin.mah...@gmail.com>wrote: >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>>>> Sorry, I was not referring to implementing a scheduler >>>>>> via >>>>>> > JSON >>>>>> > >> >>>>>> instead >>>>>> > >> >>>>>>>> of >>>>>> > >> >>>>>>>>> protobuf, in theory that would be possible but there >>>>>> has been >>>>>> > no >>>>>> > >> >>>>>>> planning >>>>>> > >> >>>>>>>>> in this area. Sorry for the confusion. >>>>>> > >> >>>>>>>>> >>>>>> > >> >>>>>>>>> I was referring to administrative endpoints. For >>>>>> example, >>>>>> > >> >>>>> kicking a >>>>>> > >> >>>>>>>>> framework out or telling the master a slave is needs >>>>>> to be >>>>>> > >> >>>>> repaired. >>>>>> > >> >>>>>>>> These >>>>>> > >> >>>>>>>>> endpoints may rely on the ability to convert JSON to >>>>>> internal >>>>>> > >> >>>>>>> protobufs. >>>>>> > >> >>>>>>>>> >>>>>> > >> >>>>>>>>> Can you clarify what you're looking to do? Are you >>>>>> looking to >>>>>> > >> >>>>>> implement >>>>>> > >> >>>>>>>> an >>>>>> > >> >>>>>>>>> API in Go that communicates with JSON instead of >>>>>> serialized >>>>>> > >> >>>>> protobuf? >>>>>> > >> >>>>>>>>> >>>>>> > >> >>>>>>>>> On Tue, Apr 8, 2014 at 1:19 PM, Vladimir Vivien >>>>>> > >> >>>>>>>>> <vladimir.viv...@gmail.com>wrote: >>>>>> > >> >>>>>>>>> >>>>>> > >> >>>>>>>>>> Ben, >>>>>> > >> >>>>>>>>>> That is exactly what I am asking. >>>>>> > >> >>>>>>>>>> Is that something coming up soon, is there a JIRA I >>>>>> can look >>>>>> > >> >>>>> at? >>>>>> > >> >>>>>>>>>> I wanna get early start on a native json Go api or >>>>>> even help >>>>>> > >> >>>>> out if >>>>>> > >> >>>>>>>>>> possible. >>>>>> > >> >>>>>>>>>> >>>>>> > >> >>>>>>>>>> >>>>>> > >> >>>>>>>>>> On Tue, Apr 8, 2014 at 3:25 PM, Benjamin Mahler >>>>>> > >> >>>>>>>>>> <benjamin.mah...@gmail.com>wrote: >>>>>> > >> >>>>>>>>>> >>>>>> > >> >>>>>>>>>>> +vinod, benh >>>>>> > >> >>>>>>>>>>> >>>>>> > >> >>>>>>>>>>> Hey Vladimir, there will be some authenticated REST >>>>>> > >> >>>>> endpoints at >>>>>> > >> >>>>>>> some >>>>>> > >> >>>>>>>>>>> point, there is some work in this area underway. >>>>>> > >> >>>>>>>>>>> >>>>>> > >> >>>>>>>>>>> We have the ability to encode protobuf messages as >>>>>> JSON, so >>>>>> > >> >>>>> the >>>>>> > >> >>>>>>> plan >>>>>> > >> >>>>>>>>> was >>>>>> > >> >>>>>>>>>> to >>>>>> > >> >>>>>>>>>>> have any REST endpoints directly use JSON to send us >>>>>> > >> >>>>> protobuf >>>>>> > >> >>>>>>>> messages. >>>>>> > >> >>>>>>>>>> I'm >>>>>> > >> >>>>>>>>>>> not sure if this is what you're asking though? >>>>>> > >> >>>>>>>>>>> >>>>>> > >> >>>>>>>>>>> >>>>>> > >> >>>>>>>>>>> On Tue, Apr 8, 2014 at 11:13 AM, Vetoshkin Nikita < >>>>>> > >> >>>>>>>>>>> nikita.vetosh...@gmail.com> wrote: >>>>>> > >> >>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>> I'm not a mesos guy, just very curious. But in my >>>>>> opinion >>>>>> > >> >>>>> - I >>>>>> > >> >>>>>>> doubt >>>>>> > >> >>>>>>>>> it, >>>>>> > >> >>>>>>>>>>>> HTTP is synchronous request-response protocol. >>>>>> Mesos needs >>>>>> > >> >>>>>>>> something >>>>>> > >> >>>>>>>>>> more >>>>>> > >> >>>>>>>>>>>> robust for message passing. Websockets anyone? :) >>>>>> > >> >>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>> On Tue, Apr 8, 2014 at 10:08 PM, Vladimir Vivien >>>>>> > >> >>>>>>>>>>>> <vladimir.viv...@gmail.com>wrote: >>>>>> > >> >>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>> Ben / Nikita >>>>>> > >> >>>>>>>>>>>>> Thanks for the pointers. >>>>>> > >> >>>>>>>>>>>>> So, (without digging yet) is it a fair summary to >>>>>> say >>>>>> > >> >>>>> that >>>>>> > >> >>>>>>>>> libprocess >>>>>> > >> >>>>>>>>>>>> wraps >>>>>> > >> >>>>>>>>>>>>> protobufs-encoded calls and push them over HTTP to >>>>>> > >> >>>>>>> master/slaves >>>>>> > >> >>>>>>>> ? >>>>>> > >> >>>>>>>>>> Will >>>>>> > >> >>>>>>>>>>>>> protobuf (eventually) be supplanted by direct HTTP >>>>>> via >>>>>> > >> >>>>> REST >>>>>> > >> >>>>>> or >>>>>> > >> >>>>>>>>>> similar >>>>>> > >> >>>>>>>>>>> ? >>>>>> > >> >>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>> On Mon, Apr 7, 2014 at 2:54 PM, Vetoshkin Nikita < >>>>>> > >> >>>>>>>>>>>>> nikita.vetosh...@gmail.com >>>>>> > >> >>>>>>>>>>>>>> wrote: >>>>>> > >> >>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>> Or, just to get to know - you can take tcpdump and >>>>>> > >> >>>>> take a >>>>>> > >> >>>>>>> look >>>>>> > >> >>>>>>>> :) >>>>>> > >> >>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>> I personally wouldn't call that HTTP. Something >>>>>> > >> >>>>> "HTTP-like" >>>>>> > >> >>>>>>>> would >>>>>> > >> >>>>>>>>>>>>> describe >>>>>> > >> >>>>>>>>>>>>>> it better. Because it's not request-response. It's >>>>>> > >> >>>>> just >>>>>> > >> >>>>>>> message >>>>>> > >> >>>>>>>>>>>> passing, >>>>>> > >> >>>>>>>>>>>>> no >>>>>> > >> >>>>>>>>>>>>>> need to wait for the answer - send new message one >>>>>> > >> >>>>> after >>>>>> > >> >>>>>>>> another. >>>>>> > >> >>>>>>>>>>> Every >>>>>> > >> >>>>>>>>>>>>>> message is POST with address and message type >>>>>> encoded >>>>>> > >> >>>>> in >>>>>> > >> >>>>>> URI: >>>>>> > >> >>>>>>>>> POST >>>>>> > >> >>>>>>>>>>>>>> /executor(1)/mesos.internal.RunTaskMessage. >>>>>> Sender is >>>>>> > >> >>>>>> encoded >>>>>> > >> >>>>>>>> in >>>>>> > >> >>>>>>>>>>>>> User-Agent >>>>>> > >> >>>>>>>>>>>>>> header, e.g: libprocess/slave(1)@127.0.0.1:5051. >>>>>> Body >>>>>> > >> >>>>>>> contains >>>>>> > >> >>>>>>>>>>>> protobuf >>>>>> > >> >>>>>>>>>>>>>> message, Transfer-Encoding is always "chunked". >>>>>> > >> >>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>> On Mon, Apr 7, 2014 at 10:42 PM, Benjamin Mahler >>>>>> > >> >>>>>>>>>>>>>> <benjamin.mah...@gmail.com>wrote: >>>>>> > >> >>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>>> Unfortunately you will need to learn this by >>>>>> > >> >>>>> looking at >>>>>> > >> >>>>>> the >>>>>> > >> >>>>>>>>> code >>>>>> > >> >>>>>>>>>> in >>>>>> > >> >>>>>>>>>>>>>>> libprocess, as the message passing format is not >>>>>> > >> >>>>>> explicitly >>>>>> > >> >>>>>>>>>>>> documented >>>>>> > >> >>>>>>>>>>>>> at >>>>>> > >> >>>>>>>>>>>>>>> the current time. >>>>>> > >> >>>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>>> Start with calls like ProtobufProcess::send() and >>>>>> > >> >>>>> dig >>>>>> > >> >>>>>> your >>>>>> > >> >>>>>>>> way >>>>>> > >> >>>>>>>>>>> down. >>>>>> > >> >>>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>>> On Sat, Apr 5, 2014 at 7:52 AM, Vladimir Vivien >>>>>> > >> >>>>>>>>>>>>>>> <vladimir.viv...@gmail.com>wrote: >>>>>> > >> >>>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>>>> I was watching this video from >>>>>> > >> >>>>>>>>>>>>>>>> >>>>>> https://www.youtube.com/watch?v=n5GT7OFSh58fromBen >>>>>> > >> >>>>>>> where >>>>>> > >> >>>>>>>> he >>>>>> > >> >>>>>>>>>>>> talked >>>>>> > >> >>>>>>>>>>>>>>>> about the wire protocol for Mesos being done in >>>>>> > >> >>>>>>>>>>>>>>>> HTTP. >>>>>> > >> >>>>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>>>> Where can I learn about the low-level wire >>>>>> > >> >>>>> protocol >>>>>> > >> >>>>>>> either >>>>>> > >> >>>>>>>> in >>>>>> > >> >>>>>>>>>>>>>>> documentation >>>>>> > >> >>>>>>>>>>>>>>>> or browsing through the code. >>>>>> > >> >>>>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>>>> Thanks. >>>>>> > >> >>>>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>>>> -- >>>>>> > >> >>>>>>>>>>>>>>>> Vladimir Vivien >>>>>> > >> >>>>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>>> -- >>>>>> > >> >>>>>>>>>>>>> Vladimir Vivien >>>>>> > >> >>>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>>> >>>>>> > >> >>>>>>>>>>> >>>>>> > >> >>>>>>>>>> >>>>>> > >> >>>>>>>>>> >>>>>> > >> >>>>>>>>>> >>>>>> > >> >>>>>>>>>> -- >>>>>> > >> >>>>>>>>>> Vladimir Vivien >>>>>> > >> >>>>>>>>>> >>>>>> > >> >>>>>>>>> >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>>> -- >>>>>> > >> >>>>>>>> Vladimir Vivien >>>>>> > >> >>>>>>>> >>>>>> > >> >>>>>>> >>>>>> > >> >>>>>> >>>>>> > >> >>>>> >>>>>> > >> >>>>> >>>>>> > >> >>>>> >>>>>> > >> >>>>> -- >>>>>> > >> >>>>> Vladimir Vivien >>>>>> > >> >>>>> >>>>>> > >> >>>> >>>>>> > >> >>>> >>>>>> > >> >>> >>>>>> > >> >> >>>>>> > >> >>>>>> > >> >>>>>> > > >>>>>> > > >>>>>> > > -- >>>>>> > > Vladimir Vivien >>>>>> > > >>>>>> > >>>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> Vladimir Vivien >>>> >>> >>> >> >> >> -- >> Vladimir Vivien >> > > -- Vladimir Vivien