Execution of local SqlFieldsQuery on client node disallowed

classic Classic list List threaded Threaded
13 messages Options
narges saleh narges saleh
Reply | Threaded
Open this post in threaded view
|

Execution of local SqlFieldsQuery on client node disallowed

Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.
dmagda dmagda
Reply | Threaded
Open this post in threaded view
|

Re: Execution of local SqlFieldsQuery on client node disallowed

The error message says you're attempting to run the query on a client node. If that's the case (if the service is deployed on the client node), then the local flag has no effect because client nodes don't keep your data locally but rather consume it from servers.

-
Denis


On Thu, Oct 22, 2020 at 6:26 PM narges saleh <[hidden email]> wrote:
Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.
narges saleh narges saleh
Reply | Threaded
Open this post in threaded view
|

Re: Execution of local SqlFieldsQuery on client node disallowed

Hi Denis 
What would make an ignite node a client node? The code is invoked via an ignite service deployed on each node and I am not setting the client mode anywhere. The code sets the jdbc connection to local and tries to execute a sql code on the node in some interval. By the way, I didn't know one could deploy a service on client nodes. Do I need to explicitly mark a node as a server node when deploying a service?
thanks 

On Thu, Oct 22, 2020 at 9:42 PM Denis Magda <[hidden email]> wrote:
The error message says you're attempting to run the query on a client node. If that's the case (if the service is deployed on the client node), then the local flag has no effect because client nodes don't keep your data locally but rather consume it from servers.

-
Denis


On Thu, Oct 22, 2020 at 6:26 PM narges saleh <[hidden email]> wrote:
Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.
narges saleh narges saleh
Reply | Threaded
Open this post in threaded view
|

Re: Execution of local SqlFieldsQuery on client node disallowed

Denis -- Just checked. I do specify my services to be deployed on server nodes only. Why would ignite think that I am running my code on a client node?

On Fri, Oct 23, 2020 at 3:50 AM narges saleh <[hidden email]> wrote:
Hi Denis 
What would make an ignite node a client node? The code is invoked via an ignite service deployed on each node and I am not setting the client mode anywhere. The code sets the jdbc connection to local and tries to execute a sql code on the node in some interval. By the way, I didn't know one could deploy a service on client nodes. Do I need to explicitly mark a node as a server node when deploying a service?
thanks 

On Thu, Oct 22, 2020 at 9:42 PM Denis Magda <[hidden email]> wrote:
The error message says you're attempting to run the query on a client node. If that's the case (if the service is deployed on the client node), then the local flag has no effect because client nodes don't keep your data locally but rather consume it from servers.

-
Denis


On Thu, Oct 22, 2020 at 6:26 PM narges saleh <[hidden email]> wrote:
Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.
ilya.kasnacheev ilya.kasnacheev
Reply | Threaded
Open this post in threaded view
|

Re: Execution of local SqlFieldsQuery on client node disallowed

Hello!

Does this happen every time? If so, do you have a reproducer for the issue?

Regards,
--
Ilya Kasnacheev


пт, 23 окт. 2020 г. в 13:06, narges saleh <[hidden email]>:
Denis -- Just checked. I do specify my services to be deployed on server nodes only. Why would ignite think that I am running my code on a client node?

On Fri, Oct 23, 2020 at 3:50 AM narges saleh <[hidden email]> wrote:
Hi Denis 
What would make an ignite node a client node? The code is invoked via an ignite service deployed on each node and I am not setting the client mode anywhere. The code sets the jdbc connection to local and tries to execute a sql code on the node in some interval. By the way, I didn't know one could deploy a service on client nodes. Do I need to explicitly mark a node as a server node when deploying a service?
thanks 

On Thu, Oct 22, 2020 at 9:42 PM Denis Magda <[hidden email]> wrote:
The error message says you're attempting to run the query on a client node. If that's the case (if the service is deployed on the client node), then the local flag has no effect because client nodes don't keep your data locally but rather consume it from servers.

-
Denis


On Thu, Oct 22, 2020 at 6:26 PM narges saleh <[hidden email]> wrote:
Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.
narges saleh narges saleh
Reply | Threaded
Open this post in threaded view
|

Re: Execution of local SqlFieldsQuery on client node disallowed

Hello Ilya
Yes, it happens all the time. It seems ignite forces the "client" establishing the jdbc connection into a client mode, even if I set client=false.  The sample code and config are attached. The question is how do I force JDBC connections from a server node.
thanks.

On Fri, Oct 23, 2020 at 10:31 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

Does this happen every time? If so, do you have a reproducer for the issue?

Regards,
--
Ilya Kasnacheev


пт, 23 окт. 2020 г. в 13:06, narges saleh <[hidden email]>:
Denis -- Just checked. I do specify my services to be deployed on server nodes only. Why would ignite think that I am running my code on a client node?

On Fri, Oct 23, 2020 at 3:50 AM narges saleh <[hidden email]> wrote:
Hi Denis 
What would make an ignite node a client node? The code is invoked via an ignite service deployed on each node and I am not setting the client mode anywhere. The code sets the jdbc connection to local and tries to execute a sql code on the node in some interval. By the way, I didn't know one could deploy a service on client nodes. Do I need to explicitly mark a node as a server node when deploying a service?
thanks 

On Thu, Oct 22, 2020 at 9:42 PM Denis Magda <[hidden email]> wrote:
The error message says you're attempting to run the query on a client node. If that's the case (if the service is deployed on the client node), then the local flag has no effect because client nodes don't keep your data locally but rather consume it from servers.

-
Denis


On Thu, Oct 22, 2020 at 6:26 PM narges saleh <[hidden email]> wrote:
Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.

JDBCQuery.java (1K) Download Attachment
query-entity.xml (6K) Download Attachment
ilya.kasnacheev ilya.kasnacheev
Reply | Threaded
Open this post in threaded view
|

Re: Execution of local SqlFieldsQuery on client node disallowed

Hello!

You are using an Ignite Thick Client driver. As its name implies, it will start a local client node and then connect to it, without the option of doing local queries.

You need to use Ignite Thin JDBC driver: jdbc:ignite:thin://<server ip>
Then you can do local queries.

Regards,
--
Ilya Kasnacheev


сб, 24 окт. 2020 г. в 16:04, narges saleh <[hidden email]>:
Hello Ilya
Yes, it happens all the time. It seems ignite forces the "client" establishing the jdbc connection into a client mode, even if I set client=false.  The sample code and config are attached. The question is how do I force JDBC connections from a server node.
thanks.

On Fri, Oct 23, 2020 at 10:31 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

Does this happen every time? If so, do you have a reproducer for the issue?

Regards,
--
Ilya Kasnacheev


пт, 23 окт. 2020 г. в 13:06, narges saleh <[hidden email]>:
Denis -- Just checked. I do specify my services to be deployed on server nodes only. Why would ignite think that I am running my code on a client node?

On Fri, Oct 23, 2020 at 3:50 AM narges saleh <[hidden email]> wrote:
Hi Denis 
What would make an ignite node a client node? The code is invoked via an ignite service deployed on each node and I am not setting the client mode anywhere. The code sets the jdbc connection to local and tries to execute a sql code on the node in some interval. By the way, I didn't know one could deploy a service on client nodes. Do I need to explicitly mark a node as a server node when deploying a service?
thanks 

On Thu, Oct 22, 2020 at 9:42 PM Denis Magda <[hidden email]> wrote:
The error message says you're attempting to run the query on a client node. If that's the case (if the service is deployed on the client node), then the local flag has no effect because client nodes don't keep your data locally but rather consume it from servers.

-
Denis


On Thu, Oct 22, 2020 at 6:26 PM narges saleh <[hidden email]> wrote:
Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.
dmagda dmagda
Reply | Threaded
Open this post in threaded view
|

Re: Execution of local SqlFieldsQuery on client node disallowed

Narges, 

Also, keep in mind that if a local query is executed over a partitioned table and it happens that partitions rebalancing starts, the local query might return a wrong result (if partitions the query was executed over were rebalanced to another node during the query execution time). To address this:
  1. Execute the local query inside of an affinityCall/Run function (https://ignite.apache.org/docs/latest/distributed-computing/collocated-computations#colocating-by-key). Those functions don't let partitions be evicted until the function execution completes.
  2. Don't use the local queries, let the Ignite SQL engine to run standard queries, and to take care of possible optimizations.

-
Denis


On Mon, Oct 26, 2020 at 8:50 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

You are using an Ignite Thick Client driver. As its name implies, it will start a local client node and then connect to it, without the option of doing local queries.

You need to use Ignite Thin JDBC driver: jdbc:ignite:thin://<server ip>
Then you can do local queries.

Regards,
--
Ilya Kasnacheev


сб, 24 окт. 2020 г. в 16:04, narges saleh <[hidden email]>:
Hello Ilya
Yes, it happens all the time. It seems ignite forces the "client" establishing the jdbc connection into a client mode, even if I set client=false.  The sample code and config are attached. The question is how do I force JDBC connections from a server node.
thanks.

On Fri, Oct 23, 2020 at 10:31 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

Does this happen every time? If so, do you have a reproducer for the issue?

Regards,
--
Ilya Kasnacheev


пт, 23 окт. 2020 г. в 13:06, narges saleh <[hidden email]>:
Denis -- Just checked. I do specify my services to be deployed on server nodes only. Why would ignite think that I am running my code on a client node?

On Fri, Oct 23, 2020 at 3:50 AM narges saleh <[hidden email]> wrote:
Hi Denis 
What would make an ignite node a client node? The code is invoked via an ignite service deployed on each node and I am not setting the client mode anywhere. The code sets the jdbc connection to local and tries to execute a sql code on the node in some interval. By the way, I didn't know one could deploy a service on client nodes. Do I need to explicitly mark a node as a server node when deploying a service?
thanks 

On Thu, Oct 22, 2020 at 9:42 PM Denis Magda <[hidden email]> wrote:
The error message says you're attempting to run the query on a client node. If that's the case (if the service is deployed on the client node), then the local flag has no effect because client nodes don't keep your data locally but rather consume it from servers.

-
Denis


On Thu, Oct 22, 2020 at 6:26 PM narges saleh <[hidden email]> wrote:
Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.
narges saleh narges saleh
Reply | Threaded
Open this post in threaded view
|

Re: Execution of local SqlFieldsQuery on client node disallowed

Thanks Ilya, Denis for the feedback.

On Mon, Oct 26, 2020 at 1:44 PM Denis Magda <[hidden email]> wrote:
Narges, 

Also, keep in mind that if a local query is executed over a partitioned table and it happens that partitions rebalancing starts, the local query might return a wrong result (if partitions the query was executed over were rebalanced to another node during the query execution time). To address this:
  1. Execute the local query inside of an affinityCall/Run function (https://ignite.apache.org/docs/latest/distributed-computing/collocated-computations#colocating-by-key). Those functions don't let partitions be evicted until the function execution completes.
  2. Don't use the local queries, let the Ignite SQL engine to run standard queries, and to take care of possible optimizations.

-
Denis


On Mon, Oct 26, 2020 at 8:50 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

You are using an Ignite Thick Client driver. As its name implies, it will start a local client node and then connect to it, without the option of doing local queries.

You need to use Ignite Thin JDBC driver: jdbc:ignite:thin://<server ip>
Then you can do local queries.

Regards,
--
Ilya Kasnacheev


сб, 24 окт. 2020 г. в 16:04, narges saleh <[hidden email]>:
Hello Ilya
Yes, it happens all the time. It seems ignite forces the "client" establishing the jdbc connection into a client mode, even if I set client=false.  The sample code and config are attached. The question is how do I force JDBC connections from a server node.
thanks.

On Fri, Oct 23, 2020 at 10:31 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

Does this happen every time? If so, do you have a reproducer for the issue?

Regards,
--
Ilya Kasnacheev


пт, 23 окт. 2020 г. в 13:06, narges saleh <[hidden email]>:
Denis -- Just checked. I do specify my services to be deployed on server nodes only. Why would ignite think that I am running my code on a client node?

On Fri, Oct 23, 2020 at 3:50 AM narges saleh <[hidden email]> wrote:
Hi Denis 
What would make an ignite node a client node? The code is invoked via an ignite service deployed on each node and I am not setting the client mode anywhere. The code sets the jdbc connection to local and tries to execute a sql code on the node in some interval. By the way, I didn't know one could deploy a service on client nodes. Do I need to explicitly mark a node as a server node when deploying a service?
thanks 

On Thu, Oct 22, 2020 at 9:42 PM Denis Magda <[hidden email]> wrote:
The error message says you're attempting to run the query on a client node. If that's the case (if the service is deployed on the client node), then the local flag has no effect because client nodes don't keep your data locally but rather consume it from servers.

-
Denis


On Thu, Oct 22, 2020 at 6:26 PM narges saleh <[hidden email]> wrote:
Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.
narges saleh narges saleh
Reply | Threaded
Open this post in threaded view
|

Re: Execution of local SqlFieldsQuery on client node disallowed

Hi Denis,

My problem with using affinity call/run is that I have to have the key in order to run it. I just want to run a function on the data on the current node, without knowing the key. Is there anyway to do this and also guard against partition rebalancing? 

thanks

On Tue, Oct 27, 2020 at 10:31 AM narges saleh <[hidden email]> wrote:
Thanks Ilya, Denis for the feedback.

On Mon, Oct 26, 2020 at 1:44 PM Denis Magda <[hidden email]> wrote:
Narges, 

Also, keep in mind that if a local query is executed over a partitioned table and it happens that partitions rebalancing starts, the local query might return a wrong result (if partitions the query was executed over were rebalanced to another node during the query execution time). To address this:
  1. Execute the local query inside of an affinityCall/Run function (https://ignite.apache.org/docs/latest/distributed-computing/collocated-computations#colocating-by-key). Those functions don't let partitions be evicted until the function execution completes.
  2. Don't use the local queries, let the Ignite SQL engine to run standard queries, and to take care of possible optimizations.

-
Denis


On Mon, Oct 26, 2020 at 8:50 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

You are using an Ignite Thick Client driver. As its name implies, it will start a local client node and then connect to it, without the option of doing local queries.

You need to use Ignite Thin JDBC driver: jdbc:ignite:thin://<server ip>
Then you can do local queries.

Regards,
--
Ilya Kasnacheev


сб, 24 окт. 2020 г. в 16:04, narges saleh <[hidden email]>:
Hello Ilya
Yes, it happens all the time. It seems ignite forces the "client" establishing the jdbc connection into a client mode, even if I set client=false.  The sample code and config are attached. The question is how do I force JDBC connections from a server node.
thanks.

On Fri, Oct 23, 2020 at 10:31 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

Does this happen every time? If so, do you have a reproducer for the issue?

Regards,
--
Ilya Kasnacheev


пт, 23 окт. 2020 г. в 13:06, narges saleh <[hidden email]>:
Denis -- Just checked. I do specify my services to be deployed on server nodes only. Why would ignite think that I am running my code on a client node?

On Fri, Oct 23, 2020 at 3:50 AM narges saleh <[hidden email]> wrote:
Hi Denis 
What would make an ignite node a client node? The code is invoked via an ignite service deployed on each node and I am not setting the client mode anywhere. The code sets the jdbc connection to local and tries to execute a sql code on the node in some interval. By the way, I didn't know one could deploy a service on client nodes. Do I need to explicitly mark a node as a server node when deploying a service?
thanks 

On Thu, Oct 22, 2020 at 9:42 PM Denis Magda <[hidden email]> wrote:
The error message says you're attempting to run the query on a client node. If that's the case (if the service is deployed on the client node), then the local flag has no effect because client nodes don't keep your data locally but rather consume it from servers.

-
Denis


On Thu, Oct 22, 2020 at 6:26 PM narges saleh <[hidden email]> wrote:
Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.
dmagda dmagda
Reply | Threaded
Open this post in threaded view
|

Re: Execution of local SqlFieldsQuery on client node disallowed

Hi Narges,

Then just send a task to a required node. If the cluster topology changes while the task was running you can re-submit it to ensure the result is accurate.

-
Denis


On Fri, Oct 30, 2020 at 2:16 PM narges saleh <[hidden email]> wrote:
Hi Denis,

My problem with using affinity call/run is that I have to have the key in order to run it. I just want to run a function on the data on the current node, without knowing the key. Is there anyway to do this and also guard against partition rebalancing? 

thanks

On Tue, Oct 27, 2020 at 10:31 AM narges saleh <[hidden email]> wrote:
Thanks Ilya, Denis for the feedback.

On Mon, Oct 26, 2020 at 1:44 PM Denis Magda <[hidden email]> wrote:
Narges, 

Also, keep in mind that if a local query is executed over a partitioned table and it happens that partitions rebalancing starts, the local query might return a wrong result (if partitions the query was executed over were rebalanced to another node during the query execution time). To address this:
  1. Execute the local query inside of an affinityCall/Run function (https://ignite.apache.org/docs/latest/distributed-computing/collocated-computations#colocating-by-key). Those functions don't let partitions be evicted until the function execution completes.
  2. Don't use the local queries, let the Ignite SQL engine to run standard queries, and to take care of possible optimizations.

-
Denis


On Mon, Oct 26, 2020 at 8:50 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

You are using an Ignite Thick Client driver. As its name implies, it will start a local client node and then connect to it, without the option of doing local queries.

You need to use Ignite Thin JDBC driver: jdbc:ignite:thin://<server ip>
Then you can do local queries.

Regards,
--
Ilya Kasnacheev


сб, 24 окт. 2020 г. в 16:04, narges saleh <[hidden email]>:
Hello Ilya
Yes, it happens all the time. It seems ignite forces the "client" establishing the jdbc connection into a client mode, even if I set client=false.  The sample code and config are attached. The question is how do I force JDBC connections from a server node.
thanks.

On Fri, Oct 23, 2020 at 10:31 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

Does this happen every time? If so, do you have a reproducer for the issue?

Regards,
--
Ilya Kasnacheev


пт, 23 окт. 2020 г. в 13:06, narges saleh <[hidden email]>:
Denis -- Just checked. I do specify my services to be deployed on server nodes only. Why would ignite think that I am running my code on a client node?

On Fri, Oct 23, 2020 at 3:50 AM narges saleh <[hidden email]> wrote:
Hi Denis 
What would make an ignite node a client node? The code is invoked via an ignite service deployed on each node and I am not setting the client mode anywhere. The code sets the jdbc connection to local and tries to execute a sql code on the node in some interval. By the way, I didn't know one could deploy a service on client nodes. Do I need to explicitly mark a node as a server node when deploying a service?
thanks 

On Thu, Oct 22, 2020 at 9:42 PM Denis Magda <[hidden email]> wrote:
The error message says you're attempting to run the query on a client node. If that's the case (if the service is deployed on the client node), then the local flag has no effect because client nodes don't keep your data locally but rather consume it from servers.

-
Denis


On Thu, Oct 22, 2020 at 6:26 PM narges saleh <[hidden email]> wrote:
Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.
narges saleh narges saleh
Reply | Threaded
Open this post in threaded view
|

Re: Execution of local SqlFieldsQuery on client node disallowed

Hi Denis -- How would I detect that rebalancing started, or finished? Do I need to listen to the rebalancing events and abort the task in case a rebalancing has started? thanks.

On Fri, Oct 30, 2020 at 4:28 PM Denis Magda <[hidden email]> wrote:
Hi Narges,

Then just send a task to a required node. If the cluster topology changes while the task was running you can re-submit it to ensure the result is accurate.

-
Denis


On Fri, Oct 30, 2020 at 2:16 PM narges saleh <[hidden email]> wrote:
Hi Denis,

My problem with using affinity call/run is that I have to have the key in order to run it. I just want to run a function on the data on the current node, without knowing the key. Is there anyway to do this and also guard against partition rebalancing? 

thanks

On Tue, Oct 27, 2020 at 10:31 AM narges saleh <[hidden email]> wrote:
Thanks Ilya, Denis for the feedback.

On Mon, Oct 26, 2020 at 1:44 PM Denis Magda <[hidden email]> wrote:
Narges, 

Also, keep in mind that if a local query is executed over a partitioned table and it happens that partitions rebalancing starts, the local query might return a wrong result (if partitions the query was executed over were rebalanced to another node during the query execution time). To address this:
  1. Execute the local query inside of an affinityCall/Run function (https://ignite.apache.org/docs/latest/distributed-computing/collocated-computations#colocating-by-key). Those functions don't let partitions be evicted until the function execution completes.
  2. Don't use the local queries, let the Ignite SQL engine to run standard queries, and to take care of possible optimizations.

-
Denis


On Mon, Oct 26, 2020 at 8:50 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

You are using an Ignite Thick Client driver. As its name implies, it will start a local client node and then connect to it, without the option of doing local queries.

You need to use Ignite Thin JDBC driver: jdbc:ignite:thin://<server ip>
Then you can do local queries.

Regards,
--
Ilya Kasnacheev


сб, 24 окт. 2020 г. в 16:04, narges saleh <[hidden email]>:
Hello Ilya
Yes, it happens all the time. It seems ignite forces the "client" establishing the jdbc connection into a client mode, even if I set client=false.  The sample code and config are attached. The question is how do I force JDBC connections from a server node.
thanks.

On Fri, Oct 23, 2020 at 10:31 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

Does this happen every time? If so, do you have a reproducer for the issue?

Regards,
--
Ilya Kasnacheev


пт, 23 окт. 2020 г. в 13:06, narges saleh <[hidden email]>:
Denis -- Just checked. I do specify my services to be deployed on server nodes only. Why would ignite think that I am running my code on a client node?

On Fri, Oct 23, 2020 at 3:50 AM narges saleh <[hidden email]> wrote:
Hi Denis 
What would make an ignite node a client node? The code is invoked via an ignite service deployed on each node and I am not setting the client mode anywhere. The code sets the jdbc connection to local and tries to execute a sql code on the node in some interval. By the way, I didn't know one could deploy a service on client nodes. Do I need to explicitly mark a node as a server node when deploying a service?
thanks 

On Thu, Oct 22, 2020 at 9:42 PM Denis Magda <[hidden email]> wrote:
The error message says you're attempting to run the query on a client node. If that's the case (if the service is deployed on the client node), then the local flag has no effect because client nodes don't keep your data locally but rather consume it from servers.

-
Denis


On Thu, Oct 22, 2020 at 6:26 PM narges saleh <[hidden email]> wrote:
Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.
aealexsandrov aealexsandrov
Reply | Threaded
Open this post in threaded view
|

Re: Execution of local SqlFieldsQuery on client node disallowed

Hello,

You can use events:

https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/events/CacheRebalancingEvent.html

But in this case, you should wait until the rebalancing of all caches is completed.

Also you can use the web console tool:

https://apacheignite-tools.readme.io/v2.8.0/docs

And the last option is to use the following property:

https://www.gridgain.com/sdk/ee/latest/javadoc/org/apache/ignite/IgniteSystemProperties.html#IGNITE_WAIT_FOR_BACKUPS_ON_SHUTDOWN

With the current setting, your node, which was properly stopped, will not be stopped until there are backups in the cluster.

BR,
Andrew

11/1/2020 5:19 PM, narges saleh пишет:
Hi Denis -- How would I detect that rebalancing started, or finished? Do I need to listen to the rebalancing events and abort the task in case a rebalancing has started? thanks.

On Fri, Oct 30, 2020 at 4:28 PM Denis Magda <[hidden email]> wrote:
Hi Narges,

Then just send a task to a required node. If the cluster topology changes while the task was running you can re-submit it to ensure the result is accurate.

-
Denis


On Fri, Oct 30, 2020 at 2:16 PM narges saleh <[hidden email]> wrote:
Hi Denis,

My problem with using affinity call/run is that I have to have the key in order to run it. I just want to run a function on the data on the current node, without knowing the key. Is there anyway to do this and also guard against partition rebalancing? 

thanks

On Tue, Oct 27, 2020 at 10:31 AM narges saleh <[hidden email]> wrote:
Thanks Ilya, Denis for the feedback.

On Mon, Oct 26, 2020 at 1:44 PM Denis Magda <[hidden email]> wrote:
Narges, 

Also, keep in mind that if a local query is executed over a partitioned table and it happens that partitions rebalancing starts, the local query might return a wrong result (if partitions the query was executed over were rebalanced to another node during the query execution time). To address this:
  1. Execute the local query inside of an affinityCall/Run function (https://ignite.apache.org/docs/latest/distributed-computing/collocated-computations#colocating-by-key). Those functions don't let partitions be evicted until the function execution completes.
  2. Don't use the local queries, let the Ignite SQL engine to run standard queries, and to take care of possible optimizations.

-
Denis


On Mon, Oct 26, 2020 at 8:50 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

You are using an Ignite Thick Client driver. As its name implies, it will start a local client node and then connect to it, without the option of doing local queries.

You need to use Ignite Thin JDBC driver: jdbc:ignite:thin://<server ip>
Then you can do local queries.

Regards,
--
Ilya Kasnacheev


сб, 24 окт. 2020 г. в 16:04, narges saleh <[hidden email]>:
Hello Ilya
Yes, it happens all the time. It seems ignite forces the "client" establishing the jdbc connection into a client mode, even if I set client=false.  The sample code and config are attached. The question is how do I force JDBC connections from a server node.
thanks.

On Fri, Oct 23, 2020 at 10:31 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

Does this happen every time? If so, do you have a reproducer for the issue?

Regards,
--
Ilya Kasnacheev


пт, 23 окт. 2020 г. в 13:06, narges saleh <[hidden email]>:
Denis -- Just checked. I do specify my services to be deployed on server nodes only. Why would ignite think that I am running my code on a client node?

On Fri, Oct 23, 2020 at 3:50 AM narges saleh <[hidden email]> wrote:
Hi Denis 
What would make an ignite node a client node? The code is invoked via an ignite service deployed on each node and I am not setting the client mode anywhere. The code sets the jdbc connection to local and tries to execute a sql code on the node in some interval. By the way, I didn't know one could deploy a service on client nodes. Do I need to explicitly mark a node as a server node when deploying a service?
thanks 

On Thu, Oct 22, 2020 at 9:42 PM Denis Magda <[hidden email]> wrote:
The error message says you're attempting to run the query on a client node. If that's the case (if the service is deployed on the client node), then the local flag has no effect because client nodes don't keep your data locally but rather consume it from servers.

-
Denis


On Thu, Oct 22, 2020 at 6:26 PM narges saleh <[hidden email]> wrote:
Hi All,
I am trying to execute a sql query via a JDBC  connection on the service node (the query is run via a service), but I am getting Execution of local SqlFieldsQuery on client node disallowed.
The JDBC connection has the option local=true as I want to run the query on the data on the local node only.
Any idea why I am getting this error?

thanks.