Re: Re[6]: Thin Client ping operation?

2020-09-16 Thread Pavel Tupitsyn
Looks like there are no major objections, so I'll move on with the
implementation
https://issues.apache.org/jira/browse/IGNITE-13454

On Wed, Sep 16, 2020 at 4:35 PM Guru Stron 
wrote:

> Hello Pavel,
>
> +1 for external API.
>
> On Tue, 15 Sep 2020 at 19:58, Zhenya Stanilovsky
> 
> wrote:
>
> >
> > I understand now, thanks Pavel, initial discussion didn`t touch kuber
> > theme ...
> >
> >
> > >Вторник, 15 сентября 2020, 18:22 +03:00 от Pavel Tupitsyn <
> > ptupit...@apache.org>:
> > >
> > >Zhenya, sure, let me explain.
> > >
> > >Health checks are a common practice in modern deployments, quote [1]:
> > >"Health probes can be used by container orchestrators and load balancers
> > to check an app's status.
> > >For example, a container orchestrator may respond to a failing health
> > check by halting a rolling deployment or restarting a container.
> > >A load balancer might react to an unhealthy app by routing traffic away
> > from the failing instance to a healthy instance."
> > >
> > >Kubernetes has various probes [2] to determine the pod status.
> > >
> > >So Ignite users need a proper mechanism to determine connectivity status
> > of the thin client
> > >to integrate with frameworks and orchestrators.
> > >
> > >[1]
> >
> https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks
> > >[2]
> >
> https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
> >
> > >On Tue, Sep 15, 2020 at 4:36 PM Zhenya Stanilovsky <
> > arzamas...@mail.ru.invalid > wrote:
> > >
> > >>Pavel, i read whole thread, show me the reason why this functionality
> > need to be external ?
> > >>
> > >>>
> > >>>
> > >>>Health checks are the primary use case. See linked user list thread.
> > >>>
> > >>>On Tue, Sep 15, 2020 at 12:26 PM Zhenya Stanilovsky
> > >>><  arzamas...@mail.ru.invalid > wrote:
> > >>>
> > 
> >  Whats the usage of such API ? Igor can you clarify please ?
> > 
> >  >Personally I believe that public API still can be helpful, as it
> > gives
> >  user
> >  >an ability to check connection in the specific point in time, even
> if
> >  >automatic
> >  >ping is implemented (which is more complex and hard-to-maintain
> > feature
> >  >by the way).
> >  >
> >  >Not sure there should be "ping" in API though, maybe something more
> > like
> >  >client.checkConnection();
> >  >
> >  >Best Regards,
> >  >Igor
> >  >
> >  >
> >  >On Mon, Sep 14, 2020 at 11:37 AM Alex Plehanov <
> > plehanov.a...@gmail.com
> >  >
> >  >wrote:
> >  >
> >  >> Hello guys,
> >  >>
> >  >> We've already raised the question about ping requests here [1].
> >  >>
> >  >> I'm not sure about public API, but at least we can have auto-ping
> > as an
> >  >> internal mechanism. This will be helpful if the client doesn't
> > send any
> >  new
> >  >> requests but only waits for server-side notifications (for
> > example, if
> >  the
> >  >> client subscribed to CQ events). The client can't detect a
> > connection
> >  lost
> >  >> until sending something to the server. Using periodic ping
> > requests this
> >  >> problem can be solved.
> >  >>
> >  >> So, +1 to add ping to the protocol, +0 to expose it to public
> API.
> >  >>
> >  >> [1]
> >  >>
> >  >>
> > 
> >
> http://apache-ignite-developers.2346864.n4.nabble.com/IEP-44-Thin-Client-Discovery-tp47129p47318.html
> >  >>
> >  >> пн, 14 сент. 2020 г. в 10:32, Pavel Tupitsyn <
> > ptupit...@apache.org >:
> >  >>
> >  >> > Nikolay,
> >  >> >
> >  >> > See the discussion on the user list:
> >  >> >
> >  >> > 1. It is not immediately obvious which APIs perform server
> calls
> > and
> >  >> which
> >  >> > don't.
> >  >> > 2. It is not clear which APIs can cause heavy resource usage on
> > the
> >  >> server
> >  >> > side.
> >  >> > We don't want to stress servers by pinging them.
> >  >> > cache.size() is an example - it is tempting to use and seems to
> > be
> >  >> > simple, but actually queries every server node in the cluster.
> >  >> >
> >  >> > > dedicated `ping` operation makes our API heavier
> >  >> > The operation is so trivial that I would not worry about
> > increased
> >  >> > complexity or future maintenance.
> >  >> >
> >  >> > On Mon, Sep 14, 2020 at 10:17 AM Nikolay Izhikov <
> >    nizhi...@apache.org >
> >  >> > wrote:
> >  >> >
> >  >> > > Hello, Igor.
> >  >> > >
> >  >> > > On the other hand, dedicated `ping` operation makes our API
> > heavier
> >  >> > > without adding new feature -
> >  >> > > We can do the same with the other part of the API.
> >  >> > >
> >  >> > > Moreover, response to the ping doesn’t mean that SQL or cache
> > query
> >  can
> >  >> > be
> >  >> > > served.
> >  >> > >
> >  >> > > > 14 сент. 2020 

Re: Re[6]: Thin Client ping operation?

2020-09-16 Thread Guru Stron
Hello Pavel,

+1 for external API.

On Tue, 15 Sep 2020 at 19:58, Zhenya Stanilovsky 
wrote:

>
> I understand now, thanks Pavel, initial discussion didn`t touch kuber
> theme ...
>
>
> >Вторник, 15 сентября 2020, 18:22 +03:00 от Pavel Tupitsyn <
> ptupit...@apache.org>:
> >
> >Zhenya, sure, let me explain.
> >
> >Health checks are a common practice in modern deployments, quote [1]:
> >"Health probes can be used by container orchestrators and load balancers
> to check an app's status.
> >For example, a container orchestrator may respond to a failing health
> check by halting a rolling deployment or restarting a container.
> >A load balancer might react to an unhealthy app by routing traffic away
> from the failing instance to a healthy instance."
> >
> >Kubernetes has various probes [2] to determine the pod status.
> >
> >So Ignite users need a proper mechanism to determine connectivity status
> of the thin client
> >to integrate with frameworks and orchestrators.
> >
> >[1]
> https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks
> >[2]
> https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
>
> >On Tue, Sep 15, 2020 at 4:36 PM Zhenya Stanilovsky <
> arzamas...@mail.ru.invalid > wrote:
> >
> >>Pavel, i read whole thread, show me the reason why this functionality
> need to be external ?
> >>
> >>>
> >>>
> >>>Health checks are the primary use case. See linked user list thread.
> >>>
> >>>On Tue, Sep 15, 2020 at 12:26 PM Zhenya Stanilovsky
> >>><  arzamas...@mail.ru.invalid > wrote:
> >>>
> 
>  Whats the usage of such API ? Igor can you clarify please ?
> 
>  >Personally I believe that public API still can be helpful, as it
> gives
>  user
>  >an ability to check connection in the specific point in time, even if
>  >automatic
>  >ping is implemented (which is more complex and hard-to-maintain
> feature
>  >by the way).
>  >
>  >Not sure there should be "ping" in API though, maybe something more
> like
>  >client.checkConnection();
>  >
>  >Best Regards,
>  >Igor
>  >
>  >
>  >On Mon, Sep 14, 2020 at 11:37 AM Alex Plehanov <
> plehanov.a...@gmail.com
>  >
>  >wrote:
>  >
>  >> Hello guys,
>  >>
>  >> We've already raised the question about ping requests here [1].
>  >>
>  >> I'm not sure about public API, but at least we can have auto-ping
> as an
>  >> internal mechanism. This will be helpful if the client doesn't
> send any
>  new
>  >> requests but only waits for server-side notifications (for
> example, if
>  the
>  >> client subscribed to CQ events). The client can't detect a
> connection
>  lost
>  >> until sending something to the server. Using periodic ping
> requests this
>  >> problem can be solved.
>  >>
>  >> So, +1 to add ping to the protocol, +0 to expose it to public API.
>  >>
>  >> [1]
>  >>
>  >>
> 
> http://apache-ignite-developers.2346864.n4.nabble.com/IEP-44-Thin-Client-Discovery-tp47129p47318.html
>  >>
>  >> пн, 14 сент. 2020 г. в 10:32, Pavel Tupitsyn <
> ptupit...@apache.org >:
>  >>
>  >> > Nikolay,
>  >> >
>  >> > See the discussion on the user list:
>  >> >
>  >> > 1. It is not immediately obvious which APIs perform server calls
> and
>  >> which
>  >> > don't.
>  >> > 2. It is not clear which APIs can cause heavy resource usage on
> the
>  >> server
>  >> > side.
>  >> > We don't want to stress servers by pinging them.
>  >> > cache.size() is an example - it is tempting to use and seems to
> be
>  >> > simple, but actually queries every server node in the cluster.
>  >> >
>  >> > > dedicated `ping` operation makes our API heavier
>  >> > The operation is so trivial that I would not worry about
> increased
>  >> > complexity or future maintenance.
>  >> >
>  >> > On Mon, Sep 14, 2020 at 10:17 AM Nikolay Izhikov <
>    nizhi...@apache.org >
>  >> > wrote:
>  >> >
>  >> > > Hello, Igor.
>  >> > >
>  >> > > On the other hand, dedicated `ping` operation makes our API
> heavier
>  >> > > without adding new feature -
>  >> > > We can do the same with the other part of the API.
>  >> > >
>  >> > > Moreover, response to the ping doesn’t mean that SQL or cache
> query
>  can
>  >> > be
>  >> > > served.
>  >> > >
>  >> > > > 14 сент. 2020 г., в 10:08, Igor Sapego <
> isap...@apache.org >
>  >> > написал(а):
>  >> > > >
>  >> > > > Николай,
>  >> > > >
>  >> > > > It looks a little bit hacky to me. I believe SQL drivers
> usually
>  use
>  >> > that
>  >> > > > approach
>  >> > > > as a workaround because there is no other common way to do
> that.
>  >> > > >
>  >> > > > Sure we can recommend users to use cache.size() or anything
> other
>  >> > > > similar way
>  >> 

Re[6]: Thin Client ping operation?

2020-09-15 Thread Zhenya Stanilovsky

I understand now, thanks Pavel, initial discussion didn`t touch kuber theme ...

  
>Вторник, 15 сентября 2020, 18:22 +03:00 от Pavel Tupitsyn 
>:
> 
>Zhenya, sure, let me explain.
> 
>Health checks are a common practice in modern deployments, quote [1]:
>"Health probes can be used by container orchestrators and load balancers to 
>check an app's status. 
>For example, a container orchestrator may respond to a failing health check by 
>halting a rolling deployment or restarting a container.
>A load balancer might react to an unhealthy app by routing traffic away from 
>the failing instance to a healthy instance."
> 
>Kubernetes has various probes [2] to determine the pod status.
> 
>So Ignite users need a proper mechanism to determine connectivity status of 
>the thin client
>to integrate with frameworks and orchestrators.
> 
>[1]  https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks
>[2]  
>https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
>  
>On Tue, Sep 15, 2020 at 4:36 PM Zhenya Stanilovsky < 
>arzamas...@mail.ru.invalid > wrote:
>  
>>Pavel, i read whole thread, show me the reason why this functionality need to 
>>be external ?
>> 
>>>
>>>
>>>Health checks are the primary use case. See linked user list thread.
>>>
>>>On Tue, Sep 15, 2020 at 12:26 PM Zhenya Stanilovsky
>>><  arzamas...@mail.ru.invalid > wrote:
>>> 

 Whats the usage of such API ? Igor can you clarify please ?

 >Personally I believe that public API still can be helpful, as it gives
 user
 >an ability to check connection in the specific point in time, even if
 >automatic
 >ping is implemented (which is more complex and hard-to-maintain feature
 >by the way).
 >
 >Not sure there should be "ping" in API though, maybe something more like
 >client.checkConnection();
 >
 >Best Regards,
 >Igor
 >
 >
 >On Mon, Sep 14, 2020 at 11:37 AM Alex Plehanov <   plehanov.a...@gmail.com
 >
 >wrote:
 >
 >> Hello guys,
 >>
 >> We've already raised the question about ping requests here [1].
 >>
 >> I'm not sure about public API, but at least we can have auto-ping as an
 >> internal mechanism. This will be helpful if the client doesn't send any
 new
 >> requests but only waits for server-side notifications (for example, if
 the
 >> client subscribed to CQ events). The client can't detect a connection
 lost
 >> until sending something to the server. Using periodic ping requests this
 >> problem can be solved.
 >>
 >> So, +1 to add ping to the protocol, +0 to expose it to public API.
 >>
 >> [1]
 >>
 >>
   
http://apache-ignite-developers.2346864.n4.nabble.com/IEP-44-Thin-Client-Discovery-tp47129p47318.html
 >>
 >> пн, 14 сент. 2020 г. в 10:32, Pavel Tupitsyn <   ptupit...@apache.org >:
 >>
 >> > Nikolay,
 >> >
 >> > See the discussion on the user list:
 >> >
 >> > 1. It is not immediately obvious which APIs perform server calls and
 >> which
 >> > don't.
 >> > 2. It is not clear which APIs can cause heavy resource usage on the
 >> server
 >> > side.
 >> > We don't want to stress servers by pinging them.
 >> > cache.size() is an example - it is tempting to use and seems to be
 >> > simple, but actually queries every server node in the cluster.
 >> >
 >> > > dedicated `ping` operation makes our API heavier
 >> > The operation is so trivial that I would not worry about increased
 >> > complexity or future maintenance.
 >> >
 >> > On Mon, Sep 14, 2020 at 10:17 AM Nikolay Izhikov <
   nizhi...@apache.org >
 >> > wrote:
 >> >
 >> > > Hello, Igor.
 >> > >
 >> > > On the other hand, dedicated `ping` operation makes our API heavier
 >> > > without adding new feature -
 >> > > We can do the same with the other part of the API.
 >> > >
 >> > > Moreover, response to the ping doesn’t mean that SQL or cache query
 can
 >> > be
 >> > > served.
 >> > >
 >> > > > 14 сент. 2020 г., в 10:08, Igor Sapego <   isap...@apache.org >
 >> > написал(а):
 >> > > >
 >> > > > Николай,
 >> > > >
 >> > > > It looks a little bit hacky to me. I believe SQL drivers usually
 use
 >> > that
 >> > > > approach
 >> > > > as a workaround because there is no other common way to do that.
 >> > > >
 >> > > > Sure we can recommend users to use cache.size() or anything other
 >> > > > similar way
 >> > > > to ensure the connection is alive, but it still looks like a
 >> workaround
 >> > > to
 >> > > > me.
 >> > > >
 >> > > > Best Regards,
 >> > > > Igor
 >> > > >
 >> > > >
 >> > > > On Sun, Sep 13, 2020 at 10:16 PM Николай Ижиков <
   nizhi...@apache.org
 >> >
 >> > > wrote:
 >> > > >
 >> > > >> Hello, Pavel.