Configuration and Validation Changes
This topic covers the configuration defaults that change, the properties GridGain removes, its stricter validation, and the binary object field-ordering setting.
Server Configuration Differences
Changed Defaults
This section applies to every migration: review the table and decide each value deliberately, whether you restore the Ignite behavior or keep the GridGain default.
GridGain 8 changes a number of configuration defaults relative to Apache Ignite 2.
| Setting | Ignite default | GridGain default |
|---|---|---|
|
|
|
|
|
|
|
unlimited (field absent) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Thin client partition/affinity awareness |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
To preserve Ignite behavior, set each changed default explicitly. Use the following as a starting template and adapt it to your deployment. It restores the server-side defaults that differ between Apache Ignite 2.x and GridGain 8; the settings that live in cache or client code are listed separately below.
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<!-- GG default STOP; Ignite's USE_FAILURE_HANDLER is absent in GG,
so choose a GG policy deliberately rather than restoring the Ignite value. -->
<property name="segmentationPolicy" value="STOP"/>
<!-- GG default: 2 -->
<property name="rebalanceBatchesPrefetchCount" value="3"/>
<property name="dataStorageConfiguration">
<bean class="org.apache.ignite.configuration.DataStorageConfiguration">
<!-- GG default: true -->
<property name="metricsEnabled" value="false"/>
<property name="defaultDataRegionConfiguration">
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="metricsEnabled" value="false"/>
</bean>
</property>
</bean>
</property>
<!-- Restore Ignite's unlimited SQL memory (GG default: 60% of heap)
and long-query warning timeout (GG default: 1000 ms). -->
<property name="sqlConfiguration">
<bean class="org.apache.ignite.configuration.SqlConfiguration">
<property name="sqlGlobalMemoryQuota" value="0"/>
<property name="longQueryWarningTimeout" value="3000"/>
</bean>
</property>
<!-- GG aborts transactions during a partition map exchange after 60s; Ignite does not (0). -->
<property name="transactionConfiguration">
<bean class="org.apache.ignite.configuration.TransactionConfiguration">
<property name="txTimeoutOnPartitionMapExchange" value="0"/>
</bean>
</property>
<!-- GG default: 4096 -->
<property name="communicationSpi">
<bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
<property name="messageQueueLimit" value="0"/>
</bean>
</property>
<!-- GG default: 262144 (256 KB) buffers; 0 = OS default, as in Ignite. -->
<property name="clientConnectorConfiguration">
<bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
<property name="socketSendBufferSize" value="0"/>
<property name="socketReceiveBufferSize" value="0"/>
</bean>
</property>
</bean>
Some Ignite defaults are restored through system properties (JVM -D arguments or environment variables) rather than configuration:
# GG triggers a checkpoint at 75% of the WAL archive size; Ignite at 25%.
IGNITE_CHECKPOINT_TRIGGER_ARCHIVE_SIZE_PERCENTAGE=0.25
# GG enables data-streamer overwrite by default; Ignite does not.
# (Or call allowOverwrite(false) per streamer in client code.)
IGNITE_DATA_STREAMER_ALLOW_OVERWRITE=false
The remaining defaults are not server-side configuration and must be set where they apply:
-
readFromBackup (per cache). Set
readFromBackup=trueon eachCacheConfigurationor cache template (GG defaultfalse). -
Thin-client affinity awareness (client code). Set
ClientConfiguration.setAffinityAwarenessEnabled(true)(GG defaultfalse; renamed fromsetPartitionAwarenessEnabled). -
Discovery (environment-specific). Ignite defaults to multicast discovery. If your cluster relied on it, configure a
TcpDiscoveryMulticastIpFinderor supply the static address list; GridGain defaults toTcpDiscoveryVmIpFinder.
Several of these defaults change behavior in ways that pass functional tests and surface only later: under load, on large data, or during a network event. The ones most likely to catch you out:
- Partition/affinity awareness (clients)
-
Ignite enables it; GridGain disables it (and renames
setPartitionAwarenessEnabledtosetAffinityAwarenessEnabled). With it off, thin clients no longer route each request to the node that owns the key, so every operation takes an extra network hop. This passes functional tests but shows up as a latency and throughput regression under load. Re-enable it explicitly unless you have a reason not to. - Discovery IP finder
-
Ignite defaults to multicast discovery; GridGain defaults to the static
TcpDiscoveryVmIpFinder, pre-seeded with127.0.0.1:47500..47600only. Nodes on the same host still find each other, but nodes on different hosts no longer do. A multi-host cluster that relied on multicast will not form until you supply the real node addresses or configure the multicast IP finder. readFromBackup-
Ignite can serve a read from a local backup copy; GridGain (default
false) routes every read to the primary. Results are unaffected, but read load concentrates on primary nodes and latency can rise where you previously benefited from backup locality. Set it per cache to restore the Ignite behavior. - SQL memory quota (
sqlGlobalMemoryQuota) -
Ignite runs SQL with no global memory quota; GridGain caps it at 60% of heap. A query that ran in Ignite can fail with a quota error the first time it processes a large result set, not during ordinary testing. Set it to
0for unlimited, or tune it. See SQL Changes. - Data streamer overwrite (
allowOverwrite) -
Ignite’s
IgniteDataStreamerdoes not overwrite existing keys by default; GridGain enables overwrite. A streaming job that assumed existing entries were left in place will now replace them. SetallowOverwrite(false)in client code if you relied on the Ignite behavior. - Transaction timeout on partition map exchange (
txTimeoutOnPartitionMapExchange) -
Ignite does not time out transactions during a partition map exchange (PME) by default (
0); GridGain aborts them after 60 seconds. During a long PME, such as a node join or rebalance on a large cluster, transactions that Ignite would have let run can fail in GridGain. Set it to0to restore the Ignite behavior, or keep the timeout as a safeguard against PME stalls. - Checkpoint trigger by WAL archive size (
IGNITE_CHECKPOINT_TRIGGER_ARCHIVE_SIZE_PERCENTAGE) -
Ignite triggers a checkpoint when the WAL archive reaches 25% of its maximum size; GridGain waits until 75%. GridGain checkpoints less often, so WAL archives grow larger and crash recovery can take longer. Set the system property to
0.25to match Ignite. - Segmentation policy
-
Ignite’s default
USE_FAILURE_HANDLERdelegates the response to your configured failure handler; that value does not exist in GridGain, whose default isSTOP: a segmented node stops itself. If you relied on a custom failure-handler response to network segmentation, choose a GridGain segmentation policy deliberately.
Removed Configuration Properties
You can skip this section if you did not configure CDC, snapshots, Calcite, multi-disk storage, or the SQL plan-history and validation settings listed below.
GridGain 8 removes two kinds of properties, and they fail in opposite ways.
Configuration properties (XML or bean) fail loudly: a property tied to a removed feature will not parse, and GridGain will not start until you remove or replace it:
-
CDC:
cdcWalPath,cdcEnabled -
SQL:
queryEnginesConfiguration,sqlPlanHistorySize,validationEnabled,txAwareQueriesEnabled -
Storage:
walForceArchiveTimeout,writeRecoveryDataOnCheckpoint, multi-disk storage paths -
Snapshots and service interceptors: all related properties
System properties (IGNITE_*, set as JVM -D arguments or environment variables) fail silently: GridGain ignores an unrecognized one instead of failing startup, so a setting you relied on can disappear with no error. Two are worth checking:
IGNITE_CALCITE_*andIGNITE_PERF_STAT_*-
No effect, because the Calcite SQL engine and Performance Statistics subsystems are both absent. See SQL Changes.
IGNITE_USE_BINARY_ARRAYS-
If you explicitly set this to
true(it defaults tofalse), GridGain ignores it and does not support that array format. Confirm it was unset before migrating data.
Stricter Validation
GridGain rejects things Ignite allowed: duplicate SQL schema or index names, invalid cache names, and nodes that disagree on the binary field-sort setting (see Binary Object Field Ordering).
Binary Object Field Ordering
The IGNITE_BINARY_SORT_OBJECT_FIELDS system property controls the order in which a binary object’s fields are laid out on disk and on the wire. The value must be the same on every node and every client, and it must match the value that was set when the persisted data was written.
The default is false on both Apache Ignite 2.x and GridGain 8.x. If your Ignite cluster never set this property, the migration needs no action; skip the rest of this section.
1. Check the Source Value
Search for IGNITE_BINARY_SORT_OBJECT_FIELDS in the JVM arguments and environment of the running Ignite nodes. If it is not set, the source uses the default. Otherwise, record the value.
2. Apply the Value in GridGain
Set -DIGNITE_BINARY_SORT_OBJECT_FIELDS=<source-value> as a JVM system property on every GridGain server node and every client. Roll it out everywhere at once. Any node or client with a different value is rejected at startup.
3. Verify After Start
After the first GridGain node starts, run two checks:
-
Look at the logs. A topology-validation or handshake error mentioning
IGNITE_BINARY_SORT_OBJECT_FIELDSmeans a server or client is running with a different value. -
Smoke-test a known key. Run a key-based
getagainst a row you know exists. If it returns nothing whileSELECTover the same row succeeds, GridGain is using a different value than what is on disk.
For background, see Working with Binary Objects.
© 2026 GridGain Systems, Inc. All Rights Reserved. Privacy Policy | Legal Notices. GridGain® is a registered trademark of GridGain Systems, Inc.
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.