[ 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)