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

Sergey Antonov updated IGNITE-11161:
------------------------------------
    Description: 
Scenario:
 * Start server node with predefined cache and activate cluster.
 * Connect thin java client to cluster
 * Put entry to the cache with user defined key (custom class) from server node.
 * Try get value from thin client by the same key. 

Expected:
Returns putted value

Actual: 
Returns null

Reproducer:

{code:java}
import java.util.Objects;
import org.apache.ignite.Ignition;
import org.apache.ignite.client.IgniteClient;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.ClientConfiguration;
import org.apache.ignite.configuration.ClientConnectorConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;

@RunWith(JUnit4.class)
public class ClientTestGet extends GridCommonAbstractTest {

    @Override protected IgniteConfiguration getConfiguration(String 
igniteInstanceName) throws Exception {
        return super.getConfiguration(igniteInstanceName)
            .setClientConnectorConfiguration(new ClientConnectorConfiguration())
            .setDataStorageConfiguration(new DataStorageConfiguration())
            .setCacheConfiguration(new 
CacheConfiguration().setName(DEFAULT_CACHE_NAME).setWriteSynchronizationMode(FULL_SYNC));
    }

    @Override protected void beforeTest() throws Exception {
        super.beforeTest();

        cleanPersistenceDir();
    }

    @Test
    public void testGet() throws Exception {
        IgniteConfiguration serverCfg = getConfiguration("server");

        IgniteEx server = startGrid(serverCfg);

        server.cluster().active(true);

        IgniteClient client = Ignition.startClient(
            new ClientConfiguration().setAddresses("127.0.0.1:" + 
serverCfg.getClientConnectorConfiguration().getPort())
        );

        server.cache(DEFAULT_CACHE_NAME).put(new Key(0), 0);

        Object serverVal = server.cache(DEFAULT_CACHE_NAME).get(new Key(0));

        Object clientVal = client.cache(DEFAULT_CACHE_NAME).get(new Key(0));

        assertEquals(serverVal, clientVal);
    }

    private static class Key {
        private final int i;

        private Key(int i) {
            this.i = i;
        }

        /** {@inheritDoc} */
        @Override public boolean equals(Object o) {
            if (this == o)
                return true;

            if (o == null || getClass() != o.getClass())
                return false;

            return i == ((Key)o).i;
        }

        /** {@inheritDoc} */
        @Override public int hashCode() {
            return Objects.hash(i);
        }

        /** {@inheritDoc} */
        @Override public String toString() {
            return S.toString(Key.class, this);
        }
    }
}
{code}



  was:
Scenario:
 * Start server node with predefined cache and activate cluster.
 * Connect thin java client to cluster
 * Put entry to the cache with user defined key (custom class) from server node.
 * Try get value from thin client by the same key. 

Expected:
 * Returns putted value

Actual: 
 * Returns null

Reproducer:

{code:java}
import java.util.Objects;
import org.apache.ignite.Ignition;
import org.apache.ignite.client.IgniteClient;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.ClientConfiguration;
import org.apache.ignite.configuration.ClientConnectorConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;

@RunWith(JUnit4.class)
public class ClientTestGet extends GridCommonAbstractTest {

    @Override protected IgniteConfiguration getConfiguration(String 
igniteInstanceName) throws Exception {
        return super.getConfiguration(igniteInstanceName)
            .setClientConnectorConfiguration(new ClientConnectorConfiguration())
            .setDataStorageConfiguration(new DataStorageConfiguration())
            .setCacheConfiguration(new 
CacheConfiguration().setName(DEFAULT_CACHE_NAME).setWriteSynchronizationMode(FULL_SYNC));
    }

    @Override protected void beforeTest() throws Exception {
        super.beforeTest();

        cleanPersistenceDir();
    }

    @Test
    public void testGet() throws Exception {
        IgniteConfiguration serverCfg = getConfiguration("server");

        IgniteEx server = startGrid(serverCfg);

        server.cluster().active(true);

        IgniteClient client = Ignition.startClient(
            new ClientConfiguration().setAddresses("127.0.0.1:" + 
serverCfg.getClientConnectorConfiguration().getPort())
        );

        server.cache(DEFAULT_CACHE_NAME).put(new Key(0), 0);

        Object serverVal = server.cache(DEFAULT_CACHE_NAME).get(new Key(0));

        Object clientVal = client.cache(DEFAULT_CACHE_NAME).get(new Key(0));

        assertEquals(serverVal, clientVal);
    }

    private static class Key {
        private final int i;

        private Key(int i) {
            this.i = i;
        }

        /** {@inheritDoc} */
        @Override public boolean equals(Object o) {
            if (this == o)
                return true;

            if (o == null || getClass() != o.getClass())
                return false;

            return i == ((Key)o).i;
        }

        /** {@inheritDoc} */
        @Override public int hashCode() {
            return Objects.hash(i);
        }

        /** {@inheritDoc} */
        @Override public String toString() {
            return S.toString(Key.class, this);
        }
    }
}
{code}




> ClientCache get by user defined key returns null
> ------------------------------------------------
>
>                 Key: IGNITE-11161
>                 URL: https://issues.apache.org/jira/browse/IGNITE-11161
>             Project: Ignite
>          Issue Type: Bug
>          Components: thin client
>    Affects Versions: 2.7
>            Reporter: Sergey Antonov
>            Assignee: Sergey Antonov
>            Priority: Critical
>             Fix For: 2.8
>
>
> Scenario:
>  * Start server node with predefined cache and activate cluster.
>  * Connect thin java client to cluster
>  * Put entry to the cache with user defined key (custom class) from server 
> node.
>  * Try get value from thin client by the same key. 
> Expected:
> Returns putted value
> Actual: 
> Returns null
> Reproducer:
> {code:java}
> import java.util.Objects;
> import org.apache.ignite.Ignition;
> import org.apache.ignite.client.IgniteClient;
> import org.apache.ignite.configuration.CacheConfiguration;
> import org.apache.ignite.configuration.ClientConfiguration;
> import org.apache.ignite.configuration.ClientConnectorConfiguration;
> import org.apache.ignite.configuration.DataStorageConfiguration;
> import org.apache.ignite.configuration.IgniteConfiguration;
> import org.apache.ignite.internal.IgniteEx;
> import org.apache.ignite.internal.util.typedef.internal.S;
> import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
> import org.junit.Test;
> import org.junit.runner.RunWith;
> import org.junit.runners.JUnit4;
> import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
> @RunWith(JUnit4.class)
> public class ClientTestGet extends GridCommonAbstractTest {
>     @Override protected IgniteConfiguration getConfiguration(String 
> igniteInstanceName) throws Exception {
>         return super.getConfiguration(igniteInstanceName)
>             .setClientConnectorConfiguration(new 
> ClientConnectorConfiguration())
>             .setDataStorageConfiguration(new DataStorageConfiguration())
>             .setCacheConfiguration(new 
> CacheConfiguration().setName(DEFAULT_CACHE_NAME).setWriteSynchronizationMode(FULL_SYNC));
>     }
>     @Override protected void beforeTest() throws Exception {
>         super.beforeTest();
>         cleanPersistenceDir();
>     }
>     @Test
>     public void testGet() throws Exception {
>         IgniteConfiguration serverCfg = getConfiguration("server");
>         IgniteEx server = startGrid(serverCfg);
>         server.cluster().active(true);
>         IgniteClient client = Ignition.startClient(
>             new ClientConfiguration().setAddresses("127.0.0.1:" + 
> serverCfg.getClientConnectorConfiguration().getPort())
>         );
>         server.cache(DEFAULT_CACHE_NAME).put(new Key(0), 0);
>         Object serverVal = server.cache(DEFAULT_CACHE_NAME).get(new Key(0));
>         Object clientVal = client.cache(DEFAULT_CACHE_NAME).get(new Key(0));
>         assertEquals(serverVal, clientVal);
>     }
>     private static class Key {
>         private final int i;
>         private Key(int i) {
>             this.i = i;
>         }
>         /** {@inheritDoc} */
>         @Override public boolean equals(Object o) {
>             if (this == o)
>                 return true;
>             if (o == null || getClass() != o.getClass())
>                 return false;
>             return i == ((Key)o).i;
>         }
>         /** {@inheritDoc} */
>         @Override public int hashCode() {
>             return Objects.hash(i);
>         }
>         /** {@inheritDoc} */
>         @Override public String toString() {
>             return S.toString(Key.class, this);
>         }
>     }
> }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to