[jira] [Issue Comment Deleted] (MESOS-3041) Decline call does not include an optional "reason", in the Event/Call API

2015-09-14 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3041?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3041:
-
Comment: was deleted

(was: https://reviews.apache.org/r/37284/)

> Decline call does not include an optional "reason", in the Event/Call API
> -
>
> Key: MESOS-3041
> URL: https://issues.apache.org/jira/browse/MESOS-3041
> Project: Mesos
>  Issue Type: Task
>  Components: master
>Reporter: Joseph Wu
>Assignee: Joris Van Remoortere
>  Labels: mesosphere
>
> In the Event/Call API, the Decline call is currently used by frameworks to 
> reject resource offers.
> In the case of InverseOffers, the framework could give additional information 
> to the operators and/or allocator, as to why the InverseOffer is declined. 
> i.e. Suppose a cluster running some consensus algorithm is given an 
> InverseOffer on one of its nodes.  It may decline saying "Too few nodes" (or, 
> more verbosely, "Specified InverseOffer would lower the number of active 
> nodes below quorum").
> This change requires the following changes:
> * include/mesos/scheduler/scheduler.proto:
> {code}
> message Call {
>   ...
>   message Decline {
> repeated OfferID offer_ids = 1;
> optional Filters filters = 2;
> // Add this extra string for each OfferID
> // i.e. reasons[i] is for offer_ids[i]
> repeated string reasons = 3;
>   }
>   ...
> }
> {code}
> * src/master/master.cpp
> Change Master::decline to either store the reason, or log it.
> * Add a declineOffer overload in the (Mesos)SchedulerDriver with an optional 
> "reason".
> ** Extend the interface in include/mesos/scheduler.hpp
> ** Add/change the declineOffer method in src/sched/sched.cpp



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


[jira] [Commented] (MESOS-2222) Add ACLs for the maintenance HTTP endpoints.

2015-09-15 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-:
--

Review: https://reviews.apache.org/r/38399/

> Add ACLs for the maintenance HTTP endpoints.
> 
>
> Key: MESOS-
> URL: https://issues.apache.org/jira/browse/MESOS-
> Project: Mesos
>  Issue Type: Task
>Reporter: Benjamin Mahler
>Assignee: Chen Zhiwei
>  Labels: mesosphere
>
> In order to authorize the HTTP endpoints for maintenance (to be added in 
> MESOS-2067), we will need to add an ACL definition for performing maintenance 
> operations.



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


[jira] [Commented] (MESOS-3345) Expand the range of integer precision when converting into/out of json.

2015-09-16 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3345:
--

With regards to supporting unsigned values between {{INT64_MAX}} and 
{{UINT64_MAX}}:
* We can patch PicoJSON to parse those values as {{uint64_t}}.
* We can investigate using another parsing library.
* If we want extra precision beyond 64 or 80 bits per double, one possibility 
is the [GMP library|https://gmplib.org/]

> Expand the range of integer precision when converting into/out of json.
> ---
>
> Key: MESOS-3345
> URL: https://issues.apache.org/jira/browse/MESOS-3345
> Project: Mesos
>  Issue Type: Task
>  Components: stout
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>Priority: Minor
>  Labels: json, mesosphere, protobuf
>
> For [MESOS-3299], we added some protobufs to represent time with integer 
> precision.  However, this precision is not maintained through protobuf <-> 
> JSON conversion, because of how our JSON encoders/decoders convert numbers to 
> floating point.
> To maintain precision, we can try one of the following:
> * Try using a {{long double}} to represent a number.
> * Add logic to stringify/parse numbers without loss when possible.
> * Try representing {{int64_t}} as a string and parse it as such?
> * Update PicoJson and add a compiler flag, i.e. {{-DPICOJSON_USE_INT64}} 
> In all cases, we'll need to make sure that:
> * Integers are properly stringified without loss.
> * The JSON decoder parses the integer without loss.
> * We have some unit tests for big (close to {{INT32_MAX}}/{{INT64_MAX}}) and 
> small integers.



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


[jira] [Created] (MESOS-3449) Expand the range of integer precision in json <-> protobuf conversions to include unsigned integers

2015-09-16 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3449:


 Summary: Expand the range of integer precision in json <-> 
protobuf conversions to include unsigned integers
 Key: MESOS-3449
 URL: https://issues.apache.org/jira/browse/MESOS-3449
 Project: Mesos
  Issue Type: Improvement
  Components: stout
Affects Versions: 0.25.0
Reporter: Joseph Wu
Assignee: Joseph Wu
Priority: Minor


The previous changes to support integer precision when converting JSON <-> 
Protobuf did not support precision for unsigned integers between {{INT64_MAX}} 
and {{UINT64_MAX}}.  (There's some loss, but the conversion is still as 
good/bad as it was with doubles.)

This problem is due to a limitation in the JSON parsing library we use 
(PicoJson), which parses integers as {{int64_t}}.

Some possible solutions or things to investigate:
* We can patch PicoJSON to parse some large values as {{uint64_t}}.
* We can investigate using another parsing library.
* If we want extra precision beyond 64 or 80 bits per double, one possibility 
is the [GMP library|https://gmplib.org/].  We'd still need to change the 
parsing library though.



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


[jira] [Updated] (MESOS-3449) Expand the range of integer precision in json <-> protobuf conversions to include unsigned integers

2015-09-16 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3449?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3449:
-
Description: 
The previous changes (MESOS-3345) to support integer precision when converting 
JSON <-> Protobuf did not support precision for unsigned integers between 
{{INT64_MAX}} and {{UINT64_MAX}}.  (There's some loss, but the conversion is 
still as good/bad as it was with doubles.)

This problem is due to a limitation in the JSON parsing library we use 
(PicoJson), which parses integers as {{int64_t}}.

Some possible solutions or things to investigate:
* We can patch PicoJSON to parse some large values as {{uint64_t}}.
* We can investigate using another parsing library.
* If we want extra precision beyond 64 or 80 bits per double, one possibility 
is the [GMP library|https://gmplib.org/].  We'd still need to change the 
parsing library though.

  was:
The previous changes to support integer precision when converting JSON <-> 
Protobuf did not support precision for unsigned integers between {{INT64_MAX}} 
and {{UINT64_MAX}}.  (There's some loss, but the conversion is still as 
good/bad as it was with doubles.)

This problem is due to a limitation in the JSON parsing library we use 
(PicoJson), which parses integers as {{int64_t}}.

Some possible solutions or things to investigate:
* We can patch PicoJSON to parse some large values as {{uint64_t}}.
* We can investigate using another parsing library.
* If we want extra precision beyond 64 or 80 bits per double, one possibility 
is the [GMP library|https://gmplib.org/].  We'd still need to change the 
parsing library though.


> Expand the range of integer precision in json <-> protobuf conversions to 
> include unsigned integers
> ---
>
> Key: MESOS-3449
> URL: https://issues.apache.org/jira/browse/MESOS-3449
> Project: Mesos
>  Issue Type: Improvement
>  Components: stout
>Affects Versions: 0.25.0
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>Priority: Minor
>  Labels: json, mesosphere, protobuf
>
> The previous changes (MESOS-3345) to support integer precision when 
> converting JSON <-> Protobuf did not support precision for unsigned integers 
> between {{INT64_MAX}} and {{UINT64_MAX}}.  (There's some loss, but the 
> conversion is still as good/bad as it was with doubles.)
> This problem is due to a limitation in the JSON parsing library we use 
> (PicoJson), which parses integers as {{int64_t}}.
> Some possible solutions or things to investigate:
> * We can patch PicoJSON to parse some large values as {{uint64_t}}.
> * We can investigate using another parsing library.
> * If we want extra precision beyond 64 or 80 bits per double, one possibility 
> is the [GMP library|https://gmplib.org/].  We'd still need to change the 
> parsing library though.



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


[jira] [Updated] (MESOS-3449) Expand the range of integer precision in json <-> protobuf conversions to include unsigned integers

2015-09-16 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3449?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3449:
-
Description: 
The previous changes (MESOS-3345) to support integer precision when converting 
JSON <-> Protobuf did not support precision for unsigned integers between 
{{INT64_MAX}} and {{UINT64_MAX}}.  (There's some loss, but the conversion is 
still as good/bad as it was with doubles.)

This problem is due to a limitation in the JSON parsing library we use 
(PicoJSON), which parses integers as {{int64_t}}.

Some possible solutions or things to investigate:
* We can patch PicoJSON to parse some large values as {{uint64_t}}.
* We can investigate using another parsing library.
* If we want extra precision beyond 64 or 80 bits per double, one possibility 
is the [GMP library|https://gmplib.org/].  We'd still need to change the 
parsing library though.

  was:
The previous changes (MESOS-3345) to support integer precision when converting 
JSON <-> Protobuf did not support precision for unsigned integers between 
{{INT64_MAX}} and {{UINT64_MAX}}.  (There's some loss, but the conversion is 
still as good/bad as it was with doubles.)

This problem is due to a limitation in the JSON parsing library we use 
(PicoJson), which parses integers as {{int64_t}}.

Some possible solutions or things to investigate:
* We can patch PicoJSON to parse some large values as {{uint64_t}}.
* We can investigate using another parsing library.
* If we want extra precision beyond 64 or 80 bits per double, one possibility 
is the [GMP library|https://gmplib.org/].  We'd still need to change the 
parsing library though.


> Expand the range of integer precision in json <-> protobuf conversions to 
> include unsigned integers
> ---
>
> Key: MESOS-3449
> URL: https://issues.apache.org/jira/browse/MESOS-3449
> Project: Mesos
>  Issue Type: Improvement
>  Components: stout
>Affects Versions: 0.25.0
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>Priority: Minor
>  Labels: json, mesosphere, protobuf
>
> The previous changes (MESOS-3345) to support integer precision when 
> converting JSON <-> Protobuf did not support precision for unsigned integers 
> between {{INT64_MAX}} and {{UINT64_MAX}}.  (There's some loss, but the 
> conversion is still as good/bad as it was with doubles.)
> This problem is due to a limitation in the JSON parsing library we use 
> (PicoJSON), which parses integers as {{int64_t}}.
> Some possible solutions or things to investigate:
> * We can patch PicoJSON to parse some large values as {{uint64_t}}.
> * We can investigate using another parsing library.
> * If we want extra precision beyond 64 or 80 bits per double, one possibility 
> is the [GMP library|https://gmplib.org/].  We'd still need to change the 
> parsing library though.



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


[jira] [Commented] (MESOS-3345) Expand the range of integer precision when converting into/out of json.

2015-09-16 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3345:
--

The followup issue is linked: https://issues.apache.org/jira/browse/MESOS-3449

> Expand the range of integer precision when converting into/out of json.
> ---
>
> Key: MESOS-3345
> URL: https://issues.apache.org/jira/browse/MESOS-3345
> Project: Mesos
>  Issue Type: Task
>  Components: stout
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>Priority: Minor
>  Labels: json, mesosphere, protobuf
>
> For [MESOS-3299], we added some protobufs to represent time with integer 
> precision.  However, this precision is not maintained through protobuf <-> 
> JSON conversion, because of how our JSON encoders/decoders convert numbers to 
> floating point.
> To maintain precision, we can try one of the following:
> * Try using a {{long double}} to represent a number.
> * Add logic to stringify/parse numbers without loss when possible.
> * Try representing {{int64_t}} as a string and parse it as such?
> * Update PicoJson and add a compiler flag, i.e. {{-DPICOJSON_USE_INT64}} 
> In all cases, we'll need to make sure that:
> * Integers are properly stringified without loss.
> * The JSON decoder parses the integer without loss.
> * We have some unit tests for big (close to {{INT32_MAX}}/{{INT64_MAX}}) and 
> small integers.



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


[jira] [Updated] (MESOS-3449) Expand the range of integer precision in json <-> protobuf conversions to include unsigned integers

2015-09-16 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3449?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3449:
-
Issue Type: Bug  (was: Improvement)

> Expand the range of integer precision in json <-> protobuf conversions to 
> include unsigned integers
> ---
>
> Key: MESOS-3449
> URL: https://issues.apache.org/jira/browse/MESOS-3449
> Project: Mesos
>  Issue Type: Bug
>  Components: stout
>Affects Versions: 0.25.0
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>Priority: Minor
>  Labels: json, mesosphere, protobuf
>
> The previous changes (MESOS-3345) to support integer precision when 
> converting JSON <-> Protobuf did not support precision for unsigned integers 
> between {{INT64_MAX}} and {{UINT64_MAX}}.  (There's some loss, but the 
> conversion is still as good/bad as it was with doubles.)
> This problem is due to a limitation in the JSON parsing library we use 
> (PicoJSON), which parses integers as {{int64_t}}.
> Some possible solutions or things to investigate:
> * We can patch PicoJSON to parse some large values as {{uint64_t}}.
> * We can investigate using another parsing library.
> * If we want extra precision beyond 64 or 80 bits per double, one possibility 
> is the [GMP library|https://gmplib.org/].  We'd still need to change the 
> parsing library though.



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


[jira] [Created] (MESOS-3458) Segfault when accepting or declining inverse offers

2015-09-17 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3458:


 Summary: Segfault when accepting or declining inverse offers
 Key: MESOS-3458
 URL: https://issues.apache.org/jira/browse/MESOS-3458
 Project: Mesos
  Issue Type: Bug
Reporter: Joseph Wu
Assignee: Joseph Wu


Discovered while writing a test for filters (in regards to inverse offers).

Fix here: https://reviews.apache.org/r/38470/



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


[jira] [Updated] (MESOS-3458) Segfault when accepting or declining inverse offers

2015-09-17 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3458?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3458:
-
Priority: Blocker  (was: Major)

> Segfault when accepting or declining inverse offers
> ---
>
> Key: MESOS-3458
> URL: https://issues.apache.org/jira/browse/MESOS-3458
> Project: Mesos
>  Issue Type: Bug
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>Priority: Blocker
>
> Discovered while writing a test for filters (in regards to inverse offers).
> Fix here: https://reviews.apache.org/r/38470/



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


[jira] [Updated] (MESOS-3458) Segfault when accepting or declining inverse offers

2015-09-17 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3458?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3458:
-
Component/s: master

> Segfault when accepting or declining inverse offers
> ---
>
> Key: MESOS-3458
> URL: https://issues.apache.org/jira/browse/MESOS-3458
> Project: Mesos
>  Issue Type: Bug
>  Components: master
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>Priority: Blocker
>  Labels: mesosphere
>
> Discovered while writing a test for filters (in regards to inverse offers).
> Fix here: https://reviews.apache.org/r/38470/



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


[jira] [Created] (MESOS-3459) Change /machine/up and /machine/down endpoints to take an array

2015-09-17 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3459:


 Summary: Change /machine/up and /machine/down endpoints to take an 
array
 Key: MESOS-3459
 URL: https://issues.apache.org/jira/browse/MESOS-3459
 Project: Mesos
  Issue Type: Task
  Components: master
Reporter: Joseph Wu
Assignee: Joseph Wu


With [MESOS-3312] committed, the {{/machine/up}} and {{/machine/down}} 
endpoints should also take an input as an array.

It is important to change this before maintenance primitives are released.

https://reviews.apache.org/r/38011/



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


[jira] [Updated] (MESOS-3458) Segfault when accepting or declining inverse offers

2015-09-17 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3458?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3458:
-
Labels: mesosphere  (was: )

> Segfault when accepting or declining inverse offers
> ---
>
> Key: MESOS-3458
> URL: https://issues.apache.org/jira/browse/MESOS-3458
> Project: Mesos
>  Issue Type: Bug
>  Components: master
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>Priority: Blocker
>  Labels: mesosphere
>
> Discovered while writing a test for filters (in regards to inverse offers).
> Fix here: https://reviews.apache.org/r/38470/



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


[jira] [Updated] (MESOS-3459) Change /machine/up and /machine/down endpoints to take an array

2015-09-17 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3459:
-
Description: 
With [MESOS-3312] committed, the {{/machine/up}} and {{/machine/down}} 
endpoints should also take an input as an array.

It is important to change this before maintenance primitives are released:
https://reviews.apache.org/r/38011/

Also, a minor change to the error message from these endpoints:
https://reviews.apache.org/r/37969/

  was:
With [MESOS-3312] committed, the {{/machine/up}} and {{/machine/down}} 
endpoints should also take an input as an array.

It is important to change this before maintenance primitives are released.

https://reviews.apache.org/r/38011/


> Change /machine/up and /machine/down endpoints to take an array
> ---
>
> Key: MESOS-3459
> URL: https://issues.apache.org/jira/browse/MESOS-3459
> Project: Mesos
>  Issue Type: Task
>  Components: master
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> With [MESOS-3312] committed, the {{/machine/up}} and {{/machine/down}} 
> endpoints should also take an input as an array.
> It is important to change this before maintenance primitives are released:
> https://reviews.apache.org/r/38011/
> Also, a minor change to the error message from these endpoints:
> https://reviews.apache.org/r/37969/



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


[jira] [Updated] (MESOS-3418) Factor out V1 API test helper functions

2015-09-18 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3418?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3418:
-
Description: 
We currently have some helper functionality for V1 API tests. This is copied in 
a few test files.
Factor this out into a common place once the API is stabilized.
{code}
// Helper class for using EXPECT_CALL since the Mesos scheduler API
  // is callback based.
  class Callbacks
  {
  public:
MOCK_METHOD0(connected, void(void));
MOCK_METHOD0(disconnected, void(void));
MOCK_METHOD1(received, void(const std::queue&));
  };
{code}
{code}
// Enqueues all received events into a libprocess queue.
// TODO(jmlvanre): Factor this common code out of tests into V1
// helper.
ACTION_P(Enqueue, queue)
{
  std::queue events = arg0;
  while (!events.empty()) {
// Note that we currently drop HEARTBEATs because most of these tests
// are not designed to deal with heartbeats.
// TODO(vinod): Implement DROP_HTTP_CALLS that can filter heartbeats.
if (events.front().type() == Event::HEARTBEAT) {
  VLOG(1) << "Ignoring HEARTBEAT event";
} else {
  queue->put(events.front());
}
events.pop();
  }
}
{code}

We can also update the helpers in {{/tests/mesos.hpp}} to support the V1 API.  
This would let us get ride of lines like:
{code}
v1::TaskInfo taskInfo = evolve(createTask(devolve(offer), "", 
DEFAULT_EXECUTOR_ID));
{code}
In favor of:
{code}
v1::TaskInfo taskInfo = createTask(offer, "", DEFAULT_EXECUTOR_ID);
{code}

  was:
We currently have some helper functionality for V1 API tests. This is copied in 
a few test files.
Factor this out into a common place once the API is stabilized.
{code}
// Helper class for using EXPECT_CALL since the Mesos scheduler API
  // is callback based.
  class Callbacks
  {
  public:
MOCK_METHOD0(connected, void(void));
MOCK_METHOD0(disconnected, void(void));
MOCK_METHOD1(received, void(const std::queue&));
  };
{code}
{code}
// Enqueues all received events into a libprocess queue.
// TODO(jmlvanre): Factor this common code out of tests into V1
// helper.
ACTION_P(Enqueue, queue)
{
  std::queue events = arg0;
  while (!events.empty()) {
// Note that we currently drop HEARTBEATs because most of these tests
// are not designed to deal with heartbeats.
// TODO(vinod): Implement DROP_HTTP_CALLS that can filter heartbeats.
if (events.front().type() == Event::HEARTBEAT) {
  VLOG(1) << "Ignoring HEARTBEAT event";
} else {
  queue->put(events.front());
}
events.pop();
  }
}
{code}


> Factor out V1 API test helper functions
> ---
>
> Key: MESOS-3418
> URL: https://issues.apache.org/jira/browse/MESOS-3418
> Project: Mesos
>  Issue Type: Improvement
>Reporter: Joris Van Remoortere
>Assignee: Guangya Liu
>  Labels: beginner, mesosphere, newbie, v1_api
>
> We currently have some helper functionality for V1 API tests. This is copied 
> in a few test files.
> Factor this out into a common place once the API is stabilized.
> {code}
> // Helper class for using EXPECT_CALL since the Mesos scheduler API
>   // is callback based.
>   class Callbacks
>   {
>   public:
> MOCK_METHOD0(connected, void(void));
> MOCK_METHOD0(disconnected, void(void));
> MOCK_METHOD1(received, void(const std::queue&));
>   };
> {code}
> {code}
> // Enqueues all received events into a libprocess queue.
> // TODO(jmlvanre): Factor this common code out of tests into V1
> // helper.
> ACTION_P(Enqueue, queue)
> {
>   std::queue events = arg0;
>   while (!events.empty()) {
> // Note that we currently drop HEARTBEATs because most of these tests
> // are not designed to deal with heartbeats.
> // TODO(vinod): Implement DROP_HTTP_CALLS that can filter heartbeats.
> if (events.front().type() == Event::HEARTBEAT) {
>   VLOG(1) << "Ignoring HEARTBEAT event";
> } else {
>   queue->put(events.front());
> }
> events.pop();
>   }
> }
> {code}
> We can also update the helpers in {{/tests/mesos.hpp}} to support the V1 API. 
>  This would let us get ride of lines like:
> {code}
> v1::TaskInfo taskInfo = evolve(createTask(devolve(offer), "", 
> DEFAULT_EXECUTOR_ID));
> {code}
> In favor of:
> {code}
> v1::TaskInfo taskInfo = createTask(offer, "", DEFAULT_EXECUTOR_ID);
> {code}



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


[jira] [Commented] (MESOS-3459) Change /machine/up and /machine/down endpoints to take an array

2015-09-18 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3459:
--

[~jvanremoortere] Committed:
{code}
commit cc0a847904510b80c72b9de70af9191b3d5b6c22
Author: Joseph Wu 
Date:   Fri Sep 18 13:07:38 2015 -0400

Maintenance Primitives: Replaced MachineIDs with RepeatedPtrField>.

This removes the MachineIDs protobuf and changes it to instead use the
RepeatedFieldPtr.
This also changes the maintenance primitives (alpha) API for
/machine/up and /machine/down, which both take an array instead of an
object now.

Review: https://reviews.apache.org/r/38011
{code}
{code}
commit 5f1195f8f10dc6fff65cb62a4745088e23bdc262
Author: Joseph Wu 
Date:   Fri Sep 18 12:44:03 2015 -0400

Maintenance primitives: Used JSON instead of protobuf for errors.

Replaces `__.DebugString()` with `stringify(JSON::Protobuf(__))`, which
looks nicer and matches the JSON expected by the HTTP endpoints.

Review: https://reviews.apache.org/r/37969
{code}

> Change /machine/up and /machine/down endpoints to take an array
> ---
>
> Key: MESOS-3459
> URL: https://issues.apache.org/jira/browse/MESOS-3459
> Project: Mesos
>  Issue Type: Task
>  Components: master
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> With [MESOS-3312] committed, the {{/machine/up}} and {{/machine/down}} 
> endpoints should also take an input as an array.
> It is important to change this before maintenance primitives are released:
> https://reviews.apache.org/r/38011/
> Also, a minor change to the error message from these endpoints:
> https://reviews.apache.org/r/37969/



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


[jira] [Created] (MESOS-3481) Add const accessor to Master flags

2015-09-21 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3481:


 Summary: Add const accessor to Master flags
 Key: MESOS-3481
 URL: https://issues.apache.org/jira/browse/MESOS-3481
 Project: Mesos
  Issue Type: Task
Reporter: Joseph Wu
Assignee: Joseph Wu
Priority: Trivial


It would make sense to have an accessor to the master's flags, especially for 
tests.

For example, see [this 
test|https://github.com/apache/mesos/blob/2876b8c918814347dd56f6f87d461e414a90650a/src/tests/master_maintenance_tests.cpp#L1231-L1235].



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


[jira] [Updated] (MESOS-3481) Add const accessor to Master flags

2015-09-21 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3481?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3481:
-
Assignee: (was: Joseph Wu)

> Add const accessor to Master flags
> --
>
> Key: MESOS-3481
> URL: https://issues.apache.org/jira/browse/MESOS-3481
> Project: Mesos
>  Issue Type: Task
>Reporter: Joseph Wu
>Priority: Trivial
>  Labels: mesosphere, newbie
>
> It would make sense to have an accessor to the master's flags, especially for 
> tests.
> For example, see [this 
> test|https://github.com/apache/mesos/blob/2876b8c918814347dd56f6f87d461e414a90650a/src/tests/master_maintenance_tests.cpp#L1231-L1235].



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


[jira] [Updated] (MESOS-3458) Segfault when accepting or declining inverse offers

2015-09-21 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3458?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3458:
-
Story Points: 1

> Segfault when accepting or declining inverse offers
> ---
>
> Key: MESOS-3458
> URL: https://issues.apache.org/jira/browse/MESOS-3458
> Project: Mesos
>  Issue Type: Bug
>  Components: master
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>Priority: Blocker
>  Labels: mesosphere
>
> Discovered while writing a test for filters (in regards to inverse offers).
> Fix here: https://reviews.apache.org/r/38470/



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


[jira] [Updated] (MESOS-3459) Change /machine/up and /machine/down endpoints to take an array

2015-09-21 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3459:
-
Story Points: 1

> Change /machine/up and /machine/down endpoints to take an array
> ---
>
> Key: MESOS-3459
> URL: https://issues.apache.org/jira/browse/MESOS-3459
> Project: Mesos
>  Issue Type: Task
>  Components: master
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> With [MESOS-3312] committed, the {{/machine/up}} and {{/machine/down}} 
> endpoints should also take an input as an array.
> It is important to change this before maintenance primitives are released:
> https://reviews.apache.org/r/38011/
> Also, a minor change to the error message from these endpoints:
> https://reviews.apache.org/r/37969/



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


[jira] [Updated] (MESOS-2995) Standardize use of Path

2015-09-21 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-2995?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-2995:
-
Assignee: (was: Joseph Wu)

> Standardize use of Path 
> 
>
> Key: MESOS-2995
> URL: https://issues.apache.org/jira/browse/MESOS-2995
> Project: Mesos
>  Issue Type: Improvement
>  Components: stout
>Reporter: Joseph Wu
>Priority: Minor
>  Labels: mesosphere, newbie, stout
>
> As per the discussion in MESOS-2965, the use of the Path object should be 
> standardized:
> * Functions which effectively use Paths (as strings) should instead take 
> Paths.
> * Functions which modify and return Paths (as strings) should instead return 
> Paths.
> * Extraneous uses of Path.value should be removed.



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


[jira] [Commented] (MESOS-3405) Add JSON::protobuf for google::protobuf::RepeatedPtrField.

2015-09-21 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3405:
--

Note: With this change, you can also remove this test helper:
https://github.com/apache/mesos/blob/master/src/tests/master_maintenance_tests.cpp#L93-L104

> Add JSON::protobuf for google::protobuf::RepeatedPtrField.
> --
>
> Key: MESOS-3405
> URL: https://issues.apache.org/jira/browse/MESOS-3405
> Project: Mesos
>  Issue Type: Task
>  Components: stout
>Reporter: Michael Park
>Assignee: Klaus Ma
>
> Currently, {{stout/protobuf.hpp}} provides a {{JSON::Protobuf}} utility which 
> converts a {{google::protobuf::Message}} into a {{JSON::Object}}.
> We should add the support for {{google::protobuf::RepeatedPtrField}} by 
> introducing overloaded functions.
> {code}
> namespace JSON {
>   Object protobuf(const google::protobuf::Message& message)
>   {
> Object object;
> /* Move the body of JSON::Protobuf constructor here. */
> return object;
>   }
>   template 
>   Array protobuf(const google::protobuf::RepeatedPtrField& repeated)
>   {
> static_assert(std::is_convertible::value,
>   "T must be a google::protobuf::Message");
> JSON::Array array;
> array.values.reserve(repeated.size());
> foreach (const T& elem, repeated) {
>   array.values.push_back(JSON::Protobuf(elem));
> }
> return array;
>   }
> }
> {code}
> The new {{RepeatedPtrField}} version can be used in at least the following 
> places:
> * {{src/common/http.cpp}}
> * {{src/master/http.cpp}}
> * {{src/slave/containerizer/mesos/containerizer.cpp}}
> * {{src/tests/reservation_endpoints_tests.cpp}}
> * {{src/tests/resources_tests.cpp}}: {{ResourcesTest.ParsingFromJSON}}



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


[jira] [Updated] (MESOS-3468) Improve apply_reviews.sh script to apply chain of reviews

2015-09-21 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3468?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3468:
-
Assignee: Artem Harutyunyan

> Improve apply_reviews.sh script to apply chain of reviews
> -
>
> Key: MESOS-3468
> URL: https://issues.apache.org/jira/browse/MESOS-3468
> Project: Mesos
>  Issue Type: Improvement
>Reporter: Vinod Kone
>Assignee: Artem Harutyunyan
>
> Currently the support/apply-review.sh script allows an user (typically 
> committer) to apply a single review on top the HEAD. Since Mesos contributors 
> typically submit a chain of reviews for a given issue it makes sense for the 
> script to apply the whole chain recursively.



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


[jira] [Assigned] (MESOS-3183) Fetcher Cache Internals documentation images do not load

2015-09-21 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3183?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu reassigned MESOS-3183:


Assignee: Joseph Wu

> Fetcher Cache Internals documentation images do not load
> 
>
> Key: MESOS-3183
> URL: https://issues.apache.org/jira/browse/MESOS-3183
> Project: Mesos
>  Issue Type: Documentation
>  Components: documentation
>Affects Versions: 0.23.0
>Reporter: James Mulcahy
>Assignee: Joseph Wu
>Priority: Minor
>
> The images on the Fetcher Cache Internals page do not load.
> http://mesos.apache.org/documentation/fetcher-cache-internals/



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


[jira] [Commented] (MESOS-3183) Fetcher Cache Internals documentation images do not load

2015-09-21 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3183:
--

This problem isn't limited to the Fetcher Cache.  See:
* [External 
Containerizer|http://mesos.apache.org/documentation/latest/external-containerizer/]
* [Fetcher Cache 
Internals|http://mesos.apache.org/documentation/latest/fetcher-cache-internals/]
* [Maintenance|http://mesos.apache.org/documentation/latest/maintenance/]   
* 
[Oversubscription|http://mesos.apache.org/documentation/latest/oversubscription/]

There are two problems:
* The website itself does not have the images.  For this, we need to patch the 
[website's generation file(s)|https://svn.apache.org/repos/asf/mesos/site/].  
See attached {{rake.patch}}.
* The links will point to the incorrect image URL if there is a {{/}} at the 
end of the page URL.
Fix: https://reviews.apache.org/r/38570/

> Fetcher Cache Internals documentation images do not load
> 
>
> Key: MESOS-3183
> URL: https://issues.apache.org/jira/browse/MESOS-3183
> Project: Mesos
>  Issue Type: Documentation
>  Components: documentation
>Affects Versions: 0.23.0
>Reporter: James Mulcahy
>Assignee: Joseph Wu
>Priority: Minor
>
> The images on the Fetcher Cache Internals page do not load.
> http://mesos.apache.org/documentation/fetcher-cache-internals/



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


[jira] [Updated] (MESOS-3183) Fetcher Cache Internals documentation images do not load

2015-09-21 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3183?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3183:
-
Attachment: rake.patch

> Fetcher Cache Internals documentation images do not load
> 
>
> Key: MESOS-3183
> URL: https://issues.apache.org/jira/browse/MESOS-3183
> Project: Mesos
>  Issue Type: Documentation
>  Components: documentation
>Affects Versions: 0.23.0
>Reporter: James Mulcahy
>Assignee: Joseph Wu
>Priority: Minor
> Attachments: rake.patch
>
>
> The images on the Fetcher Cache Internals page do not load.
> http://mesos.apache.org/documentation/fetcher-cache-internals/



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


[jira] [Updated] (MESOS-3183) Documentation images do not load

2015-09-21 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3183?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3183:
-
Summary: Documentation images do not load  (was: Fetcher Cache Internals 
documentation images do not load)

> Documentation images do not load
> 
>
> Key: MESOS-3183
> URL: https://issues.apache.org/jira/browse/MESOS-3183
> Project: Mesos
>  Issue Type: Documentation
>  Components: documentation
>Affects Versions: 0.23.0
>Reporter: James Mulcahy
>Assignee: Joseph Wu
>Priority: Minor
> Attachments: rake.patch
>
>
> The images on the Fetcher Cache Internals page do not load.
> http://mesos.apache.org/documentation/fetcher-cache-internals/



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


[jira] [Updated] (MESOS-3183) Documentation images do not load

2015-09-21 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3183?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3183:
-
Description: 
Any images which are referenced from the generated docs ({{docs/*.md}}) do not 
show up on the website.  For example:
* [External 
Containerizer|http://mesos.apache.org/documentation/latest/external-containerizer/]
* [Fetcher Cache 
Internals|http://mesos.apache.org/documentation/latest/fetcher-cache-internals/]
* [Maintenance|http://mesos.apache.org/documentation/latest/maintenance/]   
* 
[Oversubscription|http://mesos.apache.org/documentation/latest/oversubscription/]


  was:
The images on the Fetcher Cache Internals page do not load.

http://mesos.apache.org/documentation/fetcher-cache-internals/




> Documentation images do not load
> 
>
> Key: MESOS-3183
> URL: https://issues.apache.org/jira/browse/MESOS-3183
> Project: Mesos
>  Issue Type: Documentation
>  Components: documentation
>Affects Versions: 0.23.0
>Reporter: James Mulcahy
>Assignee: Joseph Wu
>Priority: Minor
> Attachments: rake.patch
>
>
> Any images which are referenced from the generated docs ({{docs/*.md}}) do 
> not show up on the website.  For example:
> * [External 
> Containerizer|http://mesos.apache.org/documentation/latest/external-containerizer/]
> * [Fetcher Cache 
> Internals|http://mesos.apache.org/documentation/latest/fetcher-cache-internals/]
> * [Maintenance|http://mesos.apache.org/documentation/latest/maintenance/] 
> * 
> [Oversubscription|http://mesos.apache.org/documentation/latest/oversubscription/]



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


[jira] [Comment Edited] (MESOS-3183) Documentation images do not load

2015-09-21 Thread Joseph Wu (JIRA)

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

Joseph Wu edited comment on MESOS-3183 at 9/21/15 11:03 PM:


There are two problems:
* The website itself does not have the images.  For this, we need to patch the 
[website's generation file(s)|https://svn.apache.org/repos/asf/mesos/site/].  
See attached {{rake.patch}}.
* The links will point to the incorrect image URL if there is a {{/}} at the 
end of the page URL.
Fix: https://reviews.apache.org/r/38570/


was (Author: kaysoky):
This problem isn't limited to the Fetcher Cache.  See:
* [External 
Containerizer|http://mesos.apache.org/documentation/latest/external-containerizer/]
* [Fetcher Cache 
Internals|http://mesos.apache.org/documentation/latest/fetcher-cache-internals/]
* [Maintenance|http://mesos.apache.org/documentation/latest/maintenance/]   
* 
[Oversubscription|http://mesos.apache.org/documentation/latest/oversubscription/]

There are two problems:
* The website itself does not have the images.  For this, we need to patch the 
[website's generation file(s)|https://svn.apache.org/repos/asf/mesos/site/].  
See attached {{rake.patch}}.
* The links will point to the incorrect image URL if there is a {{/}} at the 
end of the page URL.
Fix: https://reviews.apache.org/r/38570/

> Documentation images do not load
> 
>
> Key: MESOS-3183
> URL: https://issues.apache.org/jira/browse/MESOS-3183
> Project: Mesos
>  Issue Type: Documentation
>  Components: documentation
>Affects Versions: 0.23.0
>Reporter: James Mulcahy
>Assignee: Joseph Wu
>Priority: Minor
> Attachments: rake.patch
>
>
> Any images which are referenced from the generated docs ({{docs/*.md}}) do 
> not show up on the website.  For example:
> * [External 
> Containerizer|http://mesos.apache.org/documentation/latest/external-containerizer/]
> * [Fetcher Cache 
> Internals|http://mesos.apache.org/documentation/latest/fetcher-cache-internals/]
> * [Maintenance|http://mesos.apache.org/documentation/latest/maintenance/] 
> * 
> [Oversubscription|http://mesos.apache.org/documentation/latest/oversubscription/]



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


[jira] [Assigned] (MESOS-3490) Mesos UI fails to represent JSON entities

2015-09-22 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3490?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu reassigned MESOS-3490:


Assignee: Joseph Wu

> Mesos UI fails to represent JSON entities
> -
>
> Key: MESOS-3490
> URL: https://issues.apache.org/jira/browse/MESOS-3490
> Project: Mesos
>  Issue Type: Bug
>Reporter: Isabel Jimenez
>Assignee: Joseph Wu
>
> The Mesos UI is broken, it seems to fail to represent JSON from /state.
> This may got introduced with https://reviews.apache.org/r/38028/.



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


[jira] [Comment Edited] (MESOS-3490) Mesos UI fails to represent JSON entities

2015-09-22 Thread Joseph Wu (JIRA)

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

Joseph Wu edited comment on MESOS-3490 at 9/22/15 4:55 PM:
---

The error lies with how we printed JSON numbers with a trailing period {{.}}, 
which is invalid JSON.

Simple fix is to print numbers with a trailing {{.0}} instead.
Review: https://reviews.apache.org/r/38632/


was (Author: kaysoky):
The error lies with how we printed JSON numbers with a trailing period '.', 
which is invalid JSON.

Review: https://reviews.apache.org/r/38632/

> Mesos UI fails to represent JSON entities
> -
>
> Key: MESOS-3490
> URL: https://issues.apache.org/jira/browse/MESOS-3490
> Project: Mesos
>  Issue Type: Bug
>Reporter: Isabel Jimenez
>Assignee: Joseph Wu
>
> The Mesos UI is broken, it seems to fail to represent JSON from /state.
> This may got introduced with https://reviews.apache.org/r/38028/.



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


[jira] [Commented] (MESOS-3490) Mesos UI fails to represent JSON entities

2015-09-22 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3490:
--

The error lies with how we printed JSON numbers with a trailing period '.', 
which is invalid JSON.

Review: https://reviews.apache.org/r/38632/

> Mesos UI fails to represent JSON entities
> -
>
> Key: MESOS-3490
> URL: https://issues.apache.org/jira/browse/MESOS-3490
> Project: Mesos
>  Issue Type: Bug
>Reporter: Isabel Jimenez
>Assignee: Joseph Wu
>
> The Mesos UI is broken, it seems to fail to represent JSON from /state.
> This may got introduced with https://reviews.apache.org/r/38028/.



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


[jira] [Updated] (MESOS-3458) Segfault when accepting or declining inverse offers

2015-09-22 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3458?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3458:
-
Sprint: Mesosphere Sprint 19

> Segfault when accepting or declining inverse offers
> ---
>
> Key: MESOS-3458
> URL: https://issues.apache.org/jira/browse/MESOS-3458
> Project: Mesos
>  Issue Type: Bug
>  Components: master
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>Priority: Blocker
>  Labels: mesosphere
>
> Discovered while writing a test for filters (in regards to inverse offers).
> Fix here: https://reviews.apache.org/r/38470/



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


[jira] [Updated] (MESOS-3459) Change /machine/up and /machine/down endpoints to take an array

2015-09-22 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3459:
-
Sprint: Mesosphere Sprint 19

> Change /machine/up and /machine/down endpoints to take an array
> ---
>
> Key: MESOS-3459
> URL: https://issues.apache.org/jira/browse/MESOS-3459
> Project: Mesos
>  Issue Type: Task
>  Components: master
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> With [MESOS-3312] committed, the {{/machine/up}} and {{/machine/down}} 
> endpoints should also take an input as an array.
> It is important to change this before maintenance primitives are released:
> https://reviews.apache.org/r/38011/
> Also, a minor change to the error message from these endpoints:
> https://reviews.apache.org/r/37969/



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


[jira] [Created] (MESOS-3492) Expose maintenance user doc via the documentation home page

2015-09-22 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3492:


 Summary: Expose maintenance user doc via the documentation home 
page
 Key: MESOS-3492
 URL: https://issues.apache.org/jira/browse/MESOS-3492
 Project: Mesos
  Issue Type: Task
  Components: documentation
Reporter: Joseph Wu
Assignee: Joseph Wu
Priority: Trivial


The committed docs can be found here:
http://mesos.apache.org/documentation/latest/maintenance/

We need to add a link to {{docs/home.md}}
Also, the doc needs some minor formatting tweaks.



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


[jira] [Commented] (MESOS-3489) Add support for exposing Accept/Decline responses for inverse offers

2015-09-22 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3489:
--

We should be able to get this done tonight.

> Add support for exposing Accept/Decline responses for inverse offers
> 
>
> Key: MESOS-3489
> URL: https://issues.apache.org/jira/browse/MESOS-3489
> Project: Mesos
>  Issue Type: Bug
>Reporter: Artem Harutyunyan
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> Current implementation of maintenance primitives does not support exposing 
> Accept/Decline responses of frameworks to the cluster operators. 
> This functionality is necessary to provide visibility to operators into 
> whether a given framework is ready to comply with the posted maintenance 
> schedule.



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


[jira] [Updated] (MESOS-3489) Add support for exposing Accept/Decline responses for inverse offers

2015-09-22 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3489:
-
Story Points: 2  (was: 8)

> Add support for exposing Accept/Decline responses for inverse offers
> 
>
> Key: MESOS-3489
> URL: https://issues.apache.org/jira/browse/MESOS-3489
> Project: Mesos
>  Issue Type: Bug
>Reporter: Artem Harutyunyan
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> Current implementation of maintenance primitives does not support exposing 
> Accept/Decline responses of frameworks to the cluster operators. 
> This functionality is necessary to provide visibility to operators into 
> whether a given framework is ready to comply with the posted maintenance 
> schedule.



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


[jira] [Commented] (MESOS-1615) Create design document for Optimistic Offers

2015-09-25 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-1615:
--

[~bmahler], Is it ok if we (Mesosphere/IBM working group on optimistic offers) 
take over this ticket?

> Create design document for Optimistic Offers
> 
>
> Key: MESOS-1615
> URL: https://issues.apache.org/jira/browse/MESOS-1615
> Project: Mesos
>  Issue Type: Documentation
>Reporter: Dominic Hamon
>Assignee: Benjamin Mahler
>
> As a first step toward Optimistic Offers, take the description from the epic 
> and build an implementation design doc that can be shared for comments.



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


[jira] [Assigned] (MESOS-1615) Create design document for Optimistic Offers

2015-09-28 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-1615?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu reassigned MESOS-1615:


Assignee: Joseph Wu

> Create design document for Optimistic Offers
> 
>
> Key: MESOS-1615
> URL: https://issues.apache.org/jira/browse/MESOS-1615
> Project: Mesos
>  Issue Type: Documentation
>Reporter: Dominic Hamon
>Assignee: Joseph Wu
>
> As a first step toward Optimistic Offers, take the description from the epic 
> and build an implementation design doc that can be shared for comments.



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


[jira] [Updated] (MESOS-1615) Create design document for Optimistic Offers

2015-09-28 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-1615?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-1615:
-
Labels: mesosphere  (was: )

> Create design document for Optimistic Offers
> 
>
> Key: MESOS-1615
> URL: https://issues.apache.org/jira/browse/MESOS-1615
> Project: Mesos
>  Issue Type: Documentation
>Reporter: Dominic Hamon
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> As a first step toward Optimistic Offers, take the description from the epic 
> and build an implementation design doc that can be shared for comments.



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


[jira] [Updated] (MESOS-1615) Create design document for Optimistic Offers

2015-09-28 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-1615?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-1615:
-
Story Points: 5

> Create design document for Optimistic Offers
> 
>
> Key: MESOS-1615
> URL: https://issues.apache.org/jira/browse/MESOS-1615
> Project: Mesos
>  Issue Type: Documentation
>Reporter: Dominic Hamon
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> As a first step toward Optimistic Offers, take the description from the epic 
> and build an implementation design doc that can be shared for comments.



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


[jira] [Updated] (MESOS-1615) Create design document for Optimistic Offers

2015-09-28 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-1615?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-1615:
-
Description: 
As a first step toward Optimistic Offers, take the description from the epic 
and build an implementation design doc that can be shared for comments.

Note: the links to the working group notes and design doc are located in the 
[JIRA Epic|MESOS-1607].

  was:As a first step toward Optimistic Offers, take the description from the 
epic and build an implementation design doc that can be shared for comments.


> Create design document for Optimistic Offers
> 
>
> Key: MESOS-1615
> URL: https://issues.apache.org/jira/browse/MESOS-1615
> Project: Mesos
>  Issue Type: Documentation
>Reporter: Dominic Hamon
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> As a first step toward Optimistic Offers, take the description from the epic 
> and build an implementation design doc that can be shared for comments.
> Note: the links to the working group notes and design doc are located in the 
> [JIRA Epic|MESOS-1607].



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


[jira] [Updated] (MESOS-1615) Create design document for Optimistic Offers

2015-09-28 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-1615?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-1615:
-
Story Points: 8  (was: 5)

> Create design document for Optimistic Offers
> 
>
> Key: MESOS-1615
> URL: https://issues.apache.org/jira/browse/MESOS-1615
> Project: Mesos
>  Issue Type: Documentation
>Reporter: Dominic Hamon
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> As a first step toward Optimistic Offers, take the description from the epic 
> and build an implementation design doc that can be shared for comments.
> Note: the links to the working group notes and design doc are located in the 
> [JIRA Epic|MESOS-1607].



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


[jira] [Updated] (MESOS-1615) Create design document for Optimistic Offers

2015-09-28 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-1615?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-1615:
-
Sprint: Mesosphere Sprint 20

> Create design document for Optimistic Offers
> 
>
> Key: MESOS-1615
> URL: https://issues.apache.org/jira/browse/MESOS-1615
> Project: Mesos
>  Issue Type: Documentation
>Reporter: Dominic Hamon
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> As a first step toward Optimistic Offers, take the description from the epic 
> and build an implementation design doc that can be shared for comments.
> Note: the links to the working group notes and design doc are located in the 
> [JIRA Epic|MESOS-1607].



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


[jira] [Updated] (MESOS-3183) Documentation images do not load

2015-09-28 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3183?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3183:
-
Sprint: Mesosphere Sprint 20

> Documentation images do not load
> 
>
> Key: MESOS-3183
> URL: https://issues.apache.org/jira/browse/MESOS-3183
> Project: Mesos
>  Issue Type: Documentation
>  Components: documentation
>Affects Versions: 0.24.0
>Reporter: James Mulcahy
>Assignee: Joseph Wu
>Priority: Minor
>  Labels: mesosphere
> Attachments: rake.patch
>
>
> Any images which are referenced from the generated docs ({{docs/*.md}}) do 
> not show up on the website.  For example:
> * [External 
> Containerizer|http://mesos.apache.org/documentation/latest/external-containerizer/]
> * [Fetcher Cache 
> Internals|http://mesos.apache.org/documentation/latest/fetcher-cache-internals/]
> * [Maintenance|http://mesos.apache.org/documentation/latest/maintenance/] 
> * 
> [Oversubscription|http://mesos.apache.org/documentation/latest/oversubscription/]



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


[jira] [Updated] (MESOS-1607) Introduce optimistic offers.

2015-09-28 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-1607?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-1607:
-
Labels: mesosphere  (was: )

> Introduce optimistic offers.
> 
>
> Key: MESOS-1607
> URL: https://issues.apache.org/jira/browse/MESOS-1607
> Project: Mesos
>  Issue Type: Epic
>  Components: allocation, framework, master
>Reporter: Benjamin Hindman
>Assignee: Artem Harutyunyan
>  Labels: mesosphere
> Attachments: optimisitic-offers.pdf
>
>
> The current implementation of resource offers only enable a single framework 
> scheduler to make scheduling decisions for some available resources at a 
> time. In some circumstances, this is good, i.e., when we don't want other 
> framework schedulers to have access to some resources. However, in other 
> circumstances, there are advantages to letting multiple framework schedulers 
> attempt to make scheduling decisions for the _same_ allocation of resources 
> in parallel.
> If you think about this from a "concurrency control" perspective, the current 
> implementation of resource offers is _pessimistic_, the resources contained 
> within an offer are _locked_ until the framework scheduler that they were 
> offered to launches tasks with them or declines them. In addition to making 
> pessimistic offers we'd like to give out _optimistic_ offers, where the same 
> resources are offered to multiple framework schedulers at the same time, and 
> framework schedulers "compete" for those resources on a 
> first-come-first-serve basis (i.e., the first to launch a task "wins"). We've 
> always reserved the right to rescind resource offers using the 'rescind' 
> primitive in the API, and a framework scheduler should be prepared to launch 
> a task and have those tasks go lost because another framework already started 
> to use those resources.
> Introducing optimistic offers will enable more sophisticated allocation 
> algorithms. For example, we can optimistically allocate resources that are 
> reserved for a particular framework (role) but are not being used. In 
> conjunction with revocable resources (the concept that using resources not 
> reserved for you means you might get those resources revoked) we can easily 
> create a "spot" market for unused resources, driving up utilization by 
> letting frameworks that are willing to use revocable resources run tasks.
> In the limit, one could imagine always making optimistic resource offers. 
> This bears a striking resemblance with the Google Omega model (an isomorphism 
> even). However, being able to configure what resources should be allocated 
> optimistically and what resources should be allocated pessimistically gives 
> even more control to a datacenter/cluster operator that might want to, for 
> example, never let multiple frameworks (roles) compete for some set of 
> resources.



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


[jira] [Updated] (MESOS-3409) Refactor the plain JSON parsing in the docker containerizer

2015-09-30 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3409?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3409:
-
Assignee: Gilbert Song  (was: Joseph Wu)

> Refactor the plain JSON parsing in the docker containerizer
> ---
>
> Key: MESOS-3409
> URL: https://issues.apache.org/jira/browse/MESOS-3409
> Project: Mesos
>  Issue Type: Improvement
>  Components: docker
>Reporter: Joseph Wu
>Assignee: Gilbert Song
>Priority: Minor
>
> Two functions in the Docker-related code take a string and parse it to JSON:
> * {{Docker::Container::create}} in {{src/docker/docker.cpp}}
> * {{Token::create}} in 
> {{src/slave/containerizer/provisioners/docker/token_manager.cpp}}
> This JSON is then validated (lots of if-elses) and used via the 
> {{JSON::Value}} accessors.  We could instead use a protobuf and the related 
> Stout JSON->Protobuf conversion function.



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


[jira] [Commented] (MESOS-3183) Documentation images do not load

2015-10-09 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3183:
--

Update: [~davelester] has submitted the {{rake.patch}}, see [the svn 
commit|http://svn.apache.org/viewvc?view=revision&revision=1707725].

Images still don't show up, since all links which are formatted like 
{{images/foo.png}} will point to 
{{/documentation/latest/some-document/images/foo.png}} instead of 
{{/documentation/latest/images/foo.png}}.

We're still discussing how to make the URL change compatible with versioned 
documentation.

> Documentation images do not load
> 
>
> Key: MESOS-3183
> URL: https://issues.apache.org/jira/browse/MESOS-3183
> Project: Mesos
>  Issue Type: Documentation
>  Components: documentation
>Affects Versions: 0.24.0
>Reporter: James Mulcahy
>Assignee: Joseph Wu
>Priority: Minor
>  Labels: mesosphere
> Attachments: rake.patch
>
>
> Any images which are referenced from the generated docs ({{docs/*.md}}) do 
> not show up on the website.  For example:
> * [External 
> Containerizer|http://mesos.apache.org/documentation/latest/external-containerizer/]
> * [Fetcher Cache 
> Internals|http://mesos.apache.org/documentation/latest/fetcher-cache-internals/]
> * [Maintenance|http://mesos.apache.org/documentation/latest/maintenance/] 
> * 
> [Oversubscription|http://mesos.apache.org/documentation/latest/oversubscription/]



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


[jira] [Updated] (MESOS-1607) Introduce optimistic offers.

2015-10-14 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-1607?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-1607:
-
Description: 
*Background*
The current implementation of resource offers only enable a single framework 
scheduler to make scheduling decisions for some available resources at a time. 
In some circumstances, this is good, i.e., when we don't want other framework 
schedulers to have access to some resources. However, in other circumstances, 
there are advantages to letting multiple framework schedulers attempt to make 
scheduling decisions for the _same_ allocation of resources in parallel.

If you think about this from a "concurrency control" perspective, the current 
implementation of resource offers is _pessimistic_, the resources contained 
within an offer are _locked_ until the framework scheduler that they were 
offered to launches tasks with them or declines them. In addition to making 
pessimistic offers we'd like to give out _optimistic_ offers, where the same 
resources are offered to multiple framework schedulers at the same time, and 
framework schedulers "compete" for those resources on a first-come-first-serve 
basis (i.e., the first to launch a task "wins"). We've always reserved the 
right to rescind resource offers using the 'rescind' primitive in the API, and 
a framework scheduler should be prepared to launch a task and have those tasks 
go lost because another framework already started to use those resources.

*Feature*
We plan to take a step towards optimistic offers, by introducing primitives 
that allow resources to be offered to multiple frameworks at once.  At first, 
we will use these primitives to optimistically allocate resources that are 
reserved for a particular framework/role but have not been allocated by that 
framework/role.  

The work with optimistic offers will closely resemble the existing 
oversubscription feature.  Optimistically offered resources are likely to be 
considered "revocable resources" (the concept that using resources not reserved 
for you means you might get those resources revoked).  In effect, we can may 
create something like a "spot" market for unused resources, driving up 
utilization by letting frameworks that are willing to use revocable resources 
run tasks.

*Future Work*
This ticket tracks the introduction of some aspects of optimistic offers.  

Taken to the limit, one could imagine always making optimistic resource offers. 
This bears a striking resemblance with the Google Omega model (an isomorphism 
even). However, being able to configure what resources should be allocated 
optimistically and what resources should be allocated pessimistically gives 
even more control to a datacenter/cluster operator that might want to, for 
example, never let multiple frameworks (roles) compete for some set of 
resources.

  was:
The current implementation of resource offers only enable a single framework 
scheduler to make scheduling decisions for some available resources at a time. 
In some circumstances, this is good, i.e., when we don't want other framework 
schedulers to have access to some resources. However, in other circumstances, 
there are advantages to letting multiple framework schedulers attempt to make 
scheduling decisions for the _same_ allocation of resources in parallel.

If you think about this from a "concurrency control" perspective, the current 
implementation of resource offers is _pessimistic_, the resources contained 
within an offer are _locked_ until the framework scheduler that they were 
offered to launches tasks with them or declines them. In addition to making 
pessimistic offers we'd like to give out _optimistic_ offers, where the same 
resources are offered to multiple framework schedulers at the same time, and 
framework schedulers "compete" for those resources on a first-come-first-serve 
basis (i.e., the first to launch a task "wins"). We've always reserved the 
right to rescind resource offers using the 'rescind' primitive in the API, and 
a framework scheduler should be prepared to launch a task and have those tasks 
go lost because another framework already started to use those resources.

Introducing optimistic offers will enable more sophisticated allocation 
algorithms. For example, we can optimistically allocate resources that are 
reserved for a particular framework (role) but are not being used. In 
conjunction with revocable resources (the concept that using resources not 
reserved for you means you might get those resources revoked) we can easily 
create a "spot" market for unused resources, driving up utilization by letting 
frameworks that are willing to use revocable resources run tasks.

In the limit, one could imagine always making optimistic resource offers. This 
bears a striking resemblance with the Google Omega model (an isomorphism even). 
However, being able to configure what resources should be allocated 
opti

[jira] [Created] (MESOS-3748) HTTP API does not gracefully parse invalid resource identifiers

2015-10-15 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3748:


 Summary: HTTP API does not gracefully parse invalid resource 
identifiers
 Key: MESOS-3748
 URL: https://issues.apache.org/jira/browse/MESOS-3748
 Project: Mesos
  Issue Type: Bug
  Components: framework, HTTP API
Affects Versions: 0.25.0
Reporter: Joseph Wu
Assignee: Joseph Wu


If you pass a nonsense string for "master" into a framework using the HTTP API, 
the framework segfaults.

For example, using the example frameworks:

{code}
build/src/test-framework --master="asdf://127.0.0.1:5050"
{code}
Results in:
{code}
Failed to create a master detector for 'asdf://127.0.0.1:5050': Failed to parse 
'asdf://127.0.0.1:5050'
{code}

{code}
export DEFAULT_PRINCIPAL=root
build/src/event-call-framework --master="asdf://127.0.0.1:5050"
{code}
Results in
{code}
I1015 16:18:45.432075 2062201600 scheduler.cpp:157] Version: 0.26.0
Segmentation fault: 11
{code}



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


[jira] [Updated] (MESOS-3748) HTTP API does not gracefully parse invalid resource identifiers

2015-10-15 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3748?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3748:
-
Description: 
If you pass a nonsense string for "master" into a framework using the HTTP API, 
the framework segfaults.

For example, using the example frameworks:

{code}
build/src/test-framework --master="asdf://127.0.0.1:5050"
{code}
Results in:
{code}
Failed to create a master detector for 'asdf://127.0.0.1:5050': Failed to parse 
'asdf://127.0.0.1:5050'
{code}

Using the HTTP API:
{code}
export DEFAULT_PRINCIPAL=root
build/src/event-call-framework --master="asdf://127.0.0.1:5050"
{code}
Results in
{code}
I1015 16:18:45.432075 2062201600 scheduler.cpp:157] Version: 0.26.0
Segmentation fault: 11
{code}

  was:
If you pass a nonsense string for "master" into a framework using the HTTP API, 
the framework segfaults.

For example, using the example frameworks:

{code}
build/src/test-framework --master="asdf://127.0.0.1:5050"
{code}
Results in:
{code}
Failed to create a master detector for 'asdf://127.0.0.1:5050': Failed to parse 
'asdf://127.0.0.1:5050'
{code}

{code}
export DEFAULT_PRINCIPAL=root
build/src/event-call-framework --master="asdf://127.0.0.1:5050"
{code}
Results in
{code}
I1015 16:18:45.432075 2062201600 scheduler.cpp:157] Version: 0.26.0
Segmentation fault: 11
{code}


> HTTP API does not gracefully parse invalid resource identifiers
> ---
>
> Key: MESOS-3748
> URL: https://issues.apache.org/jira/browse/MESOS-3748
> Project: Mesos
>  Issue Type: Bug
>  Components: framework, HTTP API
>Affects Versions: 0.25.0
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> If you pass a nonsense string for "master" into a framework using the HTTP 
> API, the framework segfaults.
> For example, using the example frameworks:
> {code}
> build/src/test-framework --master="asdf://127.0.0.1:5050"
> {code}
> Results in:
> {code}
> Failed to create a master detector for 'asdf://127.0.0.1:5050': Failed to 
> parse 'asdf://127.0.0.1:5050'
> {code}
> Using the HTTP API:
> {code}
> export DEFAULT_PRINCIPAL=root
> build/src/event-call-framework --master="asdf://127.0.0.1:5050"
> {code}
> Results in
> {code}
> I1015 16:18:45.432075 2062201600 scheduler.cpp:157] Version: 0.26.0
> Segmentation fault: 11
> {code}



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


[jira] [Updated] (MESOS-3748) HTTP scheduler library does not gracefully parse invalid resource identifiers

2015-10-15 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3748?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3748:
-
Summary: HTTP scheduler library does not gracefully parse invalid resource 
identifiers  (was: HTTP API does not gracefully parse invalid resource 
identifiers)

> HTTP scheduler library does not gracefully parse invalid resource identifiers
> -
>
> Key: MESOS-3748
> URL: https://issues.apache.org/jira/browse/MESOS-3748
> Project: Mesos
>  Issue Type: Bug
>  Components: framework, HTTP API
>Affects Versions: 0.25.0
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> If you pass a nonsense string for "master" into a framework using the HTTP 
> API, the framework segfaults.
> For example, using the example frameworks:
> {code}
> build/src/test-framework --master="asdf://127.0.0.1:5050"
> {code}
> Results in:
> {code}
> Failed to create a master detector for 'asdf://127.0.0.1:5050': Failed to 
> parse 'asdf://127.0.0.1:5050'
> {code}
> Using the HTTP API:
> {code}
> export DEFAULT_PRINCIPAL=root
> build/src/event-call-framework --master="asdf://127.0.0.1:5050"
> {code}
> Results in
> {code}
> I1015 16:18:45.432075 2062201600 scheduler.cpp:157] Version: 0.26.0
> Segmentation fault: 11
> {code}



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


[jira] [Updated] (MESOS-3748) HTTP scheduler library does not gracefully parse invalid resource identifiers

2015-10-15 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3748?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3748:
-
Description: 
If you pass a nonsense string for "master" into a framework using the HTTP 
scheduler library, the framework segfaults.

For example, using the example frameworks:

{code}
build/src/test-framework --master="asdf://127.0.0.1:5050"
{code}
Results in:
{code}
Failed to create a master detector for 'asdf://127.0.0.1:5050': Failed to parse 
'asdf://127.0.0.1:5050'
{code}

Using the HTTP API:
{code}
export DEFAULT_PRINCIPAL=root
build/src/event-call-framework --master="asdf://127.0.0.1:5050"
{code}
Results in
{code}
I1015 16:18:45.432075 2062201600 scheduler.cpp:157] Version: 0.26.0
Segmentation fault: 11
{code}

  was:
If you pass a nonsense string for "master" into a framework using the HTTP API, 
the framework segfaults.

For example, using the example frameworks:

{code}
build/src/test-framework --master="asdf://127.0.0.1:5050"
{code}
Results in:
{code}
Failed to create a master detector for 'asdf://127.0.0.1:5050': Failed to parse 
'asdf://127.0.0.1:5050'
{code}

Using the HTTP API:
{code}
export DEFAULT_PRINCIPAL=root
build/src/event-call-framework --master="asdf://127.0.0.1:5050"
{code}
Results in
{code}
I1015 16:18:45.432075 2062201600 scheduler.cpp:157] Version: 0.26.0
Segmentation fault: 11
{code}


> HTTP scheduler library does not gracefully parse invalid resource identifiers
> -
>
> Key: MESOS-3748
> URL: https://issues.apache.org/jira/browse/MESOS-3748
> Project: Mesos
>  Issue Type: Bug
>  Components: framework, HTTP API
>Affects Versions: 0.25.0
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> If you pass a nonsense string for "master" into a framework using the HTTP 
> scheduler library, the framework segfaults.
> For example, using the example frameworks:
> {code}
> build/src/test-framework --master="asdf://127.0.0.1:5050"
> {code}
> Results in:
> {code}
> Failed to create a master detector for 'asdf://127.0.0.1:5050': Failed to 
> parse 'asdf://127.0.0.1:5050'
> {code}
> Using the HTTP API:
> {code}
> export DEFAULT_PRINCIPAL=root
> build/src/event-call-framework --master="asdf://127.0.0.1:5050"
> {code}
> Results in
> {code}
> I1015 16:18:45.432075 2062201600 scheduler.cpp:157] Version: 0.26.0
> Segmentation fault: 11
> {code}



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


[jira] [Updated] (MESOS-3748) HTTP scheduler library does not gracefully parse invalid resource identifiers

2015-10-15 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3748?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3748:
-
Description: 
If you pass a nonsense string for "master" into a framework using the HTTP 
scheduler library, the framework segfaults.

For example, using the example frameworks:

{code:title=Scheduler Driver}
build/src/test-framework --master="asdf://127.0.0.1:5050"
{code}
Results in:
{code}
Failed to create a master detector for 'asdf://127.0.0.1:5050': Failed to parse 
'asdf://127.0.0.1:5050'
{code}

{code:title=HTTP Scheduler Library}
export DEFAULT_PRINCIPAL=root
build/src/event-call-framework --master="asdf://127.0.0.1:5050"
{code}
Results in
{code}
I1015 16:18:45.432075 2062201600 scheduler.cpp:157] Version: 0.26.0
Segmentation fault: 11
{code}

{code:title=Stack Trace}
* thread #2: tid = 0x28b6bb, 0x000100ad03ca 
libmesos-0.26.0.dylib`mesos::v1::scheduler::MesosProcess::initialize(this=0x0001076031a0)
 + 42 at scheduler.cpp:213, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x000100ad03ca 
libmesos-0.26.0.dylib`mesos::v1::scheduler::MesosProcess::initialize(this=0x0001076031a0)
 + 42 at scheduler.cpp:213
frame #1: 0x000100ad05f2 libmesos-0.26.0.dylib`virtual thunk to 
mesos::v1::scheduler::MesosProcess::initialize(this=0x0001076031a0) + 34 at 
scheduler.cpp:210
frame #2: 0x0001022b60f3 libmesos-0.26.0.dylib`::resume() + 931 at 
process.cpp:2449
frame #3: 0x0001022c131c libmesos-0.26.0.dylib`::operator()() + 268 at 
process.cpp:2174
frame #4: 0x0001022c0fa2 
libmesos-0.26.0.dylib`::__thread_proxy > > > >() [inlined] 
__invoke<(lambda at ../../../3rdparty/libprocess/src/process.cpp:2158:35) &, 
const std::__1::atomic &> + 27 at __functional_base:415
frame #5: 0x0001022c0f87 
libmesos-0.26.0.dylib`::__thread_proxy > > > >() [inlined] 
__apply_functor<(lambda at 
../../../3rdparty/libprocess/src/process.cpp:2158:35), 
std::__1::tuple > >, 
0, std::__1::tuple<> > + 55 at functional:2060
frame #6: 0x0001022c0f50 
libmesos-0.26.0.dylib`::__thread_proxy > > > >() [inlined] 
operator()<> + 41 at functional:2123
frame #7: 0x0001022c0f27 
libmesos-0.26.0.dylib`::__thread_proxy > > > >() [inlined] 
__invoke > >> + 14 at 
__functional_base:415
frame #8: 0x0001022c0f19 
libmesos-0.26.0.dylib`::__thread_proxy > > > >() [inlined] 
__thread_execute > >> + 25 at thread:337
frame #9: 0x0001022c0f00 
libmesos-0.26.0.dylib`::__thread_proxy > > > >() + 368 at 
thread:347
frame #10: 0x7fff964c705a libsystem_pthread.dylib`_pthread_body + 131
frame #11: 0x7fff964c6fd7 libsystem_pthread.dylib`_pthread_start + 176
frame #12: 0x7fff964c43ed libsystem_pthread.dylib`thread_start + 13
{code}

  was:
If you pass a nonsense string for "master" into a framework using the HTTP 
scheduler library, the framework segfaults.

For example, using the example frameworks:

{code}
build/src/test-framework --master="asdf://127.0.0.1:5050"
{code}
Results in:
{code}
Failed to create a master detector for 'asdf://127.0.0.1:5050': Failed to parse 
'asdf://127.0.0.1:5050'
{code}

Using the HTTP API:
{code}
export DEFAULT_PRINCIPAL=root
build/src/event-call-framework --master="asdf://127.0.0.1:5050"
{code}
Results in
{code}
I1015 16:18:45.432075 2062201600 scheduler.cpp:157] Version: 0.26.0
Segmentation fault: 11
{code}


> HTTP scheduler library does not gracefully parse invalid resource identifiers
> -
>
> Key: MESOS-3748
> URL: https://issues.apache.org/jira/browse/MESOS-3748
> Project: Mesos
>  Issue Type: Bug
>  Components: framework, HTTP API
>Affects Versions: 0.25.0
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> If you pass a nonsense string for "master" into a framework using the HTTP 
> scheduler library, the framework segfaults.
> For example, using the example frameworks:
> {code:title=Scheduler Driver}
> build/src/test-framework --master="asdf://127.0.0.1:5050"
> {code}
> Results in:
> {code}
> Failed to create a master detector for 'asdf://127.0.0.1:5050': Failed to 
> parse 'asdf://127.0.0.1:5050'
> {code}
> {code:title=HTTP Scheduler Library}
> export DEFAULT_PRINCIPAL=root
> build/src/event-call-framework --master="asdf://127.0.0.1:5050"
> {code}
> Results in
> {code}
> I1015 16:18:45.432075 2062201600 scheduler.cpp:157] Version: 0.26.0
> Segmentation fault: 11
> {code}
> {code:title=Stack Trace}
> * thread #2: tid = 0x28b6bb, 0x000100ad03ca 
> libmesos-0.26.0.dylib`mesos::v1::scheduler::MesosProcess::initialize(this=0x0001076031a0)
>  + 42 at scheduler.cpp:213, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
>   * frame #0: 0x000100ad03ca 
> libmesos-0.26.0.dylib`mesos::v1::scheduler::MesosProcess::init

[jira] [Commented] (MESOS-3748) HTTP scheduler library does not gracefully parse invalid resource identifiers

2015-10-15 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3748:
--

Turns out to be a rather trivial issue: https://reviews.apache.org/r/39365/

> HTTP scheduler library does not gracefully parse invalid resource identifiers
> -
>
> Key: MESOS-3748
> URL: https://issues.apache.org/jira/browse/MESOS-3748
> Project: Mesos
>  Issue Type: Bug
>  Components: framework, HTTP API
>Affects Versions: 0.25.0
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> If you pass a nonsense string for "master" into a framework using the HTTP 
> scheduler library, the framework segfaults.
> For example, using the example frameworks:
> {code:title=Scheduler Driver}
> build/src/test-framework --master="asdf://127.0.0.1:5050"
> {code}
> Results in:
> {code}
> Failed to create a master detector for 'asdf://127.0.0.1:5050': Failed to 
> parse 'asdf://127.0.0.1:5050'
> {code}
> {code:title=HTTP Scheduler Library}
> export DEFAULT_PRINCIPAL=root
> build/src/event-call-framework --master="asdf://127.0.0.1:5050"
> {code}
> Results in
> {code}
> I1015 16:18:45.432075 2062201600 scheduler.cpp:157] Version: 0.26.0
> Segmentation fault: 11
> {code}
> {code:title=Stack Trace}
> * thread #2: tid = 0x28b6bb, 0x000100ad03ca 
> libmesos-0.26.0.dylib`mesos::v1::scheduler::MesosProcess::initialize(this=0x0001076031a0)
>  + 42 at scheduler.cpp:213, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
>   * frame #0: 0x000100ad03ca 
> libmesos-0.26.0.dylib`mesos::v1::scheduler::MesosProcess::initialize(this=0x0001076031a0)
>  + 42 at scheduler.cpp:213
> frame #1: 0x000100ad05f2 libmesos-0.26.0.dylib`virtual thunk to 
> mesos::v1::scheduler::MesosProcess::initialize(this=0x0001076031a0) + 34 
> at scheduler.cpp:210
> frame #2: 0x0001022b60f3 libmesos-0.26.0.dylib`::resume() + 931 at 
> process.cpp:2449
> frame #3: 0x0001022c131c libmesos-0.26.0.dylib`::operator()() + 268 
> at process.cpp:2174
> frame #4: 0x0001022c0fa2 
> libmesos-0.26.0.dylib`::__thread_proxy  at ../../../3rdparty/libprocess/src/process.cpp:2158:35), 
> std::__1::reference_wrapper > > > >() [inlined] 
> __invoke<(lambda at ../../../3rdparty/libprocess/src/process.cpp:2158:35) &, 
> const std::__1::atomic &> + 27 at __functional_base:415
> frame #5: 0x0001022c0f87 
> libmesos-0.26.0.dylib`::__thread_proxy  at ../../../3rdparty/libprocess/src/process.cpp:2158:35), 
> std::__1::reference_wrapper > > > >() [inlined] 
> __apply_functor<(lambda at 
> ../../../3rdparty/libprocess/src/process.cpp:2158:35), 
> std::__1::tuple > >, 
> 0, std::__1::tuple<> > + 55 at functional:2060
> frame #6: 0x0001022c0f50 
> libmesos-0.26.0.dylib`::__thread_proxy  at ../../../3rdparty/libprocess/src/process.cpp:2158:35), 
> std::__1::reference_wrapper > > > >() [inlined] 
> operator()<> + 41 at functional:2123
> frame #7: 0x0001022c0f27 
> libmesos-0.26.0.dylib`::__thread_proxy  at ../../../3rdparty/libprocess/src/process.cpp:2158:35), 
> std::__1::reference_wrapper > > > >() [inlined] 
> __invoke ../../../3rdparty/libprocess/src/process.cpp:2158:35), 
> std::__1::reference_wrapper > >> + 14 at 
> __functional_base:415
> frame #8: 0x0001022c0f19 
> libmesos-0.26.0.dylib`::__thread_proxy  at ../../../3rdparty/libprocess/src/process.cpp:2158:35), 
> std::__1::reference_wrapper > > > >() [inlined] 
> __thread_execute ../../../3rdparty/libprocess/src/process.cpp:2158:35), 
> std::__1::reference_wrapper > >> + 25 at 
> thread:337
> frame #9: 0x0001022c0f00 
> libmesos-0.26.0.dylib`::__thread_proxy  at ../../../3rdparty/libprocess/src/process.cpp:2158:35), 
> std::__1::reference_wrapper > > > >() + 368 at 
> thread:347
> frame #10: 0x7fff964c705a libsystem_pthread.dylib`_pthread_body + 131
> frame #11: 0x7fff964c6fd7 libsystem_pthread.dylib`_pthread_start + 176
> frame #12: 0x7fff964c43ed libsystem_pthread.dylib`thread_start + 13
> {code}



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


[jira] [Updated] (MESOS-3751) MESOS_NATIVE_JAVA_LIBRARY not set on MesosContainerize tasks with --executor_environmnent_variables

2015-10-16 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3751?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3751:
-
Summary: MESOS_NATIVE_JAVA_LIBRARY not set on MesosContainerize tasks with 
--executor_environmnent_variables  (was: MESOS_NATIVE_JAVA_LIBRARY not set on 
MesosContainerizre tasks with --executor_environmnent_variables)

> MESOS_NATIVE_JAVA_LIBRARY not set on MesosContainerize tasks with 
> --executor_environmnent_variables
> ---
>
> Key: MESOS-3751
> URL: https://issues.apache.org/jira/browse/MESOS-3751
> Project: Mesos
>  Issue Type: Bug
>  Components: containerization
>Affects Versions: 0.24.1, 0.25.0
>Reporter: Cody Maloney
>Assignee: Gilbert Song
>  Labels: mesosphere, newbie
>
> When using --executor_environment_variables, and having 
> MESOS_NATIVE_JAVA_LIBRARY in the environment of mesos-slave, the mesos 
> containerizer does not set MESOS_NATIVE_JAVA_LIBRARY itself.
> Relevant code: 
> https://github.com/apache/mesos/blob/14f7967ef307f3d98e3a4b93d92d6b3a56399b20/src/slave/containerizer/containerizer.cpp#L281
> It sees that the variable is in the mesos-slave's environment (os::getenv), 
> rather than checking if it is set in the environment variable set.



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


[jira] [Created] (MESOS-3753) Test the HTTP Scheduler library with SSL enabled

2015-10-16 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3753:


 Summary: Test the HTTP Scheduler library with SSL enabled
 Key: MESOS-3753
 URL: https://issues.apache.org/jira/browse/MESOS-3753
 Project: Mesos
  Issue Type: Story
  Components: framework, HTTP API, test
Reporter: Joseph Wu
Assignee: Joseph Wu


Currently, the HTTP Scheduler library does not support SSL-enabled Mesos.  

We need to add tests that check the schedule library against SSL-enabled Mesos 
with SSL:
* with downgrade support,
* with/without verification of certificates (framework-side),
* with required framework/client-side certifications,
* with/without verification of certificates (master-side),
* with a custom certificate authority (CA),

These options should be controlled by the same environment variables found on 
the [SSL user doc|http://mesos.apache.org/documentation/latest/ssl/].

Note: This issue will be broken down into smaller sub-issues as bugs/problems 
are discovered.



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


[jira] [Created] (MESOS-3759) Document messages.proto

2015-10-19 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3759:


 Summary: Document messages.proto
 Key: MESOS-3759
 URL: https://issues.apache.org/jira/browse/MESOS-3759
 Project: Mesos
  Issue Type: Improvement
  Components: documentation
Reporter: Joseph Wu
Assignee: Joseph Wu


The messages we pass between Mesos components are largely undocumented.  See 
this 
[TODO|https://github.com/apache/mesos/blob/master/src/messages/messages.proto#L23].



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


[jira] [Updated] (MESOS-3759) Document messages.proto

2015-10-19 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3759?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3759:
-
Shepherd: Joris Van Remoortere

> Document messages.proto
> ---
>
> Key: MESOS-3759
> URL: https://issues.apache.org/jira/browse/MESOS-3759
> Project: Mesos
>  Issue Type: Improvement
>  Components: documentation
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: documentation, mesosphere
>
> The messages we pass between Mesos components are largely undocumented.  See 
> this 
> [TODO|https://github.com/apache/mesos/blob/master/src/messages/messages.proto#L23].



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


[jira] [Updated] (MESOS-3759) Document messages.proto

2015-10-19 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3759?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3759:
-
Description: The messages we pass between Mesos components are largely 
undocumented.  See this 
[TODO|https://github.com/apache/mesos/blob/19f14d06bac269b635657960d8ea8b2928b7830c/src/messages/messages.proto#L23].
  (was: The messages we pass between Mesos components are largely undocumented. 
 See this 
[TODO|https://github.com/apache/mesos/blob/master/src/messages/messages.proto#L23].)

> Document messages.proto
> ---
>
> Key: MESOS-3759
> URL: https://issues.apache.org/jira/browse/MESOS-3759
> Project: Mesos
>  Issue Type: Improvement
>  Components: documentation
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: documentation, mesosphere
>
> The messages we pass between Mesos components are largely undocumented.  See 
> this 
> [TODO|https://github.com/apache/mesos/blob/19f14d06bac269b635657960d8ea8b2928b7830c/src/messages/messages.proto#L23].



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


[jira] [Created] (MESOS-3762) Refactor SSLTest fixture such that MesosTest can use the same helpers.

2015-10-19 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3762:


 Summary: Refactor SSLTest fixture such that MesosTest can use the 
same helpers.
 Key: MESOS-3762
 URL: https://issues.apache.org/jira/browse/MESOS-3762
 Project: Mesos
  Issue Type: Task
  Components: test
Reporter: Joseph Wu
Assignee: Joseph Wu


In order to write tests that exercise SSL with other components of Mesos, such 
as the HTTP scheduler library, we need to use the setup/teardown logic found in 
the {{SSLTest}} fixture.

Currently, the test fixtures have separate inheritance structures like this:
{code}
SSLTest <- ::testing::Test
MesosTest <- TemporaryDirectoryTest <- ::testing::Test
{code}
where {{::testing::Test}} is a gtest class.

The plan is the following:
1) Change {{SSLTest}} to inherit from {{TemporaryDirectoryTest}}.  This will 
require moving the setup (generation of keys and certs) from {{SetUpTestCase}} 
to {{SetUp}}.  At the same time, *some* of the cleanup logic in the SSLTest 
will not be needed.
2) Move the logic of generating keys/certs into helpers, so that individual 
tests can call them when needed, much like {{MesosTest}}.
3) Have {{MesosTest}} inherit from {{SSLTest}} (which might be renamed during 
the refactor).  If Mesos is not compiled with {{--enable-ssl}}, then 
{{SSLTest}} could be {{#ifdef}}'d into any empty class.
4) Write a child class of {{SSLTest}} which has the same functionality as the 
existing {{SSLTest}}, for use by the existing tests that rely on {{SSLTest}} or 
the {{RegistryClientTest}}.

The resulting structure should be like:
{code}
MesosTest <- SSLTest <- TemporaryDirectoryTest <- ::testing::Test
ChildOfSSLTest /
{code}



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


[jira] [Updated] (MESOS-3753) Test the HTTP Scheduler library with SSL enabled

2015-10-19 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3753?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3753:
-
Sprint:   (was: Mesosphere Sprint 21)

> Test the HTTP Scheduler library with SSL enabled
> 
>
> Key: MESOS-3753
> URL: https://issues.apache.org/jira/browse/MESOS-3753
> Project: Mesos
>  Issue Type: Story
>  Components: framework, HTTP API, test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere, security
>
> Currently, the HTTP Scheduler library does not support SSL-enabled Mesos.  
> We need to add tests that check the schedule library against SSL-enabled 
> Mesos with SSL:
> * with downgrade support,
> * with/without verification of certificates (framework-side),
> * with required framework/client-side certifications,
> * with/without verification of certificates (master-side),
> * with a custom certificate authority (CA),
> These options should be controlled by the same environment variables found on 
> the [SSL user doc|http://mesos.apache.org/documentation/latest/ssl/].
> Note: This issue will be broken down into smaller sub-issues as bugs/problems 
> are discovered.



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


[jira] [Updated] (MESOS-3759) Document messages.proto

2015-10-20 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3759?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3759:
-
Labels: docathon documentation mesosphere  (was: documentation mesosphere)

> Document messages.proto
> ---
>
> Key: MESOS-3759
> URL: https://issues.apache.org/jira/browse/MESOS-3759
> Project: Mesos
>  Issue Type: Improvement
>  Components: documentation
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: docathon, documentation, mesosphere
>
> The messages we pass between Mesos components are largely undocumented.  See 
> this 
> [TODO|https://github.com/apache/mesos/blob/19f14d06bac269b635657960d8ea8b2928b7830c/src/messages/messages.proto#L23].



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


[jira] [Commented] (MESOS-3581) License headers show up all over doxygen documentation.

2015-10-20 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3581:
--

IMO, more importantly, we should actually update the Doxygen docs.  They were 
last updated 13 months ago.  (See linked issues)

Also, we can easily get rid of the license headers by actually documenting the 
classes.
For example, the [Watcher 
class|http://mesos.apache.org/api/latest/c++/classWatcher.html] has proper 
documentation *and* a license.

> License headers show up all over doxygen documentation.
> ---
>
> Key: MESOS-3581
> URL: https://issues.apache.org/jira/browse/MESOS-3581
> Project: Mesos
>  Issue Type: Documentation
>  Components: documentation
>Affects Versions: 0.24.1
>Reporter: Benjamin Bannier
>Assignee: Benjamin Bannier
>Priority: Minor
>
> Currently license headers are commented in something resembling Javadoc style,
> {code}
> /**
> * Licensed ...
> {code}
> Since we use Javadoc-style comment blocks for doxygen documentation all 
> license headers appear in the generated documentation, potentially and likely 
> hiding the actual documentation.
> Using {{/*}} to start the comment blocks would be enough to hide them from 
> doxygen, but would likely also result in a largish (though mostly 
> uninteresting) patch.



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


[jira] [Created] (MESOS-3773) RegistryClientTest.SimpleGetBlob is flaky

2015-10-20 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3773:


 Summary: RegistryClientTest.SimpleGetBlob is flaky
 Key: MESOS-3773
 URL: https://issues.apache.org/jira/browse/MESOS-3773
 Project: Mesos
  Issue Type: Bug
  Components: test
Reporter: Joseph Wu
Assignee: Jojy Varghese


{{RegistryClientTest.SimpleGetBlob}} fails about 1/5 times.  This was 
encountered on OSX.

{code:title=Repro}
bin/mesos-tests.sh --gtest_filter="*RegistryClientTest.SimpleGetBlob*" 
--gtest_repeat=10 --gtest_break_on_failure
{code}

{code:title=Example Failure}
[ RUN  ] RegistryClientTest.SimpleGetBlob
../../src/tests/containerizer/provisioner_docker_tests.cpp:946: Failure
Value of: blobResponse
  Actual: "2015-10-20 20:58:59.579393024+00:00"
Expected: blob.get()
Which is: 
"\x15\x3\x3\00(P~\xCA&\xC6<\x4\x16\xE\xB2\xFF\b1a\xB9Z{\xE0\x80\xDA`\xBCt\x5R\x81x6\xF8
 \x8B{\xA8\xA9\x4\xAB\xB6" "E\xE6\xDE\xCF\xD9*\xCC!\xC2\x15" "2015-10-20 
20:58:59.579393024+00:00"
*** Aborted at 1445374739 (unix time) try "date -d @1445374739" if you are 
using GNU date ***
PC: @0x103144ddc testing::UnitTest::AddTestPartResult()
*** SIGSEGV (@0x0) received by PID 49008 (TID 0x7fff73ca3300) stack trace: ***
@ 0x7fff8c58af1a _sigtramp
@ 0x7fff8386e187 malloc
@0x1031445b7 testing::internal::AssertHelper::operator=()
@0x1030d32e0 
mesos::internal::tests::RegistryClientTest_SimpleGetBlob_Test::TestBody()
@0x1030d3562 
mesos::internal::tests::RegistryClientTest_SimpleGetBlob_Test::TestBody()
@0x1031ac8f3 
testing::internal::HandleSehExceptionsInMethodIfSupported<>()
@0x103192f87 
testing::internal::HandleExceptionsInMethodIfSupported<>()
@0x1031533f5 testing::Test::Run()
@0x10315493b testing::TestInfo::Run()
@0x1031555f7 testing::TestCase::Run()
@0x103163df3 testing::internal::UnitTestImpl::RunAllTests()
@0x1031af8c3 
testing::internal::HandleSehExceptionsInMethodIfSupported<>()
@0x103195397 
testing::internal::HandleExceptionsInMethodIfSupported<>()
@0x1031639f2 testing::UnitTest::Run()
@0x1025abd41 RUN_ALL_TESTS()
@0x1025a8089 main
@ 0x7fff86b155c9 start
{code}

{code:title=Less common failure}
[ RUN  ] RegistryClientTest.SimpleGetBlob
../../src/tests/containerizer/provisioner_docker_tests.cpp:926: Failure
(socket).failure(): Failed accept: connection error: 
error::lib(0):func(0):reason(0)
{code}



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


[jira] [Commented] (MESOS-3771) Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII handling

2015-10-20 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3771:
--

^ That's actually what would (sort of) fix your issue.  There's an old TODO 
[here|https://github.com/apache/mesos/blob/master/src/master/http.cpp#L118-L119]
 to make the change.

We do actually encode {{bytes}} in base64, but only when they are transformed 
into JSON from Protobuf.  However, some of the endpoints (the ones which must 
be backwards compatible) appear to treat {{bytes}} as ASCII strings.  

If you have more control over your version of Spark, you could base64 encode 
from Spark:
https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/executor/MesosExecutorBackend.scala#L47

> Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII 
> handling
> ---
>
> Key: MESOS-3771
> URL: https://issues.apache.org/jira/browse/MESOS-3771
> Project: Mesos
>  Issue Type: Bug
>  Components: HTTP API
>Affects Versions: 0.24.1
>Reporter: Steven Schlansker
>Priority: Critical
>
> Spark encodes some binary data into the ExecutorInfo.data field.  This field 
> is sent as a "bytes" Protobuf value, which can have arbitrary non-UTF8 data.
> If you have such a field, it seems that it is splatted out into JSON without 
> any regards to proper character encoding:
> {code}
> 0006b0b0  2e 73 70 61 72 6b 2e 65  78 65 63 75 74 6f 72 2e  |.spark.executor.|
> 0006b0c0  4d 65 73 6f 73 45 78 65  63 75 74 6f 72 42 61 63  |MesosExecutorBac|
> 0006b0d0  6b 65 6e 64 22 7d 2c 22  64 61 74 61 22 3a 22 ac  |kend"},"data":".|
> 0006b0e0  ed 5c 75 30 30 30 30 5c  75 30 30 30 35 75 72 5c  |.\u\u0005ur\|
> 0006b0f0  75 30 30 30 30 5c 75 30  30 30 66 5b 4c 73 63 61  |u\u000f[Lsca|
> 0006b100  6c 61 2e 54 75 70 6c 65  32 3b 2e cc 5c 75 30 30  |la.Tuple2;..\u00|
> {code}
> I suspect this is because the HTTP api emits the executorInfo.data directly:
> {code}
> JSON::Object model(const ExecutorInfo& executorInfo)
> {
>   JSON::Object object;
>   object.values["executor_id"] = executorInfo.executor_id().value();
>   object.values["name"] = executorInfo.name();
>   object.values["data"] = executorInfo.data();
>   object.values["framework_id"] = executorInfo.framework_id().value();
>   object.values["command"] = model(executorInfo.command());
>   object.values["resources"] = model(executorInfo.resources());
>   return object;
> }
> {code}
> I think this may be because the custom JSON processing library in stout seems 
> to not have any idea of what a byte array is.  I'm guessing that some 
> implicit conversion makes it get written as a String instead, but:
> {code}
> inline std::ostream& operator<<(std::ostream& out, const String& string)
> {
>   // TODO(benh): This escaping DOES NOT handle unicode, it encodes as ASCII.
>   // See RFC4627 for the JSON string specificiation.
>   return out << picojson::value(string.value).serialize();
> }
> {code}
> Thank you for any assistance here.  Our cluster is currently entirely down -- 
> the frameworks cannot handle parsing the invalid JSON produced (it is not 
> even valid utf-8)



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


[jira] [Updated] (MESOS-3762) Refactor SSLTest fixture such that MesosTest can use the same helpers.

2015-10-20 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3762?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3762:
-
Description: 
In order to write tests that exercise SSL with other components of Mesos, such 
as the HTTP scheduler library, we need to use the setup/teardown logic found in 
the {{SSLTest}} fixture.

Currently, the test fixtures have separate inheritance structures like this:
{code}
SSLTest <- ::testing::Test
MesosTest <- TemporaryDirectoryTest <- ::testing::Test
{code}
where {{::testing::Test}} is a gtest class.

The plan is the following:
# Change {{SSLTest}} to inherit from {{TemporaryDirectoryTest}}.  This will 
require moving the setup (generation of keys and certs) from {{SetUpTestCase}} 
to {{SetUp}}.  At the same time, *some* of the cleanup logic in the SSLTest 
will not be needed.
# Move the logic of generating keys/certs into helpers, so that individual 
tests can call them when needed, much like {{MesosTest}}.
# Write a child class of {{SSLTest}} which has the same functionality as the 
existing {{SSLTest}}, for use by the existing tests that rely on {{SSLTest}} or 
the {{RegistryClientTest}}.
# Have {{MesosTest}} inherit from {{SSLTest}} (which might be renamed during 
the refactor).  If Mesos is not compiled with {{--enable-ssl}}, then 
{{SSLTest}} could be {{#ifdef}}'d into any empty class.

The resulting structure should be like:
{code}
MesosTest <- SSLTest <- TemporaryDirectoryTest <- ::testing::Test
ChildOfSSLTest /
{code}

  was:
In order to write tests that exercise SSL with other components of Mesos, such 
as the HTTP scheduler library, we need to use the setup/teardown logic found in 
the {{SSLTest}} fixture.

Currently, the test fixtures have separate inheritance structures like this:
{code}
SSLTest <- ::testing::Test
MesosTest <- TemporaryDirectoryTest <- ::testing::Test
{code}
where {{::testing::Test}} is a gtest class.

The plan is the following:
1) Change {{SSLTest}} to inherit from {{TemporaryDirectoryTest}}.  This will 
require moving the setup (generation of keys and certs) from {{SetUpTestCase}} 
to {{SetUp}}.  At the same time, *some* of the cleanup logic in the SSLTest 
will not be needed.
2) Move the logic of generating keys/certs into helpers, so that individual 
tests can call them when needed, much like {{MesosTest}}.
3) Have {{MesosTest}} inherit from {{SSLTest}} (which might be renamed during 
the refactor).  If Mesos is not compiled with {{--enable-ssl}}, then 
{{SSLTest}} could be {{#ifdef}}'d into any empty class.
4) Write a child class of {{SSLTest}} which has the same functionality as the 
existing {{SSLTest}}, for use by the existing tests that rely on {{SSLTest}} or 
the {{RegistryClientTest}}.

The resulting structure should be like:
{code}
MesosTest <- SSLTest <- TemporaryDirectoryTest <- ::testing::Test
ChildOfSSLTest /
{code}


> Refactor SSLTest fixture such that MesosTest can use the same helpers.
> --
>
> Key: MESOS-3762
> URL: https://issues.apache.org/jira/browse/MESOS-3762
> Project: Mesos
>  Issue Type: Task
>  Components: test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> In order to write tests that exercise SSL with other components of Mesos, 
> such as the HTTP scheduler library, we need to use the setup/teardown logic 
> found in the {{SSLTest}} fixture.
> Currently, the test fixtures have separate inheritance structures like this:
> {code}
> SSLTest <- ::testing::Test
> MesosTest <- TemporaryDirectoryTest <- ::testing::Test
> {code}
> where {{::testing::Test}} is a gtest class.
> The plan is the following:
> # Change {{SSLTest}} to inherit from {{TemporaryDirectoryTest}}.  This will 
> require moving the setup (generation of keys and certs) from 
> {{SetUpTestCase}} to {{SetUp}}.  At the same time, *some* of the cleanup 
> logic in the SSLTest will not be needed.
> # Move the logic of generating keys/certs into helpers, so that individual 
> tests can call them when needed, much like {{MesosTest}}.
> # Write a child class of {{SSLTest}} which has the same functionality as the 
> existing {{SSLTest}}, for use by the existing tests that rely on {{SSLTest}} 
> or the {{RegistryClientTest}}.
> # Have {{MesosTest}} inherit from {{SSLTest}} (which might be renamed during 
> the refactor).  If Mesos is not compiled with {{--enable-ssl}}, then 
> {{SSLTest}} could be {{#ifdef}}'d into any empty class.
> The resulting structure should be like:
> {code}
> MesosTest <- SSLTest <- TemporaryDirectoryTest <- ::testing::Test
> ChildOfSSLTest /
> {code}



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


[jira] [Commented] (MESOS-3762) Refactor SSLTest fixture such that MesosTest can use the same helpers.

2015-10-20 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3762:
--

Found and wrote a fix for an SSL-related test cleanup bug: 
https://reviews.apache.org/r/39495/

> Refactor SSLTest fixture such that MesosTest can use the same helpers.
> --
>
> Key: MESOS-3762
> URL: https://issues.apache.org/jira/browse/MESOS-3762
> Project: Mesos
>  Issue Type: Task
>  Components: test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> In order to write tests that exercise SSL with other components of Mesos, 
> such as the HTTP scheduler library, we need to use the setup/teardown logic 
> found in the {{SSLTest}} fixture.
> Currently, the test fixtures have separate inheritance structures like this:
> {code}
> SSLTest <- ::testing::Test
> MesosTest <- TemporaryDirectoryTest <- ::testing::Test
> {code}
> where {{::testing::Test}} is a gtest class.
> The plan is the following:
> # Change {{SSLTest}} to inherit from {{TemporaryDirectoryTest}}.  This will 
> require moving the setup (generation of keys and certs) from 
> {{SetUpTestCase}} to {{SetUp}}.  At the same time, *some* of the cleanup 
> logic in the SSLTest will not be needed.
> # Move the logic of generating keys/certs into helpers, so that individual 
> tests can call them when needed, much like {{MesosTest}}.
> # Write a child class of {{SSLTest}} which has the same functionality as the 
> existing {{SSLTest}}, for use by the existing tests that rely on {{SSLTest}} 
> or the {{RegistryClientTest}}.
> # Have {{MesosTest}} inherit from {{SSLTest}} (which might be renamed during 
> the refactor).  If Mesos is not compiled with {{--enable-ssl}}, then 
> {{SSLTest}} could be {{#ifdef}}'d into any empty class.
> The resulting structure should be like:
> {code}
> MesosTest <- SSLTest <- TemporaryDirectoryTest <- ::testing::Test
> ChildOfSSLTest /
> {code}



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


[jira] [Commented] (MESOS-3762) Refactor SSLTest fixture such that MesosTest can use the same helpers.

2015-10-20 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3762:
--

Reviews for step 1)
https://reviews.apache.org/r/39498/
https://reviews.apache.org/r/39499/

> Refactor SSLTest fixture such that MesosTest can use the same helpers.
> --
>
> Key: MESOS-3762
> URL: https://issues.apache.org/jira/browse/MESOS-3762
> Project: Mesos
>  Issue Type: Task
>  Components: test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> In order to write tests that exercise SSL with other components of Mesos, 
> such as the HTTP scheduler library, we need to use the setup/teardown logic 
> found in the {{SSLTest}} fixture.
> Currently, the test fixtures have separate inheritance structures like this:
> {code}
> SSLTest <- ::testing::Test
> MesosTest <- TemporaryDirectoryTest <- ::testing::Test
> {code}
> where {{::testing::Test}} is a gtest class.
> The plan is the following:
> # Change {{SSLTest}} to inherit from {{TemporaryDirectoryTest}}.  This will 
> require moving the setup (generation of keys and certs) from 
> {{SetUpTestCase}} to {{SetUp}}.  At the same time, *some* of the cleanup 
> logic in the SSLTest will not be needed.
> # Move the logic of generating keys/certs into helpers, so that individual 
> tests can call them when needed, much like {{MesosTest}}.
> # Write a child class of {{SSLTest}} which has the same functionality as the 
> existing {{SSLTest}}, for use by the existing tests that rely on {{SSLTest}} 
> or the {{RegistryClientTest}}.
> # Have {{MesosTest}} inherit from {{SSLTest}} (which might be renamed during 
> the refactor).  If Mesos is not compiled with {{--enable-ssl}}, then 
> {{SSLTest}} could be {{#ifdef}}'d into any empty class.
> The resulting structure should be like:
> {code}
> MesosTest <- SSLTest <- TemporaryDirectoryTest <- ::testing::Test
> ChildOfSSLTest /
> {code}



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


[jira] [Comment Edited] (MESOS-3762) Refactor SSLTest fixture such that MesosTest can use the same helpers.

2015-10-20 Thread Joseph Wu (JIRA)

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

Joseph Wu edited comment on MESOS-3762 at 10/20/15 11:30 PM:
-

Reviews for:
Step 1)
https://reviews.apache.org/r/39498/
https://reviews.apache.org/r/39499/
Step 2 & 3)
https://reviews.apache.org/r/39501/


was (Author: kaysoky):
Reviews for step 1)
https://reviews.apache.org/r/39498/
https://reviews.apache.org/r/39499/

> Refactor SSLTest fixture such that MesosTest can use the same helpers.
> --
>
> Key: MESOS-3762
> URL: https://issues.apache.org/jira/browse/MESOS-3762
> Project: Mesos
>  Issue Type: Task
>  Components: test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> In order to write tests that exercise SSL with other components of Mesos, 
> such as the HTTP scheduler library, we need to use the setup/teardown logic 
> found in the {{SSLTest}} fixture.
> Currently, the test fixtures have separate inheritance structures like this:
> {code}
> SSLTest <- ::testing::Test
> MesosTest <- TemporaryDirectoryTest <- ::testing::Test
> {code}
> where {{::testing::Test}} is a gtest class.
> The plan is the following:
> # Change {{SSLTest}} to inherit from {{TemporaryDirectoryTest}}.  This will 
> require moving the setup (generation of keys and certs) from 
> {{SetUpTestCase}} to {{SetUp}}.  At the same time, *some* of the cleanup 
> logic in the SSLTest will not be needed.
> # Move the logic of generating keys/certs into helpers, so that individual 
> tests can call them when needed, much like {{MesosTest}}.
> # Write a child class of {{SSLTest}} which has the same functionality as the 
> existing {{SSLTest}}, for use by the existing tests that rely on {{SSLTest}} 
> or the {{RegistryClientTest}}.
> # Have {{MesosTest}} inherit from {{SSLTest}} (which might be renamed during 
> the refactor).  If Mesos is not compiled with {{--enable-ssl}}, then 
> {{SSLTest}} could be {{#ifdef}}'d into any empty class.
> The resulting structure should be like:
> {code}
> MesosTest <- SSLTest <- TemporaryDirectoryTest <- ::testing::Test
> ChildOfSSLTest /
> {code}



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


[jira] [Commented] (MESOS-3771) Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII handling

2015-10-20 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3771:
--

Actually, I can't repro this behavior in a unit test.  ([Attempted 
here|https://github.com/kaysoky/mesos/commit/d8869f0aa1fdcf38072b45a6238b191c67b7e0f7]).

I've constructed an {{ExecutorInfo}} with a {{data}} field holding the same 
data you have above.  Fetching the same {{ExecutorInfo}} from the {{/state}} 
endpoint also gives valid JSON.

Am I doing something differently?

> Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII 
> handling
> ---
>
> Key: MESOS-3771
> URL: https://issues.apache.org/jira/browse/MESOS-3771
> Project: Mesos
>  Issue Type: Bug
>  Components: HTTP API
>Affects Versions: 0.24.1
>Reporter: Steven Schlansker
>Priority: Critical
>
> Spark encodes some binary data into the ExecutorInfo.data field.  This field 
> is sent as a "bytes" Protobuf value, which can have arbitrary non-UTF8 data.
> If you have such a field, it seems that it is splatted out into JSON without 
> any regards to proper character encoding:
> {code}
> 0006b0b0  2e 73 70 61 72 6b 2e 65  78 65 63 75 74 6f 72 2e  |.spark.executor.|
> 0006b0c0  4d 65 73 6f 73 45 78 65  63 75 74 6f 72 42 61 63  |MesosExecutorBac|
> 0006b0d0  6b 65 6e 64 22 7d 2c 22  64 61 74 61 22 3a 22 ac  |kend"},"data":".|
> 0006b0e0  ed 5c 75 30 30 30 30 5c  75 30 30 30 35 75 72 5c  |.\u\u0005ur\|
> 0006b0f0  75 30 30 30 30 5c 75 30  30 30 66 5b 4c 73 63 61  |u\u000f[Lsca|
> 0006b100  6c 61 2e 54 75 70 6c 65  32 3b 2e cc 5c 75 30 30  |la.Tuple2;..\u00|
> {code}
> I suspect this is because the HTTP api emits the executorInfo.data directly:
> {code}
> JSON::Object model(const ExecutorInfo& executorInfo)
> {
>   JSON::Object object;
>   object.values["executor_id"] = executorInfo.executor_id().value();
>   object.values["name"] = executorInfo.name();
>   object.values["data"] = executorInfo.data();
>   object.values["framework_id"] = executorInfo.framework_id().value();
>   object.values["command"] = model(executorInfo.command());
>   object.values["resources"] = model(executorInfo.resources());
>   return object;
> }
> {code}
> I think this may be because the custom JSON processing library in stout seems 
> to not have any idea of what a byte array is.  I'm guessing that some 
> implicit conversion makes it get written as a String instead, but:
> {code}
> inline std::ostream& operator<<(std::ostream& out, const String& string)
> {
>   // TODO(benh): This escaping DOES NOT handle unicode, it encodes as ASCII.
>   // See RFC4627 for the JSON string specificiation.
>   return out << picojson::value(string.value).serialize();
> }
> {code}
> Thank you for any assistance here.  Our cluster is currently entirely down -- 
> the frameworks cannot handle parsing the invalid JSON produced (it is not 
> even valid utf-8)



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


[jira] [Commented] (MESOS-1607) Introduce optimistic offers.

2015-10-21 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-1607:
--

We plan to release the MVP before the end of this year, so tentatively sometime 
between v0.26.0 and v0.28.0.

> Introduce optimistic offers.
> 
>
> Key: MESOS-1607
> URL: https://issues.apache.org/jira/browse/MESOS-1607
> Project: Mesos
>  Issue Type: Epic
>  Components: allocation, framework, master
>Reporter: Benjamin Hindman
>Assignee: Artem Harutyunyan
>  Labels: mesosphere
> Attachments: optimisitic-offers.pdf
>
>
> *Background*
> The current implementation of resource offers only enable a single framework 
> scheduler to make scheduling decisions for some available resources at a 
> time. In some circumstances, this is good, i.e., when we don't want other 
> framework schedulers to have access to some resources. However, in other 
> circumstances, there are advantages to letting multiple framework schedulers 
> attempt to make scheduling decisions for the _same_ allocation of resources 
> in parallel.
> If you think about this from a "concurrency control" perspective, the current 
> implementation of resource offers is _pessimistic_, the resources contained 
> within an offer are _locked_ until the framework scheduler that they were 
> offered to launches tasks with them or declines them. In addition to making 
> pessimistic offers we'd like to give out _optimistic_ offers, where the same 
> resources are offered to multiple framework schedulers at the same time, and 
> framework schedulers "compete" for those resources on a 
> first-come-first-serve basis (i.e., the first to launch a task "wins"). We've 
> always reserved the right to rescind resource offers using the 'rescind' 
> primitive in the API, and a framework scheduler should be prepared to launch 
> a task and have those tasks go lost because another framework already started 
> to use those resources.
> *Feature*
> We plan to take a step towards optimistic offers, by introducing primitives 
> that allow resources to be offered to multiple frameworks at once.  At first, 
> we will use these primitives to optimistically allocate resources that are 
> reserved for a particular framework/role but have not been allocated by that 
> framework/role.  
> The work with optimistic offers will closely resemble the existing 
> oversubscription feature.  Optimistically offered resources are likely to be 
> considered "revocable resources" (the concept that using resources not 
> reserved for you means you might get those resources revoked).  In effect, we 
> can may create something like a "spot" market for unused resources, driving 
> up utilization by letting frameworks that are willing to use revocable 
> resources run tasks.
> *Future Work*
> This ticket tracks the introduction of some aspects of optimistic offers.  
> Taken to the limit, one could imagine always making optimistic resource 
> offers. This bears a striking resemblance with the Google Omega model (an 
> isomorphism even). However, being able to configure what resources should be 
> allocated optimistically and what resources should be allocated 
> pessimistically gives even more control to a datacenter/cluster operator that 
> might want to, for example, never let multiple frameworks (roles) compete for 
> some set of resources.



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


[jira] [Updated] (MESOS-1478) Replace Master/Slave terminology

2015-10-21 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-1478?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-1478:
-
Issue Type: Epic  (was: Wish)

> Replace Master/Slave terminology
> 
>
> Key: MESOS-1478
> URL: https://issues.apache.org/jira/browse/MESOS-1478
> Project: Mesos
>  Issue Type: Epic
>Reporter: Clark Breyman
>Assignee: Benjamin Hindman
>Priority: Minor
>  Labels: mesosphere
>
> Inspired by the comments on this PR:
> https://github.com/django/django/pull/2692
> TL;DR - Computers sharing work should be a good thing. Using the language of 
> human bondage and suffering is inappropriate in this context. It also has the 
> potential to alienate users and community members. 



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


[jira] [Updated] (MESOS-1478) Replace Master/Slave terminology

2015-10-21 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-1478?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-1478:
-
Epic Name: Agent Rename

> Replace Master/Slave terminology
> 
>
> Key: MESOS-1478
> URL: https://issues.apache.org/jira/browse/MESOS-1478
> Project: Mesos
>  Issue Type: Epic
>Reporter: Clark Breyman
>Assignee: Benjamin Hindman
>Priority: Minor
>  Labels: mesosphere
>
> Inspired by the comments on this PR:
> https://github.com/django/django/pull/2692
> TL;DR - Computers sharing work should be a good thing. Using the language of 
> human bondage and suffering is inappropriate in this context. It also has the 
> potential to alienate users and community members. 



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


[jira] [Comment Edited] (MESOS-3762) Refactor SSLTest fixture such that MesosTest can use the same helpers.

2015-10-21 Thread Joseph Wu (JIRA)

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

Joseph Wu edited comment on MESOS-3762 at 10/22/15 12:06 AM:
-

Reviews for:
Step 1)
https://reviews.apache.org/r/39498/
https://reviews.apache.org/r/39499/
Step 2 & 3)
https://reviews.apache.org/r/39501/
Step 4) 
https://reviews.apache.org/r/39533/
https://reviews.apache.org/r/39534/


was (Author: kaysoky):
Reviews for:
Step 1)
https://reviews.apache.org/r/39498/
https://reviews.apache.org/r/39499/
Step 2 & 3)
https://reviews.apache.org/r/39501/

> Refactor SSLTest fixture such that MesosTest can use the same helpers.
> --
>
> Key: MESOS-3762
> URL: https://issues.apache.org/jira/browse/MESOS-3762
> Project: Mesos
>  Issue Type: Task
>  Components: test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> In order to write tests that exercise SSL with other components of Mesos, 
> such as the HTTP scheduler library, we need to use the setup/teardown logic 
> found in the {{SSLTest}} fixture.
> Currently, the test fixtures have separate inheritance structures like this:
> {code}
> SSLTest <- ::testing::Test
> MesosTest <- TemporaryDirectoryTest <- ::testing::Test
> {code}
> where {{::testing::Test}} is a gtest class.
> The plan is the following:
> # Change {{SSLTest}} to inherit from {{TemporaryDirectoryTest}}.  This will 
> require moving the setup (generation of keys and certs) from 
> {{SetUpTestCase}} to {{SetUp}}.  At the same time, *some* of the cleanup 
> logic in the SSLTest will not be needed.
> # Move the logic of generating keys/certs into helpers, so that individual 
> tests can call them when needed, much like {{MesosTest}}.
> # Write a child class of {{SSLTest}} which has the same functionality as the 
> existing {{SSLTest}}, for use by the existing tests that rely on {{SSLTest}} 
> or the {{RegistryClientTest}}.
> # Have {{MesosTest}} inherit from {{SSLTest}} (which might be renamed during 
> the refactor).  If Mesos is not compiled with {{--enable-ssl}}, then 
> {{SSLTest}} could be {{#ifdef}}'d into any empty class.
> The resulting structure should be like:
> {code}
> MesosTest <- SSLTest <- TemporaryDirectoryTest <- ::testing::Test
> ChildOfSSLTest /
> {code}



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


[jira] [Commented] (MESOS-3771) Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII handling

2015-10-21 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3771:
--

Looks like our JSON library will never catch this (it's more permissive), which 
is why none of our unit tests have caught this.

I agree that this is a problem though.  I'll see if I can get more eyes on this.

> Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII 
> handling
> ---
>
> Key: MESOS-3771
> URL: https://issues.apache.org/jira/browse/MESOS-3771
> Project: Mesos
>  Issue Type: Bug
>  Components: HTTP API
>Affects Versions: 0.24.1, 0.26.0
>Reporter: Steven Schlansker
>Priority: Critical
>
> Spark encodes some binary data into the ExecutorInfo.data field.  This field 
> is sent as a "bytes" Protobuf value, which can have arbitrary non-UTF8 data.
> If you have such a field, it seems that it is splatted out into JSON without 
> any regards to proper character encoding:
> {code}
> 0006b0b0  2e 73 70 61 72 6b 2e 65  78 65 63 75 74 6f 72 2e  |.spark.executor.|
> 0006b0c0  4d 65 73 6f 73 45 78 65  63 75 74 6f 72 42 61 63  |MesosExecutorBac|
> 0006b0d0  6b 65 6e 64 22 7d 2c 22  64 61 74 61 22 3a 22 ac  |kend"},"data":".|
> 0006b0e0  ed 5c 75 30 30 30 30 5c  75 30 30 30 35 75 72 5c  |.\u\u0005ur\|
> 0006b0f0  75 30 30 30 30 5c 75 30  30 30 66 5b 4c 73 63 61  |u\u000f[Lsca|
> 0006b100  6c 61 2e 54 75 70 6c 65  32 3b 2e cc 5c 75 30 30  |la.Tuple2;..\u00|
> {code}
> I suspect this is because the HTTP api emits the executorInfo.data directly:
> {code}
> JSON::Object model(const ExecutorInfo& executorInfo)
> {
>   JSON::Object object;
>   object.values["executor_id"] = executorInfo.executor_id().value();
>   object.values["name"] = executorInfo.name();
>   object.values["data"] = executorInfo.data();
>   object.values["framework_id"] = executorInfo.framework_id().value();
>   object.values["command"] = model(executorInfo.command());
>   object.values["resources"] = model(executorInfo.resources());
>   return object;
> }
> {code}
> I think this may be because the custom JSON processing library in stout seems 
> to not have any idea of what a byte array is.  I'm guessing that some 
> implicit conversion makes it get written as a String instead, but:
> {code}
> inline std::ostream& operator<<(std::ostream& out, const String& string)
> {
>   // TODO(benh): This escaping DOES NOT handle unicode, it encodes as ASCII.
>   // See RFC4627 for the JSON string specificiation.
>   return out << picojson::value(string.value).serialize();
> }
> {code}
> Thank you for any assistance here.  Our cluster is currently entirely down -- 
> the frameworks cannot handle parsing the invalid JSON produced (it is not 
> even valid utf-8)



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


[jira] [Updated] (MESOS-3771) Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII handling

2015-10-22 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3771?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3771:
-
  Sprint: Mesosphere Sprint 21
Story Points: 2

> Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII 
> handling
> ---
>
> Key: MESOS-3771
> URL: https://issues.apache.org/jira/browse/MESOS-3771
> Project: Mesos
>  Issue Type: Bug
>  Components: HTTP API
>Affects Versions: 0.24.1, 0.26.0
>Reporter: Steven Schlansker
>Assignee: Joseph Wu
>Priority: Critical
>  Labels: mesosphere
>
> Spark encodes some binary data into the ExecutorInfo.data field.  This field 
> is sent as a "bytes" Protobuf value, which can have arbitrary non-UTF8 data.
> If you have such a field, it seems that it is splatted out into JSON without 
> any regards to proper character encoding:
> {code}
> 0006b0b0  2e 73 70 61 72 6b 2e 65  78 65 63 75 74 6f 72 2e  |.spark.executor.|
> 0006b0c0  4d 65 73 6f 73 45 78 65  63 75 74 6f 72 42 61 63  |MesosExecutorBac|
> 0006b0d0  6b 65 6e 64 22 7d 2c 22  64 61 74 61 22 3a 22 ac  |kend"},"data":".|
> 0006b0e0  ed 5c 75 30 30 30 30 5c  75 30 30 30 35 75 72 5c  |.\u\u0005ur\|
> 0006b0f0  75 30 30 30 30 5c 75 30  30 30 66 5b 4c 73 63 61  |u\u000f[Lsca|
> 0006b100  6c 61 2e 54 75 70 6c 65  32 3b 2e cc 5c 75 30 30  |la.Tuple2;..\u00|
> {code}
> I suspect this is because the HTTP api emits the executorInfo.data directly:
> {code}
> JSON::Object model(const ExecutorInfo& executorInfo)
> {
>   JSON::Object object;
>   object.values["executor_id"] = executorInfo.executor_id().value();
>   object.values["name"] = executorInfo.name();
>   object.values["data"] = executorInfo.data();
>   object.values["framework_id"] = executorInfo.framework_id().value();
>   object.values["command"] = model(executorInfo.command());
>   object.values["resources"] = model(executorInfo.resources());
>   return object;
> }
> {code}
> I think this may be because the custom JSON processing library in stout seems 
> to not have any idea of what a byte array is.  I'm guessing that some 
> implicit conversion makes it get written as a String instead, but:
> {code}
> inline std::ostream& operator<<(std::ostream& out, const String& string)
> {
>   // TODO(benh): This escaping DOES NOT handle unicode, it encodes as ASCII.
>   // See RFC4627 for the JSON string specificiation.
>   return out << picojson::value(string.value).serialize();
> }
> {code}
> Thank you for any assistance here.  Our cluster is currently entirely down -- 
> the frameworks cannot handle parsing the invalid JSON produced (it is not 
> even valid utf-8)



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


[jira] [Assigned] (MESOS-3771) Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII handling

2015-10-22 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3771?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu reassigned MESOS-3771:


Assignee: Joseph Wu

> Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII 
> handling
> ---
>
> Key: MESOS-3771
> URL: https://issues.apache.org/jira/browse/MESOS-3771
> Project: Mesos
>  Issue Type: Bug
>  Components: HTTP API
>Affects Versions: 0.24.1, 0.26.0
>Reporter: Steven Schlansker
>Assignee: Joseph Wu
>Priority: Critical
>  Labels: mesosphere
>
> Spark encodes some binary data into the ExecutorInfo.data field.  This field 
> is sent as a "bytes" Protobuf value, which can have arbitrary non-UTF8 data.
> If you have such a field, it seems that it is splatted out into JSON without 
> any regards to proper character encoding:
> {code}
> 0006b0b0  2e 73 70 61 72 6b 2e 65  78 65 63 75 74 6f 72 2e  |.spark.executor.|
> 0006b0c0  4d 65 73 6f 73 45 78 65  63 75 74 6f 72 42 61 63  |MesosExecutorBac|
> 0006b0d0  6b 65 6e 64 22 7d 2c 22  64 61 74 61 22 3a 22 ac  |kend"},"data":".|
> 0006b0e0  ed 5c 75 30 30 30 30 5c  75 30 30 30 35 75 72 5c  |.\u\u0005ur\|
> 0006b0f0  75 30 30 30 30 5c 75 30  30 30 66 5b 4c 73 63 61  |u\u000f[Lsca|
> 0006b100  6c 61 2e 54 75 70 6c 65  32 3b 2e cc 5c 75 30 30  |la.Tuple2;..\u00|
> {code}
> I suspect this is because the HTTP api emits the executorInfo.data directly:
> {code}
> JSON::Object model(const ExecutorInfo& executorInfo)
> {
>   JSON::Object object;
>   object.values["executor_id"] = executorInfo.executor_id().value();
>   object.values["name"] = executorInfo.name();
>   object.values["data"] = executorInfo.data();
>   object.values["framework_id"] = executorInfo.framework_id().value();
>   object.values["command"] = model(executorInfo.command());
>   object.values["resources"] = model(executorInfo.resources());
>   return object;
> }
> {code}
> I think this may be because the custom JSON processing library in stout seems 
> to not have any idea of what a byte array is.  I'm guessing that some 
> implicit conversion makes it get written as a String instead, but:
> {code}
> inline std::ostream& operator<<(std::ostream& out, const String& string)
> {
>   // TODO(benh): This escaping DOES NOT handle unicode, it encodes as ASCII.
>   // See RFC4627 for the JSON string specificiation.
>   return out << picojson::value(string.value).serialize();
> }
> {code}
> Thank you for any assistance here.  Our cluster is currently entirely down -- 
> the frameworks cannot handle parsing the invalid JSON produced (it is not 
> even valid utf-8)



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


[jira] [Updated] (MESOS-3771) Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII handling

2015-10-22 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3771?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3771:
-
Labels: mesosphere  (was: )

> Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII 
> handling
> ---
>
> Key: MESOS-3771
> URL: https://issues.apache.org/jira/browse/MESOS-3771
> Project: Mesos
>  Issue Type: Bug
>  Components: HTTP API
>Affects Versions: 0.24.1, 0.26.0
>Reporter: Steven Schlansker
>Assignee: Joseph Wu
>Priority: Critical
>  Labels: mesosphere
>
> Spark encodes some binary data into the ExecutorInfo.data field.  This field 
> is sent as a "bytes" Protobuf value, which can have arbitrary non-UTF8 data.
> If you have such a field, it seems that it is splatted out into JSON without 
> any regards to proper character encoding:
> {code}
> 0006b0b0  2e 73 70 61 72 6b 2e 65  78 65 63 75 74 6f 72 2e  |.spark.executor.|
> 0006b0c0  4d 65 73 6f 73 45 78 65  63 75 74 6f 72 42 61 63  |MesosExecutorBac|
> 0006b0d0  6b 65 6e 64 22 7d 2c 22  64 61 74 61 22 3a 22 ac  |kend"},"data":".|
> 0006b0e0  ed 5c 75 30 30 30 30 5c  75 30 30 30 35 75 72 5c  |.\u\u0005ur\|
> 0006b0f0  75 30 30 30 30 5c 75 30  30 30 66 5b 4c 73 63 61  |u\u000f[Lsca|
> 0006b100  6c 61 2e 54 75 70 6c 65  32 3b 2e cc 5c 75 30 30  |la.Tuple2;..\u00|
> {code}
> I suspect this is because the HTTP api emits the executorInfo.data directly:
> {code}
> JSON::Object model(const ExecutorInfo& executorInfo)
> {
>   JSON::Object object;
>   object.values["executor_id"] = executorInfo.executor_id().value();
>   object.values["name"] = executorInfo.name();
>   object.values["data"] = executorInfo.data();
>   object.values["framework_id"] = executorInfo.framework_id().value();
>   object.values["command"] = model(executorInfo.command());
>   object.values["resources"] = model(executorInfo.resources());
>   return object;
> }
> {code}
> I think this may be because the custom JSON processing library in stout seems 
> to not have any idea of what a byte array is.  I'm guessing that some 
> implicit conversion makes it get written as a String instead, but:
> {code}
> inline std::ostream& operator<<(std::ostream& out, const String& string)
> {
>   // TODO(benh): This escaping DOES NOT handle unicode, it encodes as ASCII.
>   // See RFC4627 for the JSON string specificiation.
>   return out << picojson::value(string.value).serialize();
> }
> {code}
> Thank you for any assistance here.  Our cluster is currently entirely down -- 
> the frameworks cannot handle parsing the invalid JSON produced (it is not 
> even valid utf-8)



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


[jira] [Commented] (MESOS-3771) Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII handling

2015-10-22 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3771:
--

Sync'd with BenH and [~bmahler] about this (offline).

The proposed solution is the following:
# None of the state endpoints should be dumping out the binary {{data}} fields 
in the first place.  This includes {{ExecutorInfo}} ([dumped by 
master|https://github.com/apache/mesos/blob/master/src/common/http.cpp#L317]) 
and {{TaskInfo}} ([dumped by 
agent|https://github.com/apache/mesos/blob/master/src/slave/http.cpp#L103]).  
#* These fields should be removed from the output entirely.  Existing 
frameworks should not be relying on this information.  [~stevenschlansker], can 
you confirm this with Spark?
#* We can easily back-port this patch, if absolutely necessary.
# Master should not be storing the {{data}} fields from {{ExecutorInfo}}.  We 
currently [store the entire 
object|https://github.com/apache/mesos/blob/master/src/master/master.hpp#L262-L271],
 which means master would be as high risk of OOM-ing if a bunch of executors 
were started with big {{data}} blobs.
#* Master should scrub out unneeded bloat from {{ExecutorInfo}} before storing 
it.
#* We can use an alternate internal object, like we do for {{TaskInfo}} vs 
{{Task}}; see 
[this|https://github.com/apache/mesos/blob/master/src/messages/messages.proto#L39-L41].

> Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII 
> handling
> ---
>
> Key: MESOS-3771
> URL: https://issues.apache.org/jira/browse/MESOS-3771
> Project: Mesos
>  Issue Type: Bug
>  Components: HTTP API
>Affects Versions: 0.24.1, 0.26.0
>Reporter: Steven Schlansker
>Assignee: Joseph Wu
>Priority: Critical
>  Labels: mesosphere
>
> Spark encodes some binary data into the ExecutorInfo.data field.  This field 
> is sent as a "bytes" Protobuf value, which can have arbitrary non-UTF8 data.
> If you have such a field, it seems that it is splatted out into JSON without 
> any regards to proper character encoding:
> {code}
> 0006b0b0  2e 73 70 61 72 6b 2e 65  78 65 63 75 74 6f 72 2e  |.spark.executor.|
> 0006b0c0  4d 65 73 6f 73 45 78 65  63 75 74 6f 72 42 61 63  |MesosExecutorBac|
> 0006b0d0  6b 65 6e 64 22 7d 2c 22  64 61 74 61 22 3a 22 ac  |kend"},"data":".|
> 0006b0e0  ed 5c 75 30 30 30 30 5c  75 30 30 30 35 75 72 5c  |.\u\u0005ur\|
> 0006b0f0  75 30 30 30 30 5c 75 30  30 30 66 5b 4c 73 63 61  |u\u000f[Lsca|
> 0006b100  6c 61 2e 54 75 70 6c 65  32 3b 2e cc 5c 75 30 30  |la.Tuple2;..\u00|
> {code}
> I suspect this is because the HTTP api emits the executorInfo.data directly:
> {code}
> JSON::Object model(const ExecutorInfo& executorInfo)
> {
>   JSON::Object object;
>   object.values["executor_id"] = executorInfo.executor_id().value();
>   object.values["name"] = executorInfo.name();
>   object.values["data"] = executorInfo.data();
>   object.values["framework_id"] = executorInfo.framework_id().value();
>   object.values["command"] = model(executorInfo.command());
>   object.values["resources"] = model(executorInfo.resources());
>   return object;
> }
> {code}
> I think this may be because the custom JSON processing library in stout seems 
> to not have any idea of what a byte array is.  I'm guessing that some 
> implicit conversion makes it get written as a String instead, but:
> {code}
> inline std::ostream& operator<<(std::ostream& out, const String& string)
> {
>   // TODO(benh): This escaping DOES NOT handle unicode, it encodes as ASCII.
>   // See RFC4627 for the JSON string specificiation.
>   return out << picojson::value(string.value).serialize();
> }
> {code}
> Thank you for any assistance here.  Our cluster is currently entirely down -- 
> the frameworks cannot handle parsing the invalid JSON produced (it is not 
> even valid utf-8)



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


[jira] [Created] (MESOS-3794) Master should not store arbitrarily sized data in ExecutorInfo

2015-10-22 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3794:


 Summary: Master should not store arbitrarily sized data in 
ExecutorInfo
 Key: MESOS-3794
 URL: https://issues.apache.org/jira/browse/MESOS-3794
 Project: Mesos
  Issue Type: Bug
  Components: master
Reporter: Joseph Wu
Assignee: Joseph Wu
Priority: Critical


>From a comment in [MESOS-3771]:

Master should not be storing the {{data}} fields from {{ExecutorInfo}}.  We 
currently [store the entire 
object|https://github.com/apache/mesos/blob/master/src/master/master.hpp#L262-L271],
 which means master would be at high risk of OOM-ing if a bunch of executors 
were started with big {{data}} blobs.
* Master should scrub out unneeded bloat from {{ExecutorInfo}} before storing 
it.
* We can use an alternate internal object, like we do for {{TaskInfo}} vs 
{{Task}}; see 
[this|https://github.com/apache/mesos/blob/master/src/messages/messages.proto#L39-L41].



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


[jira] [Commented] (MESOS-3771) Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII handling

2015-10-22 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3771:
--

Created [MESOS-3794] to track the point #2 above.  That portion will likely be 
a more involved change.

> Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII 
> handling
> ---
>
> Key: MESOS-3771
> URL: https://issues.apache.org/jira/browse/MESOS-3771
> Project: Mesos
>  Issue Type: Bug
>  Components: HTTP API
>Affects Versions: 0.24.1, 0.26.0
>Reporter: Steven Schlansker
>Assignee: Joseph Wu
>Priority: Critical
>  Labels: mesosphere
>
> Spark encodes some binary data into the ExecutorInfo.data field.  This field 
> is sent as a "bytes" Protobuf value, which can have arbitrary non-UTF8 data.
> If you have such a field, it seems that it is splatted out into JSON without 
> any regards to proper character encoding:
> {code}
> 0006b0b0  2e 73 70 61 72 6b 2e 65  78 65 63 75 74 6f 72 2e  |.spark.executor.|
> 0006b0c0  4d 65 73 6f 73 45 78 65  63 75 74 6f 72 42 61 63  |MesosExecutorBac|
> 0006b0d0  6b 65 6e 64 22 7d 2c 22  64 61 74 61 22 3a 22 ac  |kend"},"data":".|
> 0006b0e0  ed 5c 75 30 30 30 30 5c  75 30 30 30 35 75 72 5c  |.\u\u0005ur\|
> 0006b0f0  75 30 30 30 30 5c 75 30  30 30 66 5b 4c 73 63 61  |u\u000f[Lsca|
> 0006b100  6c 61 2e 54 75 70 6c 65  32 3b 2e cc 5c 75 30 30  |la.Tuple2;..\u00|
> {code}
> I suspect this is because the HTTP api emits the executorInfo.data directly:
> {code}
> JSON::Object model(const ExecutorInfo& executorInfo)
> {
>   JSON::Object object;
>   object.values["executor_id"] = executorInfo.executor_id().value();
>   object.values["name"] = executorInfo.name();
>   object.values["data"] = executorInfo.data();
>   object.values["framework_id"] = executorInfo.framework_id().value();
>   object.values["command"] = model(executorInfo.command());
>   object.values["resources"] = model(executorInfo.resources());
>   return object;
> }
> {code}
> I think this may be because the custom JSON processing library in stout seems 
> to not have any idea of what a byte array is.  I'm guessing that some 
> implicit conversion makes it get written as a String instead, but:
> {code}
> inline std::ostream& operator<<(std::ostream& out, const String& string)
> {
>   // TODO(benh): This escaping DOES NOT handle unicode, it encodes as ASCII.
>   // See RFC4627 for the JSON string specificiation.
>   return out << picojson::value(string.value).serialize();
> }
> {code}
> Thank you for any assistance here.  Our cluster is currently entirely down -- 
> the frameworks cannot handle parsing the invalid JSON produced (it is not 
> even valid utf-8)



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


[jira] [Commented] (MESOS-3786) Backticks are not mentioned in Mesos C++ Style Guide

2015-10-23 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3786:
--

This was definitely intentional for the maintenance comments.

> Backticks are not mentioned in Mesos C++ Style Guide
> 
>
> Key: MESOS-3786
> URL: https://issues.apache.org/jira/browse/MESOS-3786
> Project: Mesos
>  Issue Type: Documentation
>Reporter: Greg Mann
>Assignee: Greg Mann
>Priority: Minor
>  Labels: documentation, mesosphere
>
> As far as I can tell, current practice is to quote code excerpts and object 
> names with backticks when writing comments. For example:
> {code}
> // You know, `sadPanda` seems extra sad lately.
> std::string sadPanda;
> sadPanda = "   :'(   ";
> {code}
> However, I don't see this documented in our C++ style guide at all. It should 
> be added.



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


[jira] [Commented] (MESOS-3139) Incorporate CMake into standard documentation

2015-10-30 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3139:
--

Unfortunately, the CMake build system isn't complete yet.  (Follow the 
[epic|https://issues.apache.org/jira/browse/MESOS-898] for progress.)

I think we only build up to libmesos at the moment.

> Incorporate CMake into standard documentation
> -
>
> Key: MESOS-3139
> URL: https://issues.apache.org/jira/browse/MESOS-3139
> Project: Mesos
>  Issue Type: Task
>  Components: cmake
>Reporter: Alex Clemmer
>Assignee: Alex Clemmer
>  Labels: build, cmake, mesosphere
>
> Right now it's anyone's guess how to build with CMake. If we want people to 
> use it, we should put up documentation. The central challenge is that the 
> CMake instructions will be slightly different for different platforms.
> For example, on Linux, the gist of the build is basically the same as 
> autotools; you pull down the system dependencies (like APR, _etc_.), and then:
> ```
> ./bootstrap
> mkdir build-cmake && cd build-cmake
> cmake ..
> make
> ```
> But, on Windows, it will be somewhat more complicated. There is no bootstrap 
> step, for example, because Windows doesn't have bash natively. And even when 
> we put that in, you'll still have to build the glog stuff out-of-band because 
> CMake has no way of booting up Visual Studio and calling "build."
> So practically, we need to figure out:
> * What our build story is for different platforms
> * Write specific instructions for our "core" target platforms.



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


[jira] [Updated] (MESOS-3753) Test the HTTP Scheduler library with SSL enabled

2015-11-01 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3753?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3753:
-
Description: 
Currently, the HTTP Scheduler library does not support SSL-enabled Mesos.  
(You can manually test this by spinning up an SSL-enabled master and attempt to 
run the event-call framework example against it.)

We need to add tests that check the HTTP Scheduler library against SSL-enabled 
Mesos:
* with downgrade support,
* with required framework/client-side certifications,
* with/without verification of certificates (master-side),
* with/without verification of certificates (framework-side),
* with a custom certificate authority (CA)

These options should be controlled by the same environment variables found on 
the [SSL user doc|http://mesos.apache.org/documentation/latest/ssl/].

Note: This issue will be broken down into smaller sub-issues as bugs/problems 
are discovered.

  was:
Currently, the HTTP Scheduler library does not support SSL-enabled Mesos.  

We need to add tests that check the schedule library against SSL-enabled Mesos 
with SSL:
* with downgrade support,
* with/without verification of certificates (framework-side),
* with required framework/client-side certifications,
* with/without verification of certificates (master-side),
* with a custom certificate authority (CA),

These options should be controlled by the same environment variables found on 
the [SSL user doc|http://mesos.apache.org/documentation/latest/ssl/].

Note: This issue will be broken down into smaller sub-issues as bugs/problems 
are discovered.


> Test the HTTP Scheduler library with SSL enabled
> 
>
> Key: MESOS-3753
> URL: https://issues.apache.org/jira/browse/MESOS-3753
> Project: Mesos
>  Issue Type: Story
>  Components: framework, HTTP API, test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere, security
>
> Currently, the HTTP Scheduler library does not support SSL-enabled Mesos.  
> (You can manually test this by spinning up an SSL-enabled master and attempt 
> to run the event-call framework example against it.)
> We need to add tests that check the HTTP Scheduler library against 
> SSL-enabled Mesos:
> * with downgrade support,
> * with required framework/client-side certifications,
> * with/without verification of certificates (master-side),
> * with/without verification of certificates (framework-side),
> * with a custom certificate authority (CA)
> These options should be controlled by the same environment variables found on 
> the [SSL user doc|http://mesos.apache.org/documentation/latest/ssl/].
> Note: This issue will be broken down into smaller sub-issues as bugs/problems 
> are discovered.



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


[jira] [Updated] (MESOS-3771) Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII handling

2015-11-02 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3771?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3771:
-
Shepherd: Benjamin Mahler

> Mesos JSON API creates invalid JSON due to lack of binary data / non-ASCII 
> handling
> ---
>
> Key: MESOS-3771
> URL: https://issues.apache.org/jira/browse/MESOS-3771
> Project: Mesos
>  Issue Type: Bug
>  Components: HTTP API
>Affects Versions: 0.24.1, 0.26.0
>Reporter: Steven Schlansker
>Assignee: Joseph Wu
>Priority: Critical
>  Labels: mesosphere
>
> Spark encodes some binary data into the ExecutorInfo.data field.  This field 
> is sent as a "bytes" Protobuf value, which can have arbitrary non-UTF8 data.
> If you have such a field, it seems that it is splatted out into JSON without 
> any regards to proper character encoding:
> {code}
> 0006b0b0  2e 73 70 61 72 6b 2e 65  78 65 63 75 74 6f 72 2e  |.spark.executor.|
> 0006b0c0  4d 65 73 6f 73 45 78 65  63 75 74 6f 72 42 61 63  |MesosExecutorBac|
> 0006b0d0  6b 65 6e 64 22 7d 2c 22  64 61 74 61 22 3a 22 ac  |kend"},"data":".|
> 0006b0e0  ed 5c 75 30 30 30 30 5c  75 30 30 30 35 75 72 5c  |.\u\u0005ur\|
> 0006b0f0  75 30 30 30 30 5c 75 30  30 30 66 5b 4c 73 63 61  |u\u000f[Lsca|
> 0006b100  6c 61 2e 54 75 70 6c 65  32 3b 2e cc 5c 75 30 30  |la.Tuple2;..\u00|
> {code}
> I suspect this is because the HTTP api emits the executorInfo.data directly:
> {code}
> JSON::Object model(const ExecutorInfo& executorInfo)
> {
>   JSON::Object object;
>   object.values["executor_id"] = executorInfo.executor_id().value();
>   object.values["name"] = executorInfo.name();
>   object.values["data"] = executorInfo.data();
>   object.values["framework_id"] = executorInfo.framework_id().value();
>   object.values["command"] = model(executorInfo.command());
>   object.values["resources"] = model(executorInfo.resources());
>   return object;
> }
> {code}
> I think this may be because the custom JSON processing library in stout seems 
> to not have any idea of what a byte array is.  I'm guessing that some 
> implicit conversion makes it get written as a String instead, but:
> {code}
> inline std::ostream& operator<<(std::ostream& out, const String& string)
> {
>   // TODO(benh): This escaping DOES NOT handle unicode, it encodes as ASCII.
>   // See RFC4627 for the JSON string specificiation.
>   return out << picojson::value(string.value).serialize();
> }
> {code}
> Thank you for any assistance here.  Our cluster is currently entirely down -- 
> the frameworks cannot handle parsing the invalid JSON produced (it is not 
> even valid utf-8)



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


[jira] [Updated] (MESOS-3794) Master should not store arbitrarily sized data in ExecutorInfo

2015-11-02 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3794?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3794:
-
Shepherd: Benjamin Mahler

> Master should not store arbitrarily sized data in ExecutorInfo
> --
>
> Key: MESOS-3794
> URL: https://issues.apache.org/jira/browse/MESOS-3794
> Project: Mesos
>  Issue Type: Bug
>  Components: master
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>Priority: Critical
>  Labels: mesosphere
>
> From a comment in [MESOS-3771]:
> Master should not be storing the {{data}} fields from {{ExecutorInfo}}.  We 
> currently [store the entire 
> object|https://github.com/apache/mesos/blob/master/src/master/master.hpp#L262-L271],
>  which means master would be at high risk of OOM-ing if a bunch of executors 
> were started with big {{data}} blobs.
> * Master should scrub out unneeded bloat from {{ExecutorInfo}} before storing 
> it.
> * We can use an alternate internal object, like we do for {{TaskInfo}} vs 
> {{Task}}; see 
> [this|https://github.com/apache/mesos/blob/master/src/messages/messages.proto#L39-L41].



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


[jira] [Created] (MESOS-3820) Refactor libprocess initialization to allow for test-only reinitialization of the server socket

2015-11-02 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3820:


 Summary: Refactor libprocess initialization to allow for test-only 
reinitialization of the server socket
 Key: MESOS-3820
 URL: https://issues.apache.org/jira/browse/MESOS-3820
 Project: Mesos
  Issue Type: Task
  Components: libprocess, test
Reporter: Joseph Wu
Assignee: Joseph Wu


*Background*
Libprocess initialization includes the spawning of a variety of global 
processes and the creation of the server socket which listens for incoming 
requests.  Some properties of the server socket are configured via environment 
variables, such as the IP and port or the SSL configuration.

In the case of tests, libprocess is initialized once per test binary.  This 
means that testing different configurations (SSL in particular) is cumbersome 
as a separate process would be needed for every test case.

*Proposal*
# Follow the [example of the SSL 
library|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/openssl.cpp#L280]
 and allow tests to declare an internal function for re-initializing a portion 
of libprocess.
# Move the [existing creation of the server 
socket|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/process.cpp#L852-L856]
 into a {{reinitialize_server_socket}} function.
# Add any necessary cleanup for swapping server sockets.
# Consider whether any additional locking is required in the 
{{reinitialize_server_socket}} function.



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


[jira] [Commented] (MESOS-3820) Refactor libprocess initialization to allow for test-only reinitialization of the server socket

2015-11-03 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3820:
--

I'll investigate that approach.  

It seems like swapping out the server socket does not do the trick ([attempted 
here|https://github.com/kaysoky/mesos/commits/process_reinit]).

We still want to make any re-initialization test-only though.  So most likely, 
I'll need to investigate how to fully {{finalize}} libprocess.  Right now, we 
only clean up the {{process_manager}}.

> Refactor libprocess initialization to allow for test-only reinitialization of 
> the server socket
> ---
>
> Key: MESOS-3820
> URL: https://issues.apache.org/jira/browse/MESOS-3820
> Project: Mesos
>  Issue Type: Task
>  Components: libprocess, test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> *Background*
> Libprocess initialization includes the spawning of a variety of global 
> processes and the creation of the server socket which listens for incoming 
> requests.  Some properties of the server socket are configured via 
> environment variables, such as the IP and port or the SSL configuration.
> In the case of tests, libprocess is initialized once per test binary.  This 
> means that testing different configurations (SSL in particular) is cumbersome 
> as a separate process would be needed for every test case.
> *Proposal*
> # Follow the [example of the SSL 
> library|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/openssl.cpp#L280]
>  and allow tests to declare an internal function for re-initializing a 
> portion of libprocess.
> # Move the [existing creation of the server 
> socket|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/process.cpp#L852-L856]
>  into a {{reinitialize_server_socket}} function.
> # Add any necessary cleanup for swapping server sockets.
> # Consider whether any additional locking is required in the 
> {{reinitialize_server_socket}} function.



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


[jira] [Updated] (MESOS-3820) Refactor libprocess initialization to allow for test-only reinitialization of the server socket

2015-11-03 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3820?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3820:
-
Story Points: 5  (was: 3)

> Refactor libprocess initialization to allow for test-only reinitialization of 
> the server socket
> ---
>
> Key: MESOS-3820
> URL: https://issues.apache.org/jira/browse/MESOS-3820
> Project: Mesos
>  Issue Type: Task
>  Components: libprocess, test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> *Background*
> Libprocess initialization includes the spawning of a variety of global 
> processes and the creation of the server socket which listens for incoming 
> requests.  Some properties of the server socket are configured via 
> environment variables, such as the IP and port or the SSL configuration.
> In the case of tests, libprocess is initialized once per test binary.  This 
> means that testing different configurations (SSL in particular) is cumbersome 
> as a separate process would be needed for every test case.
> *Proposal*
> # Follow the [example of the SSL 
> library|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/openssl.cpp#L280]
>  and allow tests to declare an internal function for re-initializing a 
> portion of libprocess.
> # Move the [existing creation of the server 
> socket|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/process.cpp#L852-L856]
>  into a {{reinitialize_server_socket}} function.
> # Add any necessary cleanup for swapping server sockets.
> # Consider whether any additional locking is required in the 
> {{reinitialize_server_socket}} function.



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


[jira] [Updated] (MESOS-3820) Refactor libprocess initialization to allow for test-only reinitialization of the server socket

2015-11-03 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3820?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3820:
-
Description: 
*Background*
Libprocess initialization includes the spawning of a variety of global 
processes and the creation of the server socket which listens for incoming 
requests.  Some properties of the server socket are configured via environment 
variables, such as the IP and port or the SSL configuration.

In the case of tests, libprocess is initialized once per test binary.  This 
means that testing different configurations (SSL in particular) is cumbersome 
as a separate process would be needed for every test case.

*Proposal* (Still under investigation)
# Augment {{process::finalize}} to completely clean up libprocess.
#* {{process_manager}}
#* {{socket_manager}}
#* {{EventLoop}}
#* {{Clock}}
#* {{__s__}}
#* {{__address__}}
#* Garbage collector, help, logging, profiler, statistics, route processes 
(should fall under {{process_manager}}).
#* {{mime}}
# Add a test-only {{process::reinitialize}} function, which should be roughly 
equivalent to a first-time run of {{process::initialize}}.

-*Proposal to swap out server socket*- (Does not work)
# Follow the [example of the SSL 
library|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/openssl.cpp#L280]
 and allow tests to declare an internal function for re-initializing a portion 
of libprocess.
# Move the [existing creation of the server 
socket|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/process.cpp#L852-L856]
 into a {{reinitialize_server_socket}} function.
# Add any necessary cleanup for swapping server sockets.
# Consider whether any additional locking is required in the 
{{reinitialize_server_socket}} function.

  was:
*Background*
Libprocess initialization includes the spawning of a variety of global 
processes and the creation of the server socket which listens for incoming 
requests.  Some properties of the server socket are configured via environment 
variables, such as the IP and port or the SSL configuration.

In the case of tests, libprocess is initialized once per test binary.  This 
means that testing different configurations (SSL in particular) is cumbersome 
as a separate process would be needed for every test case.

*Proposal*
# Follow the [example of the SSL 
library|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/openssl.cpp#L280]
 and allow tests to declare an internal function for re-initializing a portion 
of libprocess.
# Move the [existing creation of the server 
socket|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/process.cpp#L852-L856]
 into a {{reinitialize_server_socket}} function.
# Add any necessary cleanup for swapping server sockets.
# Consider whether any additional locking is required in the 
{{reinitialize_server_socket}} function.


> Refactor libprocess initialization to allow for test-only reinitialization of 
> the server socket
> ---
>
> Key: MESOS-3820
> URL: https://issues.apache.org/jira/browse/MESOS-3820
> Project: Mesos
>  Issue Type: Task
>  Components: libprocess, test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> *Background*
> Libprocess initialization includes the spawning of a variety of global 
> processes and the creation of the server socket which listens for incoming 
> requests.  Some properties of the server socket are configured via 
> environment variables, such as the IP and port or the SSL configuration.
> In the case of tests, libprocess is initialized once per test binary.  This 
> means that testing different configurations (SSL in particular) is cumbersome 
> as a separate process would be needed for every test case.
> *Proposal* (Still under investigation)
> # Augment {{process::finalize}} to completely clean up libprocess.
> #* {{process_manager}}
> #* {{socket_manager}}
> #* {{EventLoop}}
> #* {{Clock}}
> #* {{__s__}}
> #* {{__address__}}
> #* Garbage collector, help, logging, profiler, statistics, route processes 
> (should fall under {{process_manager}}).
> #* {{mime}}
> # Add a test-only {{process::reinitialize}} function, which should be roughly 
> equivalent to a first-time run of {{process::initialize}}.
> -*Proposal to swap out server socket*- (Does not work)
> # Follow the [example of the SSL 
> library|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/openssl.cpp#L280]
>  and allow tests to declare an internal function for re-initializing a 
> portion of libprocess.
> # Move the [existing creation of the server 
> socket|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/process.cpp#L852-L856]
>  into a {{reinitialize_server_socket}} function.
> # Add any neces

[jira] [Updated] (MESOS-3041) Decline call does not include an optional "reason", in the Event/Call API

2015-11-05 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3041?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3041:
-
Target Version/s:   (was: 0.26.0)

> Decline call does not include an optional "reason", in the Event/Call API
> -
>
> Key: MESOS-3041
> URL: https://issues.apache.org/jira/browse/MESOS-3041
> Project: Mesos
>  Issue Type: Task
>  Components: master
>Reporter: Joseph Wu
>Assignee: Guangya Liu
>  Labels: mesosphere
>
> In the Event/Call API, the Decline call is currently used by frameworks to 
> reject resource offers.
> In the case of InverseOffers, the framework could give additional information 
> to the operators and/or allocator, as to why the InverseOffer is declined. 
> i.e. Suppose a cluster running some consensus algorithm is given an 
> InverseOffer on one of its nodes.  It may decline saying "Too few nodes" (or, 
> more verbosely, "Specified InverseOffer would lower the number of active 
> nodes below quorum").
> This change requires the following changes:
> * include/mesos/scheduler/scheduler.proto:
> {code}
> message Call {
>   ...
>   message Decline {
> repeated OfferID offer_ids = 1;
> optional Filters filters = 2;
> // Add this extra string for each OfferID
> // i.e. reasons[i] is for offer_ids[i]
> repeated string reasons = 3;
>   }
>   ...
> }
> {code}
> * src/master/master.cpp
> Change Master::decline to either store the reason, or log it.
> * Add a declineOffer overload in the (Mesos)SchedulerDriver with an optional 
> "reason".
> ** Extend the interface in include/mesos/scheduler.hpp
> ** Add/change the declineOffer method in src/sched/sched.cpp



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


[jira] [Commented] (MESOS-3820) Refactor libprocess initialization to allow for test-only reinitialization of the server socket

2015-11-06 Thread Joseph Wu (JIRA)

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

Joseph Wu commented on MESOS-3820:
--

Two patches from some of my initial investigation into the 
{{process::finalize}} approach:
* Remove some stale comments: https://reviews.apache.org/r/39948/
* Update to {{process::initialize}} synchronization code: 
https://reviews.apache.org/r/39949/

> Refactor libprocess initialization to allow for test-only reinitialization of 
> the server socket
> ---
>
> Key: MESOS-3820
> URL: https://issues.apache.org/jira/browse/MESOS-3820
> Project: Mesos
>  Issue Type: Task
>  Components: libprocess, test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> *Background*
> Libprocess initialization includes the spawning of a variety of global 
> processes and the creation of the server socket which listens for incoming 
> requests.  Some properties of the server socket are configured via 
> environment variables, such as the IP and port or the SSL configuration.
> In the case of tests, libprocess is initialized once per test binary.  This 
> means that testing different configurations (SSL in particular) is cumbersome 
> as a separate process would be needed for every test case.
> *Proposal* (Still under investigation)
> # Augment {{process::finalize}} to completely clean up libprocess.
> #* {{process_manager}}
> #* {{socket_manager}}
> #* {{EventLoop}}
> #* {{Clock}}
> #* {{__s__}}
> #* {{__address__}}
> #* Garbage collector, help, logging, profiler, statistics, route processes 
> (should fall under {{process_manager}}).
> #* {{mime}}
> # Add a test-only {{process::reinitialize}} function, which should be roughly 
> equivalent to a first-time run of {{process::initialize}}.
> -*Proposal to swap out server socket*- (Does not work)
> # Follow the [example of the SSL 
> library|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/openssl.cpp#L280]
>  and allow tests to declare an internal function for re-initializing a 
> portion of libprocess.
> # Move the [existing creation of the server 
> socket|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/process.cpp#L852-L856]
>  into a {{reinitialize_server_socket}} function.
> # Add any necessary cleanup for swapping server sockets.
> # Consider whether any additional locking is required in the 
> {{reinitialize_server_socket}} function.



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


[jira] [Created] (MESOS-3847) Root tests for LinuxFilesystemIsolatorTest are broken

2015-11-06 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3847:


 Summary: Root tests for LinuxFilesystemIsolatorTest are broken
 Key: MESOS-3847
 URL: https://issues.apache.org/jira/browse/MESOS-3847
 Project: Mesos
  Issue Type: Bug
Reporter: Joseph Wu
Assignee: Joseph Wu
Priority: Minor


The refactor in [MESOS-3762] ended up exposing some differences in the 
{{TemporaryDirectoryTest}} classes (one in Stout, one in Mesos-proper).

The tests that broke (during tear down):
{code}
LinuxFilesystemIsolatorTest.ROOT_PersistentVolumeWithRootFilesystem
LinuxFilesystemIsolatorTest.ROOT_PersistentVolumeWithoutRootFilesystem
LinuxFilesystemIsolatorTest.ROOT_MultipleContainers
{code}

As per an offline discussion between [~jvanremoortere] and [~jieyu], the 
solution is to merge the two {{TemporaryDirectoryTest}} classes and to fix the 
tear down of {{LinuxFilesystemIsolatorTest}}.



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


[jira] [Created] (MESOS-3848) Refactor Environment::mkdtemp into TemporaryDirectoryTest.

2015-11-06 Thread Joseph Wu (JIRA)
Joseph Wu created MESOS-3848:


 Summary: Refactor Environment::mkdtemp into TemporaryDirectoryTest.
 Key: MESOS-3848
 URL: https://issues.apache.org/jira/browse/MESOS-3848
 Project: Mesos
  Issue Type: Task
  Components: test
Reporter: Joseph Wu
Assignee: Joseph Wu
Priority: Minor


As part of [MESOS-3762], many tests were changed from one 
{{TemporaryDirectoryTest}} to another {{TemporaryDirectoryTest}}.  One subtle 
difference is that the name of the temporary directory no longer contains the 
name of the test.  In [MESOS-3847], the duplicate {{TemporaryDirectoryTest}} 
was removed.

The original {{TemporaryDirectoryTest}} called 
[{{environment->mkdtemp}}|https://github.com/apache/mesos/blob/master/src/tests/environment.cpp#L494].
  We would like the naming, which is valuable for debugging, to be available 
for a majority of tests.  (A majority of tests inherit from 
{{TemporaryDirectoryTest}} in some way.)

Note:
* Any additional directories created via {{environment->mkdtemp}} are cleaned 
up after the test.
* We don't want mesos-specific logic in Stout, like the {{umount}} shell 
command in {{Environment::TearDown}}.

*Proposed change:*
Move the temporary directory logic from {{Environment::mkdtemp}} to 
{{TemporaryDirectoryTest}}.

*Tests that need to change*
| {{log_tests.cpp}} | {{LogZooKeeperTest}} | We can change {{ZooKeeperTest}} to 
inherit from {{TemporaryDirectoryTest}} to get rid of code duplication |
| {{tests/mesos.cpp}} | {{MesosTest::CreateSlaveFlags}} | {{MesosTest}} already 
inherits from {{TemporaryDirectoryTest}}. |
| {{tests/script.hpp}} | {{TEST_SCRIPT}} | This is used for the 
{{ExampleTests}}.  We can define a test class that inherits appropriately. |
| {{docker_tests.cpp}} | {{*}} | Already inherits from {{MesosTest}}. |



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


[jira] [Updated] (MESOS-2077) Ensure that TASK_LOSTs for a hard slave drain (SIGUSR1) include a Reason.

2015-11-09 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-2077?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-2077:
-
Target Version/s:   (was: 0.27.0)

> Ensure that TASK_LOSTs for a hard slave drain (SIGUSR1) include a Reason.
> -
>
> Key: MESOS-2077
> URL: https://issues.apache.org/jira/browse/MESOS-2077
> Project: Mesos
>  Issue Type: Improvement
>  Components: master, slave
>Reporter: Benjamin Mahler
>Assignee: Guangya Liu
>  Labels: twitter
>
> For maintenance, sometimes operators will force the drain of a slave (via 
> SIGUSR1), when deemed safe (e.g. non-critical tasks running) and/or necessary 
> (e.g. bad hardware).
> To eliminate alerting noise, we'd like to add a 'Reason' that expresses the 
> forced drain of the slave, so that these are not considered to be a generic 
> slave removal TASK_LOST.



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


[jira] [Updated] (MESOS-3820) Refactor libprocess initialization to allow for test-only reinitialization of the server socket

2015-11-09 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3820?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3820:
-
Story Points: 8  (was: 5)

> Refactor libprocess initialization to allow for test-only reinitialization of 
> the server socket
> ---
>
> Key: MESOS-3820
> URL: https://issues.apache.org/jira/browse/MESOS-3820
> Project: Mesos
>  Issue Type: Task
>  Components: libprocess, test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> *Background*
> Libprocess initialization includes the spawning of a variety of global 
> processes and the creation of the server socket which listens for incoming 
> requests.  Some properties of the server socket are configured via 
> environment variables, such as the IP and port or the SSL configuration.
> In the case of tests, libprocess is initialized once per test binary.  This 
> means that testing different configurations (SSL in particular) is cumbersome 
> as a separate process would be needed for every test case.
> *Proposal* (Still under investigation)
> # Augment {{process::finalize}} to completely clean up libprocess.
> #* {{process_manager}}
> #* {{socket_manager}}
> #* {{EventLoop}}
> #* {{Clock}}
> #* {{__s__}}
> #* {{__address__}}
> #* Garbage collector, help, logging, profiler, statistics, route processes 
> (should fall under {{process_manager}}).
> #* {{mime}}
> # Add a test-only {{process::reinitialize}} function, which should be roughly 
> equivalent to a first-time run of {{process::initialize}}.
> -*Proposal to swap out server socket*- (Does not work)
> # Follow the [example of the SSL 
> library|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/openssl.cpp#L280]
>  and allow tests to declare an internal function for re-initializing a 
> portion of libprocess.
> # Move the [existing creation of the server 
> socket|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/process.cpp#L852-L856]
>  into a {{reinitialize_server_socket}} function.
> # Add any necessary cleanup for swapping server sockets.
> # Consider whether any additional locking is required in the 
> {{reinitialize_server_socket}} function.



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


[jira] [Updated] (MESOS-3820) Refactor libprocess initialization to allow for test-only reinitialization of the server socket

2015-11-09 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3820?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3820:
-
Sprint: Mesosphere Sprint 22

> Refactor libprocess initialization to allow for test-only reinitialization of 
> the server socket
> ---
>
> Key: MESOS-3820
> URL: https://issues.apache.org/jira/browse/MESOS-3820
> Project: Mesos
>  Issue Type: Task
>  Components: libprocess, test
>Reporter: Joseph Wu
>Assignee: Joseph Wu
>  Labels: mesosphere
>
> *Background*
> Libprocess initialization includes the spawning of a variety of global 
> processes and the creation of the server socket which listens for incoming 
> requests.  Some properties of the server socket are configured via 
> environment variables, such as the IP and port or the SSL configuration.
> In the case of tests, libprocess is initialized once per test binary.  This 
> means that testing different configurations (SSL in particular) is cumbersome 
> as a separate process would be needed for every test case.
> *Proposal* (Still under investigation)
> # Augment {{process::finalize}} to completely clean up libprocess.
> #* {{process_manager}}
> #* {{socket_manager}}
> #* {{EventLoop}}
> #* {{Clock}}
> #* {{__s__}}
> #* {{__address__}}
> #* Garbage collector, help, logging, profiler, statistics, route processes 
> (should fall under {{process_manager}}).
> #* {{mime}}
> # Add a test-only {{process::reinitialize}} function, which should be roughly 
> equivalent to a first-time run of {{process::initialize}}.
> -*Proposal to swap out server socket*- (Does not work)
> # Follow the [example of the SSL 
> library|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/openssl.cpp#L280]
>  and allow tests to declare an internal function for re-initializing a 
> portion of libprocess.
> # Move the [existing creation of the server 
> socket|https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/process.cpp#L852-L856]
>  into a {{reinitialize_server_socket}} function.
> # Add any necessary cleanup for swapping server sockets.
> # Consider whether any additional locking is required in the 
> {{reinitialize_server_socket}} function.



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


[jira] [Updated] (MESOS-3041) Decline call does not include an optional "reason", in the Event/Call API

2015-11-09 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-3041?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-3041:
-
Labels:   (was: mesosphere)

> Decline call does not include an optional "reason", in the Event/Call API
> -
>
> Key: MESOS-3041
> URL: https://issues.apache.org/jira/browse/MESOS-3041
> Project: Mesos
>  Issue Type: Task
>  Components: master
>Reporter: Joseph Wu
>Assignee: Guangya Liu
>
> In the Event/Call API, the Decline call is currently used by frameworks to 
> reject resource offers.
> In the case of InverseOffers, the framework could give additional information 
> to the operators and/or allocator, as to why the InverseOffer is declined. 
> i.e. Suppose a cluster running some consensus algorithm is given an 
> InverseOffer on one of its nodes.  It may decline saying "Too few nodes" (or, 
> more verbosely, "Specified InverseOffer would lower the number of active 
> nodes below quorum").
> This change requires the following changes:
> * include/mesos/scheduler/scheduler.proto:
> {code}
> message Call {
>   ...
>   message Decline {
> repeated OfferID offer_ids = 1;
> optional Filters filters = 2;
> // Add this extra string for each OfferID
> // i.e. reasons[i] is for offer_ids[i]
> repeated string reasons = 3;
>   }
>   ...
> }
> {code}
> * src/master/master.cpp
> Change Master::decline to either store the reason, or log it.
> * Add a declineOffer overload in the (Mesos)SchedulerDriver with an optional 
> "reason".
> ** Extend the interface in include/mesos/scheduler.hpp
> ** Add/change the declineOffer method in src/sched/sched.cpp



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


[jira] [Updated] (MESOS-2081) Add safety constraints for maintenance primitives.

2015-11-09 Thread Joseph Wu (JIRA)

 [ 
https://issues.apache.org/jira/browse/MESOS-2081?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Wu updated MESOS-2081:
-
Labels: twitter  (was: mesosphere twitter)

> Add safety constraints for maintenance primitives.
> --
>
> Key: MESOS-2081
> URL: https://issues.apache.org/jira/browse/MESOS-2081
> Project: Mesos
>  Issue Type: Task
>  Components: master
>Reporter: Benjamin Mahler
>Assignee: Klaus Ma
>  Labels: twitter
>
> In order to ensure that the maintenance primitives can be used safely by 
> operators, we want to put a few safety mechanisms in place. Some ideas from 
> the [design 
> doc|https://docs.google.com/a/twitter.com/document/d/16k0lVwpSGVOyxPSyXKmGC-gbNmRlisNEe4p-fAUSojk/]:
> # Prevent bad schedules from being constructed: schedules with more than x% 
> overlap in slaves are rejected.
> # Prevent bad maintenance from proceeding unchecked: if x% of the slaves are 
> not being unscheduled, or are not re-registering, cancel the schedule.
> These will likely be configurable via flags.



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


  1   2   3   4   5   6   7   8   9   10   >