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

Vyacheslav Koptilin commented on IGNITE-17747:
----------------------------------------------

Hello [~Arthur Wang],

The new instance of a queue after cluster restart can be obtained via the same 
API method: 
* _Ignite.queue(String name, int cap, @Nullable CollectionConfiguration cfg)_

In accordance with the doc, this method create a new queue if it has not been 
created yet (this is your case I suppose):
{noformat}
    /**
     * Will get a named queue from cache and create one if it has not been 
created yet and {@code cfg} is not
     * {@code null}.
     * If queue is present already, queue properties will not be changed. Use
     * collocation for {@link CacheMode#PARTITIONED} caches if you have lots of 
relatively
     * small queues as it will make fetching, querying, and iteration a lot 
faster. If you have
     * few very large queues, then you should consider turning off collocation 
as they simply
     * may not fit in a single node's memory.
     *
     * @param name Name of queue.
     * @param cap Capacity of queue, {@code 0} for unbounded queue. Ignored if 
{@code cfg} is {@code null}.
     * @param cfg Queue configuration if new queue should be created.
     * @param <T> Type of the elements in queue.
     * @return Queue with given properties.
     * @throws IgniteException If queue could not be fetched or created.
     */
    public <T> IgniteQueue<T> queue(String name, int cap, @Nullable 
CollectionConfiguration cfg) throws IgniteException;
{noformat}
Please take a look at 
[IgniteClientReconnectCollectionsTest.testCollectionsReconnectClusterRestart 
|https://github.com/apache/ignite/blob/master/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectCollectionsTest.java#L70]

So, you just need to call _Ignite.queue()_ method after your server restarted 
and provide _CollectionConfiguration_.

You can listen for _EVT_CLIENT_NODE_RECONNECTED_ in order to detect that client 
node reconnected to the cluster 
[https://ignite.apache.org/docs/latest/clustering/connect-client-nodes#client-disconnectedreconnected-events]

Please don't hesitate to reopen the issue if I missed something.

> When the Ignite server is restarted, the client cannot destroy the 
> instantiated queue and reinstantiate it, except to restart the client 
> application
> ----------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-17747
>                 URL: https://issues.apache.org/jira/browse/IGNITE-17747
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>            Reporter: Arthur Wang
>            Priority: Major
>         Attachments: log.png
>
>
> In the case of Ignite single-node deployment, when the Ignite server is 
> restarted, the client cannot destroy the instantiated queue and reinstantiate 
> it, except to restart the client application. This means that Ignite queue 
> does not take advantage of getOrCreate's recovery mechanism like the k-v 
> caches.Is there any good practice to restore the usability of Queue without 
> restarting the client?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to