In that case, I rescind my objection. Memory use as a problem and labels as an alternative work fine. Thanks! On Mon, Nov 2, 2015 at 7:03 PM Benjamin Mahler <benjamin.mah...@gmail.com> wrote:
> Sorry for the confusion, the motivation to remove 'data' is for memory > scalability reasons (the ability to express binary fields is orthogonal and > is not the reason to remove 'data'). > > We can get into a really bad state in large clusters if frameworks are > putting non-trivial amounts of 'data' in TaskInfos and ExecutorInfos. If > it's too large for the master to hold in memory, the master will > continually OOM and it becomes impossible to right your cluster. See > https://issues.apache.org/jira/browse/MESOS-1746 for some history of > stripping binary data, starting with TaskStatus. > > Labels were introduced to aid tooling, can you use labels? I realize they > are not in ExecutorInfo yet. > > On Mon, Nov 2, 2015 at 6:23 PM, David Greenberg <dsg123456...@gmail.com> > wrote: > > > Why not base64 encode the field? We use that field in our frameworks, and > > some of our platform tools would benefit from being able to read that > data. > > Base64 seems like a compromise with minimal complexity addition. It also > > removes the potential for parse errors, doesn't rule out future > > applications from using the data stored there (as specialized frameworks > > use that field), and doesn't incur a message size overhead in the (I > > presume) majority of frameworks not using that field. > > On Mon, Nov 2, 2015 at 4:28 PM Guangya Liu <gyliu...@gmail.com> wrote: > > > > > +1 to remove the field directly, one comment is that the upgrade > document > > > may need to be updated. > > > > > > From my understanding, since the data is binary data and I did not see > > too > > > much requirement on retrieving binary data. > > > > > > Thanks! > > > > > > On Sat, Oct 24, 2015 at 5:33 AM, Joseph Wu <jos...@mesosphere.io> > wrote: > > > > > > > Hello, > > > > > > > > The state endpoints, on master and agent, currently serialize two > > binary > > > > data fields in the ExecutorInfo and TaskInfo objects. These fields > are > > > set > > > > by frameworks; and Mesos does not inspect their values. > > > > > > > > The data fields can be found in the state JSON blobs: > > > > /master/state -> frameworks[*].executors[*].data > > > > /slave/state -> > > > > > > > > > > > > > > frameworks[*].(executors|completed_executors)[*].(tasks|queued_tasks|completed_tasks)[*].data > > > > > > > > *Problem:* > > > > The state endpoints are JSON-ified in a non-standard way (i.e. not > via > > > our > > > > normal Protobuf-to-json methods). When we serialize the binary > "data" > > > > fields, the binary is dumped as a string, as is. The resulting JSON > > may > > > > not be valid if the binary data includes random bytes (i.e. not > > unicode). > > > > Most JSON parsers will error on the state endpoints in this case. > > > > > > > > *Proposed solution *(and breaking change)*:* > > > > Simple -- remove the "data" fields from the state endpoints. (And > only > > > > from the state endpoints. The ExecutorInfo and TaskInfo objects will > > not > > > > change.) > > > > > > > > *Question:* > > > > We believe that frameworks/tools do not rely on retrieving the "data" > > > > fields from the state endpoints. > > > > > > > > Is there any framework/tool that retrieves the "data" field from the > > > state > > > > endpoints? > > > > And if so, is it critical to how the framework/tool works? > > > > > > > > More details here: https://issues.apache.org/jira/browse/MESOS-3771 > > > > > > > > Thanks, > > > > ~Joseph > > > > > > > > > >