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

Vladimir Ozerov commented on IGNITE-7421:
-----------------------------------------

Comments on implementation:
6) {{ClientListenerNioListener.onHandshake}} - we should never rely on 
exception messages. Instead, special subclass should be created.
7) {{BinaryContext.metadata}} - let's use {{Collections.emptyList}} instead of 
{{new ArrayList<>()}}
8) {{SerDes}} - abbreviations are not allowed in class and method names. Let's 
rename it to {{ClientUtils}}.
9) {{SerDes}} - configuration serialization/deserialization is already 
implemented({{ClientCacheConfigurationSerializer}}). I think all we need is to 
implement converter from CacheConfiguration to ClientCacheConfiguration and 
vice versa.
10) {{ClientOperation}} and {{TcpClientCache}} - duplicates logic of 
{{ClientMessageParser}}. Let's simply add two new methods to decode response 
and encode request to this class, and remove all lambdas from 
{{TcpClientCache}} - we should not define the same format twice.
11) Looks like binary metadata handling is not implemented at all. Without it 
the client will not be able to understand how to deserialize objects. You 
should request this information from the server transparently (see .NET client 
for reference). Otherwise user will have to register all classes explicitly 
which is a huge usability issue.
12) {{ReliableChannel}} - I think it makes sense to randomize the very first 
picked {{primary}} address for every new connection. This way we will have a 
kind of sticky load balance. This is how we implement failover in JDBC and 
ODBC. 

> Thin client Java API - data grid API
> ------------------------------------
>
>                 Key: IGNITE-7421
>                 URL: https://issues.apache.org/jira/browse/IGNITE-7421
>             Project: Ignite
>          Issue Type: New Feature
>          Components: thin client
>            Reporter: Alexey Kukushkin
>            Assignee: Alexey Kukushkin
>            Priority: Major
>              Labels: data, java, thin
>
> Implement below Java bindings for the thin client protocol. The client 
> configuration must support failover and encryption.
> Cache
>      JCache (limited)
>          getName(): String
>          put(key, val)
>          get(key): V
>          getAll(keys: Set): Map
>          containsKey(key): boolean
>          getAndPut(key, val): V
>          getAndReplace(key, val): V
>          getAndRemove(key): V
>          putIfAbsent
>          replace(key, val)
>          replace(key, oldVal, newVal)
>          putAll
>          clear
>          remove(key)
>          remove(key, val)
>          removeAll()
>          removeAll(keys: Set)
>          getConfiguration(clazz): Configuration
>          close()
>      size(modes: CachePeekMode...)
>      query(qry: Query): QueryCursor
>      query(qry: SqlFieldsQuery): FieldsQueryCursor<List>
>      withKeepBinary(): IgniteCache
>  Ignite
>      cache(name: String)
>      cacheNames(): Collection
>      binary(): IgniteBinary
>      createCache(name): Cache
>      getOrCreateCache(name): Cache
>      destroyCache(name)
>  Ignition
>      startClient(:ClientConfiguration): Ignite
>  ClientConfiguration(port, host, binaryConfiguration, sslConfiguration,
>  etc...)



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

Reply via email to