DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
| ID | IEP-119 |
| Author | |
| Sponsor | |
| Created | 08.02.2024 |
| Status | IN PROGRESS |
Currently, byte[] → BinaryObject → POJO logic, BinaryMarshaller logic are highly coupled with Ignite core codebase.
This restricts Ignite improvement in the following ways:
ignite-core module, because, binary infrastracture inside of core.To unlock further improvements of Ignite in this aspects and possibly provide a way to plugin different implementation of Binary serdes (msgpack, jsonb as an examples) we must to refactor Ignite and extract all Binary related classes to separate module
providing clear abstractions and default implementaion.
Two new modules must be created:
ignite-commons - common Ignite class from packages like `org.apache.ignite.lang`, `org.apache.ignite.internal.util.*` which are used all over codebase.IgniteException , ToStringBuilder , F , U IgniteClosure and others used both in thin client and core code. ignite-binary-object-api - "public" interfaces to be used in ignite code. Here we use term "public" in a sense that other part of Ignite codebase know about those classes, but don't know anything about implementation.ignite-binary-object-impl - implementation of binary infrastructure.ignite-commons .ignite-commons are packed in ignite-core.jar.ignite-binary-object-api which will depends only on ignite-commons .ignite-commons and ignite-binary-object-api are packed in ignite-core.jar.ignite-binary-object-impl which depends only on ignite-commons and ignite-binary-object-api .ignite-core and ignite-binary-object-impl . ignite-core knows about ignite-binary-object-api only.| # | Binary infrastructure public classes | Is part of internal API | Complexity to hide | |
|---|---|---|---|---|
| 1 | org.apache.ignite.internal.binary.BinaryArray | No | hard | |
| 2 | org.apache.ignite.internal.binary.BinaryClassDescriptor | No | ||
| 3 | org.apache.ignite.internal.binary.BinaryContext | Yes | - | |
| 4 | org.apache.ignite.internal.binary.BinaryEnumObjectImpl | No | hard | |
| 5 | org.apache.ignite.internal.binary.BinaryFieldMetadata | Yes | ||
| 6 | org.apache.ignite.internal.binary.BinaryMarshaller | Yes | - | |
| 7 | org.apache.ignite.internal.binary.BinaryMetadata | Yes | - | |
| 8 | org.apache.ignite.internal.binary.BinaryReaderHandles | No | medium | |
| 9 | org.apache.ignite.internal.binary.BinarySchema | No | medium | |
| 10 | org.apache.ignite.internal.binary.BinaryTypeImpl | Yes | - | |
| 11 | org.apache.ignite.internal.binary.BinaryUtils | Yes | - | |
| 12 | org.apache.ignite.internal.binary.GridBinaryMarshaller | Yes | - |
IgniteClient, TcpIgniteClient classes with all dependecies to ignite-thin-client module. ignite-thin-client must have the following dependencies:ignite-commons , ignite-binary-object-api .ignite-binary-object-impl . IEP concentrated on code structure only and must not break any public benavior or API.