[
https://issues.apache.org/jira/browse/IGNITE-21899?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18014850#comment-18014850
]
Aleksandr Popov edited comment on IGNITE-21899 at 8/19/25 11:21 AM:
--------------------------------------------------------------------
* {*}Migration Reasons{*}:
* Migration was needed because the persisted Ignite cache still contains
objects serialized with the legacy class name
(org.apache.ignite.internal.util.GridIntList), while the new code expects
org.apache.ignite.tcbot.common.util.GridIntList.
* On startup, the new bot tries to deserialize fields like statistics.keys or
buildParameters.keys into the new type, but the binary payload references the
old FQN, causing IllegalArgumentException and BinaryObjectException.
* {*}What was done{*}:
* Implemented backward‑compatible handling for legacy GridIntList so the bot
can read old Ignite persistence without BinaryObjectException (e.g., in
FatBuildCompacted/ParametersCompacted).
* Added an offline migrator that scans Ignite persistence (work/*) in
keepBinary mode and replaces any org.apache.ignite.internal.util.GridIntList
with org.apache.ignite.tcbot.common.util.GridIntList (with safe int[] fallback
if needed).
* The migrator performs a recursive transform across cache values (fields,
collections, maps), rewrites only changed entries via BinaryObjectBuilder, and
supports dry‑run/apply modes.
* Verified on a copied work directory with synthetic data: after migration the
new bot (Ignite 2.16) starts and renders tracked pages without deserialization
failures.
was (Author: JIRAUSER307332):
* Implemented backward‑compatible handling for legacy GridIntList so the bot
can read old Ignite persistence without BinaryObjectException (e.g., in
FatBuildCompacted/ParametersCompacted).
* Added an offline migrator that scans Ignite persistence (work/*) in
keepBinary mode and replaces any org.apache.ignite.internal.util.GridIntList
with org.apache.ignite.tcbot.common.util.GridIntList (with safe int[] fallback
if needed).
* The migrator performs a recursive transform across cache values (fields,
collections, maps), rewrites only changed entries via BinaryObjectBuilder, and
supports dry‑run/apply modes.
* Verified on a copied work directory with synthetic data: after migration the
new bot (Ignite 2.16) starts and renders tracked pages without deserialization
failures.
> Fix for TC Bot with Ignite version 2.16
> ---------------------------------------
>
> Key: IGNITE-21899
> URL: https://issues.apache.org/jira/browse/IGNITE-21899
> Project: Ignite
> Issue Type: Task
> Reporter: Oleg Valuyskiy
> Assignee: Oleg Valuyskiy
> Priority: Major
> Labels: ise
>
> It's impossible to build the project with Apache Ignite 2.16, as
> GridIntList#clear(), which was removed in the 2.16 version
> (https://issues.apache.org/jira/browse/IGNITE-20143), is used in TC Bot. All
> in all, GridIntList is a private API and should not be used in TC Bot.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)