[ 
https://issues.apache.org/jira/browse/MESOS-2340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14550958#comment-14550958
 ] 

Marco Massenzio edited comment on MESOS-2340 at 5/19/15 6:30 PM:
-----------------------------------------------------------------

so, this is the simplest code I could came up with (this needs refining, 
obviously!) (in {{src/zookeeper/group.cpp}}:

{code}
  // if label is not None, this is the MasterInfo being serialized
  if (label.isSome()) {
    // TODO: how do we serialize MasterInfo to JSON? we only have the
    // raw serialized data here
    string json = "{\"value\": \"foobar\"}";
    string loc = result + ".json";
    string jsonResult;
    zk->create(
          loc,
          json,
          acl,
          ZOO_EPHEMERAL,
          &jsonResult);
    LOG(INFO) << "Added JSON data to " << jsonResult;
  }
{code}

If I now start the Master, I can see both nodes in the {{/test/json}} folder.
{noformat}
$ ./bin/mesos-master.sh --zk=zk://127.0.0.1:2181/json/test 
--work_dir=/tmp/mesos --quorum=1
{noformat}
{noformat}
[zk: localhost:2181(CONNECTED) 8] ls /json/test             
[log_replicas, info_0000000010, info_0000000010.json]

[zk: localhost:2181(CONNECTED) 9] get /json/test/info_0000000010.json
{"value": "foobar"}
cZxid = 0xe6
ctime = Tue May 19 11:24:55 PDT 2015
mZxid = 0xe6
mtime = Tue May 19 11:24:55 PDT 2015
pZxid = 0xe6
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x14d496680460057
dataLength = 19
numChildren = 0
{noformat}

and there's no .json in {{log_replicas}}.
I would like to get suggestions as to where to "inject" the JSON, as in the 
Group class, we only get the serialized String, not the {{MasterInfo}} PB.
There are obviously way around this, but I'd like to come up with an extensible 
way.


was (Author: marco-mesos):
so, this is the simplest code I could came up with (this needs refining, 
obviously!) (in {{src/zookeeper/group.cpp}}:

{code}
  // if label is not None, this is the MasterInfo being serialized
  if (label.isSome()) {
    // TODO: how do we serialize MasterInfo to JSON? we only have the
    // raw serialized data here
    string json = "{\"value\": \"foobar\"}";
    string loc = result + ".json";
    string jsonResult;
    zk->create(
          loc,
          json,
          acl,
          ZOO_EPHEMERAL,
          &jsonResult);
    LOG(INFO) << "Added JSON data to " << jsonResult;
  }
{info}

If I now start the Master, I can see both nodes in the {{/test/json}} folder.
{noformat}
$ ./bin/mesos-master.sh --zk=zk://127.0.0.1:2181/json/test 
--work_dir=/tmp/mesos --quorum=1
{noformat}
{noformat}
[zk: localhost:2181(CONNECTED) 8] ls /json/test             
[log_replicas, info_0000000010, info_0000000010.json]

[zk: localhost:2181(CONNECTED) 9] get /json/test/info_0000000010.json
{"value": "foobar"}
cZxid = 0xe6
ctime = Tue May 19 11:24:55 PDT 2015
mZxid = 0xe6
mtime = Tue May 19 11:24:55 PDT 2015
pZxid = 0xe6
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x14d496680460057
dataLength = 19
numChildren = 0
{noformat}

and there's no .json in {{log_replicas}}.
I would like to get suggestions as to where to "inject" the JSON, as in the 
Group class, we only get the serialized String, not the {{MasterInfo}} PB.
There are obviously way around this, but I'd like to come up with an extensible 
way.

> Publish JSON in ZK instead of serialized MasterInfo
> ---------------------------------------------------
>
>                 Key: MESOS-2340
>                 URL: https://issues.apache.org/jira/browse/MESOS-2340
>             Project: Mesos
>          Issue Type: Improvement
>            Reporter: Zameer Manji
>            Assignee: haosdent
>
> Currently to discover the master a client needs the ZK node location and 
> access to the MasterInfo protobuf so it can deserialize the binary blob in 
> the node.
> I think it would be nice to publish JSON (like Twitter's ServerSets) so 
> clients are not tied to protobuf to do service discovery.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to