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

Anand Mazumdar updated MESOS-4153:
----------------------------------
    Description: 
The {{disconnected}} callback is never invoked when a local/remote libprocess 
{{process}} terminates. Here is a sample test that shows that the returned 
future from {{disconnect()}} is never fulfilled.

{code}
TEST(HTTPConnectionTest, Disconnected)
{
  Option<http::Connection> connection;
  Future<Nothing> disconnected;

  {
    Http http;

    http::URL url = http::URL(
      "http",
      http.process->self().address.ip,
      http.process->self().address.port,
      http.process->self().id + "/get");

    Future<http::Connection> connect = http::connect(url);

    AWAIT_READY(connect);

    connection = connect.get();

    disconnected = connection->disconnected();
  }

  AWAIT_READY(disconnected);
}
{code}

The {{Http}} class refers to the one used in the tests:
https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/tests/http_tests.cpp#L114

The following test passes:
{code}
TEST(HTTPConnectionTest, Disconnected)
{
  Option<http::Connection> connection;
  Future<Nothing> disconnected;

  {
    Http http;

    http::URL url = http::URL(
      "http",
      http.process->self().address.ip,
      http.process->self().address.port,
      http.process->self().id + "/get");

    Future<http::Connection> connect = http::connect(url);

    AWAIT_READY(connect);

    connection = connect.get();

    disconnected = connection->disconnected();
  }

  AWAIT_READY(connection->disconnect());
  AWAIT_READY(disconnected);
}
{code}


  was:
The {{disconnected}} callback is never invoked when a local/remote libprocess 
{{process}} terminates. Here is a sample test that shows that the returned 
future from {{disconnect()}} is never fulfilled.

{code}
TEST(HTTPConnectionTest, Disconnected)
{
  Option<http::Connection> connection;
  Future<Nothing> disconnected;

  {
    Http http;

    http::URL url = http::URL(
      "http",
      http.process->self().address.ip,
      http.process->self().address.port,
      http.process->self().id + "/get");

    Future<http::Connection> connect = http::connect(url);

    AWAIT_READY(connect);

    connection = connect.get();

    disconnected = connection->disconnected();
  }

  AWAIT_READY(disconnected);
}
{code}

The {{Http}} class refers to the one used in the tests:
https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/tests/http_tests.cpp#L114


> process::Connection does not invoke the disconnected callback when remote 
> process exits
> ---------------------------------------------------------------------------------------
>
>                 Key: MESOS-4153
>                 URL: https://issues.apache.org/jira/browse/MESOS-4153
>             Project: Mesos
>          Issue Type: Bug
>          Components: libprocess
>            Reporter: Anand Mazumdar
>              Labels: http
>
> The {{disconnected}} callback is never invoked when a local/remote libprocess 
> {{process}} terminates. Here is a sample test that shows that the returned 
> future from {{disconnect()}} is never fulfilled.
> {code}
> TEST(HTTPConnectionTest, Disconnected)
> {
>   Option<http::Connection> connection;
>   Future<Nothing> disconnected;
>   {
>     Http http;
>     http::URL url = http::URL(
>       "http",
>       http.process->self().address.ip,
>       http.process->self().address.port,
>       http.process->self().id + "/get");
>     Future<http::Connection> connect = http::connect(url);
>     AWAIT_READY(connect);
>     connection = connect.get();
>     disconnected = connection->disconnected();
>   }
>   AWAIT_READY(disconnected);
> }
> {code}
> The {{Http}} class refers to the one used in the tests:
> https://github.com/apache/mesos/blob/master/3rdparty/libprocess/src/tests/http_tests.cpp#L114
> The following test passes:
> {code}
> TEST(HTTPConnectionTest, Disconnected)
> {
>   Option<http::Connection> connection;
>   Future<Nothing> disconnected;
>   {
>     Http http;
>     http::URL url = http::URL(
>       "http",
>       http.process->self().address.ip,
>       http.process->self().address.port,
>       http.process->self().id + "/get");
>     Future<http::Connection> connect = http::connect(url);
>     AWAIT_READY(connect);
>     connection = connect.get();
>     disconnected = connection->disconnected();
>   }
>   AWAIT_READY(connection->disconnect());
>   AWAIT_READY(disconnected);
> }
> {code}



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

Reply via email to