[ https://issues.apache.org/jira/browse/IGNITE-13154?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17139428#comment-17139428 ]
Ignite TC Bot commented on IGNITE-13154: ---------------------------------------- {panel:title=Branch: [pull/7936/head] Base: [master] : Possible Blockers (1)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1} {color:#d04437}Binary Objects{color} [[tests 1|https://ci.ignite.apache.org/viewLog.html?buildId=5396940]] * IgniteBinaryObjectsTestSuite: BinaryMetadataRemoveWithPersistenceTest.testRemoveTypeAndClusterRestart - New test duration 68s is more that 1 minute {panel} [TeamCity *--> Run :: All* Results|https://ci.ignite.apache.org/viewLog.html?buildId=5395644&buildTypeId=IgniteTests24Java8_RunAll] > Introduce the ability for a user to manage binary types > ------------------------------------------------------- > > Key: IGNITE-13154 > URL: https://issues.apache.org/jira/browse/IGNITE-13154 > Project: Ignite > Issue Type: Improvement > Components: binary > Reporter: Taras Ledkov > Assignee: Taras Ledkov > Priority: Major > Fix For: 2.9 > > Time Spent: 10m > Remaining Estimate: 0h > > We need a way to change schema (including unsupported changes, such as column > type change) without cluster restart. This is for the case when all data > associated with the binary type has been removed, so removing the old schema > is safe. > Now users must stop the cluster and remove the folder with binary metadata > manually. > The proposed way is to introduce internal API to manage binary types and > public command line interface (via control.sh). That way one can remove a > cache from the cluster, then unregister corresponding binary types, then > launch a new version of an application that would register the new schema and > reload the data. > *The current implementation has restrictions:* > - all cluster nodes must support remove type feature. > - the cluster must not contains data with type to remove. > - operation of the update type must not be launched on the cluster for the > type to remove (operation examples: put into cache, > BinaryObjectBuilder#build). > - client nodes process metadata operation asynchronously so type may be > removed at the client after any delay after the remove type operation is > completed. > - if the node that contains the old version of the type joins to the cluster > where type was removed the type is propagated to cluster metadata (because > metadata tombstone not supported). > - if the node that contains the old version of the type cannot join to the > cluster where type was removed and then updated to the new version (because > metadata versioned tombstone not supported). > So, user scenarios looks like: > # Be sure that all server nodes supports remove type feature. > # Remove caches contains the data with type to remove. > # Stops the client node with older version. > # Stops all operation with type to remove (don't create binary objects, don't > run compute jobs with type to remove). > # Remove the type on the stable topology (and production destination topolog). > # Waits any delay (depends on the cluster size and clients count) > # Produce operations with new version of the type. > *Proposed command line interface* > New commands (all commands are _experimental_ ): > - {{--meta list}} prints info about all available binary types: > {{typeId=<ID>, typeName=<name>, fields=<fields_count>, > schemas=<schemas_count>, isEnum=<bool>}} > - {{\-\-meta details (\-\- typeId <ID>| \-\-typeName <name>)}} prints > detailed info info about specified type. The type may be specified by type > name or type ID. > output example: > {code} > typeId=0x1FBFBC0C (532659212) > typeName=TypeName1 > Fields: > name=fld3, type=long[], fieldId=0x2FFF95 (3145621) > name=fld2, type=double, fieldId=0x2FFF94 (3145620) > name=fld1, type=Date, fieldId=0x2FFF93 (3145619) > name=fld0, type=int, fieldId=0x2FFF92 (3145618) > Schemas: > schemaId=0x6C5CC179 (1818018169), fields=[fld0] > schemaId=0x70E46431 (1894016049), fields=[fld0, fld1, fld2, fld3] > {code} > - {{\-\-meta remove (\-\- typeId <ID>| \-\-typeName <name>) [\-\-out > <file_name>]}} removes metadata for specified type form cluster and saves the > removed metadata to the specified file. If the file name isn't specified the > output file name is: {{<typeId>.bin}} > The command requires confirmation. > *N.B.*: The all session of thin clients (ODBC, JDBC, thin client) are closed > (to cleanup local cache of the binary metadata). > - {{\-\-meta update \-\-in <file_name>]}} update cluster metadata from > specified file (file name is required) > The command requires confirmation. -- This message was sent by Atlassian Jira (v8.3.4#803005)