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