Red Hat Data Grid 8.1 Release Notes

Red Hat Data Grid 8.1

Get release information for Data Grid 8.1

Red Hat Customer Content Services

Abstract

Find out about features and enhancements in Data Grid 8.1, learn about current known issues and resolved issues, review the configurations that Red Hat supports, and more.

Chapter 1. Red Hat Data Grid

Data Grid is a high-performance, distributed in-memory data store.

Schemaless data structure
Flexibility to store different objects as key-value pairs.
Grid-based data storage
Designed to distribute and replicate data across clusters.
Elastic scaling
Dynamically adjust the number of nodes to meet demand without service disruption.
Data interoperability
Store, retrieve, and query data in the grid from different endpoints.

1.1. Data Grid Documentation

Documentation for Data Grid is available on the Red Hat customer portal.

1.2. Data Grid Downloads

Access the Data Grid Software Downloads on the Red Hat customer portal.

Note

You must have a Red Hat account to access and download Data Grid software.

Chapter 2. Data Grid Release Information

Learn about new features and get the latest Data Grid release information.

2.1. What’s New in Data Grid 8.1

Data Grid 8.1 improves usability, increases performance, and enhances security. Find out what’s new in 8.1.

2.1.1. Cross-Site Replication

Full Support on Red Hat OpenShift

Data Grid cross-site replication is now fully supported with Data Grid Operator. Create global Data Grid clusters on OpenShift that back up across your data centers.

See Configuring Cross-Site Replication on OpenShift.

Conflict Resolution for Asynchronous Backups

Data Grid 8.1 significantly improves asynchronous backups when using cross-site replication capabilities. This release introduces detection for conflicting entries and a resolution mechanism to guarantee data consistency when you have multiple active sites replicating between each other.

Find out complete details and learn how Data Grid detects and resolves conflicts in the documentation.

See Concurrent Writes and Conflicting Entries.

Multiple Site Masters

Data Grid uses JGroups RELAY2 protocol to facilitate inter-cluster communication for cross-site replication. Each cluster has a site master that handle traffic between sites.

Note

Data Grid Operator controls which nodes become site master when using cross-site replication on OpenShift. You cannot modify the RELAY2 configuration with Data Grid Operator.

As of 8.1, you can set multiple site masters in your RELAY2 configuration to balance inter-cluster traffic. Use the max_site_masters attribute as in the following example:

<relay.RELAY2 site="NYC" 1
              max_site_masters="100"/> 2
1
Defines the name of the local site.
2
Specifies the number of site masters. The default value is 1. You can increase the value to any number greater than one. If you set a value that is equal to or greater than the number of nodes in your Data Grid cluster then all nodes act as site masters.

See Setting Up Cross-Site Replication.

2.1.2. Data Grid Server

Data Grid Server 8.1 offers enhanced security and new configuration options.

Automatic Authentication

Data Grid Server uses a default property realm that automatically enforces user authentication on remote endpoints.

See Adding Data Grid Credentials to create usernames and passwords for accessing the Data Grid Console, Command Line Interface (CLI), REST API, or Hot Rod endpoint.

See Securing Access to Data Grid Servers to learn about configuring different authentication mechanisms.

Note

If you installed Data Grid Server 8.0, upgrade to 8.1 and use the configuration schema with default security. See Server Migration Details.

Shared Data Sources for JDBC Cache Stores

Data Grid Server lets you create shared data sources when using JDBC cache stores to persist cache entries to databases.

See Configuring Data Grid Server Data Sources.

Global Roles for Cache Authorization

If you configure cache authorization with role-based access, roles that you declare in the global configuration apply unless you explicitly declare roles in your caches.

<infinispan>
   <cache-container name="default">
      <security>
         <authorization> 1
            <identity-role-mapper/>
            <role name="AdminRole" permissions="ALL"/>
            <role name="ReaderRole" permissions="READ"/>
            <role name="WriterRole" permissions="WRITE"/>
            <role name="SupervisorRole" permissions="READ WRITE EXEC BULK_READ"/>
         </authorization>
      </security>
      <distributed-cache name="secured">
         <security>
            <authorization/> 2
         </security>
      </distributed-cache>
   </cache-container>
   ...
</infinispan>
1
Defines user roles that map to permissions.
2
Implicitly uses all authorization roles in the global configuration.

See Configuring Data Grid Authorization.

2.1.3. Data Grid Operator

Data Grid Operator 8.1 provides new features and improvements for running Data Grid on Red Hat OpenShift.

Cross-Site Replication

Data Grid Operator improves setup and management of cross-site replication capabilities for Data Grid clusters running on OpenShift.

See Cross-Site Replication with Data Grid Operator.

Expose Services via Routes

Data Grid Operator updates the spec.expose resource so you can create OpenShift Routes with passthrough encryption to make Data Grid clusters available on the network.

See Exposing Data Grid Through Routes.

Automatic Scaling

Data Grid Operator can automatically scale the default cache on Cache service nodes up or down based on memory usage.

See Configuring Automatic Scaling.

Automatic Encryption with the OpenShift Service CA

By default, if the Red Hat OpenShift service CA is available, Data Grid Operator encrypts client connections.

See Securing Data Grid Connections.

Cache Custom Resource

You can now create caches with Data Grid service nodes with the Cache custom resource.

Important

Creating caches with Data Grid Operator is available as a technology preview.

Technology Preview features or capabilities are not supported with Red Hat production service-level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them for production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.

See Creating Data Grid Caches.

2.1.4. Data Grid Command Line Interface (CLI)

Data Grid 8.1 CLI provides additional capabilities for server configuration, user management, and troubleshooting.

User Management

As of 8.1, the CLI provides a user command that replaces the user-tool script included in Data Grid Server distributions.

The user command lets you manage user credentials and groups for property-based security realms. For example, the following commands adds credentials that have "admin" privileges:

[disconnected]> user create myusername --password=qwer1234! --groups=admin

See Adding Data Grid Credentials.

Logging Configuration

You can now modify server logging configuration at runtime. For example, to enable DEBUG log messages for the org.infinispan category:

[hostname@cluster//containers/default]> logging set --level=DEBUG org.infinispan

See Changing Data Grid Server Logging Configuration at Runtime.

Diagnostic Reports

Data Grid Server provides an aggregate log that includes information, such as thread dumps, memory configuration, and open sockets, that you can use to monitor and troubleshoot deployments.

Use the report command with the CLI as in the following example:

[hostname@cluster//containers/default]> server report
Downloaded report 'infinispan-hostname-timestamp-report.tar.gz'

See Getting Diagnostic Reports for Data Grid Servers.

Note

Diagnostics reports for Data Grid Server are currently available on Linux/ Unix systems only.

2.1.5. Data Grid Console

Data Grid 8.1 Console provides additional capabilities such as:

  • Creating and deleting cache entries.
  • Cross site replication management.
  • Schema management.
  • Searching the data container with Ickle queries.
  • Integration with Red Hat SSO so that accessing Data Grid Console obtains credentials through the realm login page.

For information on accessing the Data Grid Console and creating caches, see Creating Caches with the Data Grid Console.

2.1.6. Hot Rod Java Clients

Configuration via URI

Hot Rod Java Client configuration now supports URI in the following format:

hotrod[s]://[user[:password]@]host[:port][,host2[:port]][?property=value[&property2=value2]]

This provides a more compact way for configuring your Hot Rod Java client connections. See Hot Rod Client Configuration.

Per-Cache Configuration with Automatic Cache Creation

When Hot Rod Java clients attempt to access caches that do not exist, they return null for getCache("<cache_name>") invocations. You can change this default behavior so that clients automatically create caches on first access using caches configuration templates or Data Grid cache definitions in XML format.

See Creating Caches on First Access.

2.1.8. Simplified Configuration

Data Grid 8.1 deprecates several configuration attributes to streamline user options and improve consistency between declarative and programmatic settings.

memory configuration is the most notable change in Data Grid 8.1. It lets you configure the data container to:

  • Store entries in the JVM heap or in off-heap memory.
  • Control the size of the data container. You can set a maximum number of entries that caches can hold or set a maximum amount of memory that caches can use.

As in previous releases, the memory configuration can also configure Data Grid to store entries in binary format. However, as of 8.1, binary storage configuration is deprecated. Instead you should define the encoding for caches. If you want to use binary storage, specify the MediaType for any binary format in your cache definition.

See the following:

2.1.9. Non-Blocking I/0

Data Grid consolidates thread pools into two:

  • Non-blocking thread pool
  • Blocking thread pool

As of this release, nearly all Data Grid internal components use the non- blocking thread pool, which increases throughput, reduces latency, and improves overall responsiveness for heavy I/O workloads.

Any blocking I/O paths, now use the blocking thread pool to avoid holding up non-blocking calls.

NonBlockingStore SPI

Data Grid 8.1 introduces the NonBlockingStore interface for implementing persistent cache stores. As the name implies NonBlockingStore SPI exposes methods that must never block the invoking thread.

To handle blocking operations, Data Grid provides a BlockingManager utility class.

See the following:

2.1.10. Red Hat JBoss EAP Modules

Data Grid Modules for Red Hat JBoss EAP provide a temporary solution until planned functionality for Red Hat JBoss EAP to directly manage the infinispan subsystem is available.

See Data Grid Modules for Red Hat JBoss EAP.

Chapter 3. Data Grid on OpenShift

3.1. Data Grid 8.1 Images

Data Grid 8.1 includes two container images, the Data Grid Operator image and Data Grid Server image.

Important

Red Hat supports Data Grid 8.1 on OpenShift only through Data Grid Operator subscriptions.

Likewise Red Hat does not support customization of any 8.1 images from the Red Hat Container Registry.

Data Grid images are hosted on the Red Hat Container Registry, where you can find health indexes for the images along with information about each tagged version.

3.2. Data Grid Library Mode on OpenShift

Embedding Data Grid in custom OpenShift applications, or running in Library Mode, is intended for specific uses only.

  • Using local or distributed caching in custom Java applications to retain full control of the cache lifecycle. Additionally, when using features that are available only with embedded Data Grid such as distributed streams.
  • Reducing network latency to improve the speed of cache operations. Although it is worth noting that the Hot Rod protocol provides near-cache capabilities that achieve equivalent performance of a standard client-server architecture.

Embedding Data Grid in OpenShift also has some limitations:

  • Persist cache stores are not currently supported.
  • Only DNS_PING is supported for the cluster discovery protocol.
  • TCP is supported for the ping port.
  • UDP is not supported with embedded Data Grid.
Important

Red Hat highly discourages embedding Data Grid to build custom caching servers to handle remote client requests. You should create Data Grid service clusters with the Data Grid Operator instead to get full Red Hat support and benefit from regular updates with performance improvements and security fixes.

Chapter 4. Known and Fixed Issues

Learn about known issues in Data Grid and find out which issues are fixed.

4.1. Known Issues for Data Grid

Performance degradation occurs if backup locations become unavailable

Issue: JDG-3989

Description: When using cross-site replication with Data Grid on OpenShift, CPU utilization for nodes increases when backup locations become unavailable.

Workaround: Configure backup locations to go offline automatically.

Data Grid Operator overwrites creation timestamps

Issue: JDG-4016

Description: Data Grid Operator overwrites creation timestamps for previous versions during upgrade.

Workaround: There is no workaround for this issue.

Data Grid on OpenShift continually restart after OOM exceptions

Issue: JDG-3991

Description: If out of memory exceptions cause Data Grid Server to terminate on OpenShift, the nodes cannot restart. The following exception is written to the pod log file:

FATAL (main) [org.infinispan.SERVER] ISPN080028: Red Hat Data Grid Server failed to start java.util.concurrent.ExecutionException: org.infinispan.manager.EmbeddedCacheManagerStartupException: org.infinispan.commons.CacheException: Initial state transfer timed out for cache org.infinispan.LOCKS on <pod-name-id>

Workaround: There is no workaround for this issue.

Cannot authenticate with Data Grid Server from HotRod Store or NodeJS clients

Issue: JDG-3868

Description: If you use the HotRod store on Red Hat JBoss EAP to externalize session data to Data Grid, or if you use the Hot Rod NodeJS client, you cannot connect to Data Grid servers that require client authentication, which is the default configuration.

Workaround: Use the remote-store implementation with Red Hat JBoss EAP 7.3 in combination with server authentication. To use the HotRod store on Red Hat JBoss EAP, or to use Hot Rod NodeJS clients, you must disable Data Grid Server authentication.

Null pointer exception occurs when accessing data during state transfer operations

Issue: JDG-3956

Description: When performing state transfer operations with cross-site replication, a java.lang.NullPointerException message is written to logs and Data Grid terminates unexpectedly if you attempt to access data.

Workaround: There is no workaround for this issue.

Inconsistent query behavior when indexed caches contain non-indexed Protobuf entities

Issue: JDG-3972

Description: If a cache is indexed but contains a Protobuf entity that is not indexed, search operations on that cache return inconsistent results.

Workaround: There is no workaround for this issue.

Excessive messages written to log files when writing to caches with offline backups

Issue: JDG-3971

Description: If a cache has a backup location that is offline, write operations to that cache prints the following message to log files an unnecessary number of times:

ERROR ... [org.jgroups.protocols.relay.RELAY2] ...: no route to site01: dropping message

Workaround: There is no workaround for this issue.

Cannot Access Caches If Names Contain the "/" Character

Issue: JDG-3494 and JDG-3941

Description: If cache names contain the "/" character, it is not possible to access them remotely via the CLI, REST API, or Console.

Workaround: There is no workaround for this issue.

Data Grid Conflict Resolution Performance

Issue: JDG-3636

Description: In some test cases, Data Grid partition handling functionality took longer than expected to perform conflict resolution.

Workaround: There is no workaround for this issue.

Data Grid Does Not Passivate JWS Sessions Correctly

Issue: JDG-2796

Description: When externalizing sessions from JBoss Web Server (JWS), sessions are not passivated correctly if using the FINE persistence strategy.

Workaround: There is no workaround for this issue.

Remote Cache Stores Cannot Use Preload with EAP Session Externalization

Issue: JDG-3504

Description: JBoss Enterprise Application Platform (EAP) throws the following exception if remote cache store configurations pre-load data into memory:

ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 68) MSC000001: Failed to start service org.wildfly.clustering.infinispan.cache.web.jws-session-dist-async.war: org.jboss.msc.service.StartException in service org.wildfly.clustering.infinispan.cache.web.jws-session-dist-async.war: org.infinispan.commons.CacheException: Unable to invoke method public void org.infinispan.persistence.manager.PreloadManager.start() on object of type PreloadManager

Workaround: Ensure that the remote cache store configuration uses preload="false".

4.1.1. Open Issues for Data Grid 8.1

You can find the complete list of issues for Data Grid with the following Jira query:

Query JQL

project = JDG AND affectedVersion in ("RHDG 8.1 CD", "RHDG 8.1 CR1", "RHDG 8.1 CR2", "RHDG 8.1 GA") AND status not in (Closed, Verified, "Ready for QA", "QA In Progress", Resolved) AND type = Bug

4.2. Fixed in Data Grid 8.1

List of All Issues Resolved in Data Grid 8.1
Features and enhancements, documentation improvements, bug fixes.

Query JQL

project = JDG AND fixVersion in ("RHDG 8.1 CD", "RHDG 8.1 CR1", "RHDG 8.1 CR2", "RHDG 8.1 GA")

Notable Fixes

This release includes the following notable fixes:

  • JDG-3826 Global persistent locations do not retrieve server data path property.
  • JDG-3591 Data Grid Operator does not encrypt endpoints by default.
  • JDG-3624 Data Grid Server allows REST and Hot Rod operations from unauthenticated users
  • JDG-3799 Cache configuration exception caused by PartitionStrategy must be ALLOW_READ_WRITES when numOwners is one.
  • JDG-3738 Uneven segment distributions can happen after the rebalancing with SyncConsistentHashFactory.
  • JDG-3675 Logging through stdout includes colour codes.
  • JDG-3586 Console creates a local cache if no configuration is provided.

Chapter 5. Deprecated Features and Functionality

Support for deprecated functionality is not available beyond the release in which it is deprecated.

Important

Red Hat does not recommend including, enabling, or configuring deprecated functionality in new deployments.

5.1. Deprecations

Data Grid 8.1 deprecates the following features and functionality:

JBoss Marshalling

JBoss marshalling is deprecated and Hot Rod Java clients no longer configure GenericJBossMarshaller automatically if you add the infinispan-jboss- marshalling module to your classpath.

You should use Protostream instead of serialization-based marshalling. However, if you require jboss-marshalling do the following:

  1. Add the infinispan-jboss-marshalling dependency to your classpath.
  2. Explicitly configure org.infinispan.jboss.marshalling.commons.GenericJBossMarshaller when you create RemoteCacheManager.
Note

On startup, Data Grid Server writes the following log message:

WARN  (main) [org.infinispan.PERSISTENCE] ISPN000554: jboss-marshalling is deprecated and planned for removal

You can safely ignore this message. It serves as a notification about JBoss Marshalling deprecation.

SearchManager API

The Data Grid SearchManager API is now deprecated and planned for removal.

Important

You should plan to migrate any usage of deprecated search functionality, including Lucene-based queries, and start using the org.infinispan.query.Search class as an entry point for performing searches with the Ickle query language.

See the Migrating Data Grid Search.

Data Grid Modules for Red Hat JBoss EAP

Data Grid modules are deprecated and planned for removal.

The jgroups, infinispan and endpoint extensions are removed. All components are available in a single org.infinispan module.

Memory Configuration

The binary configuration setting is now deprecated along with the <object>, <binary> and <off-heap> elements.

Cross-Site Replication

The org.infinispan.xsite.CustomFailurePolicy interface is deprecated. You should use the org.infinispan.configuration.cache.CustomFailurePolicy interface instead.

You can no longer configure backup locations for local caches because they cannot send or receive updates from remote clusters.

OSGi

OSGi support is deprecated and planned for removal.

ClusterLoader and Lazy Retrieval

The org.infinispan.persistence.cluster.ClusterLoader class is deprecated. This includes the LAZY_RETRIEVAL option for Hot Rod clients because it uses the ClusterLoader class. Both are planned for removal with no direct replacement.

Persistence SPI

Several interfaces in the Persistence SPI are now deprecated, including CacheLoader and CacheWriter. You should use NonBlockingStore instead.

5.2. Removed Features and Functionality

Data Grid 8.1 no longer includes the following features and functionality that was either deprecated in a previous release or replaced with new components:

  • Attributes for asynchronous cross-site replication are no longer updated so Data Grid 8.1 does not expose them via JMX. This includes AsyncXSiteRequestsReceived, AsyncXSiteAcksCount, AsyncXSiteCount, AverageAsyncXSiteReplicationTime, AverageXSiteReplicationTime, and MinimumAsyncXSiteReplicationTime. Use the synchronous cross-site replication attributes instead, even if you configure asynchronous backups.
  • Total Order transaction protocol.
  • ThreadGroup programmatic configuration. Use the groupName() method ThreadFactoryConfigurationBuilder to be consistent with the declarative configuration.
  • relative-to attribute for Single File cache stores. If your cache store configuration includes this attribute, Data Grid ignores it and uses only path to configure store location.
  • thread-pool-size attribute for Write-Behind mode is removed.
  • allowDuplicateDomains in the global JMX configuration is removed.

Chapter 6. Appendix

Additional information for Data Grid 8.1.

6.1. Externalizing HTTP Sessions from JBoss Web Server (JWS) to Data Grid

Externalize HTTP sessions from JBoss Web Server (JWS) to Data Grid via the Apache Tomcat org.apache.catalina.Manager interface.

6.1.1. Installing the Session Client

  1. Download the redhat-datagrid-8.1.0.Final-tomcat<$version>-session-client.zip archive from the Data Grid Software Downloads on the Red Hat customer portal.
  2. Copy the contents of the lib/ directory in the archive into $CATALINA_HOME.

6.1.2. Configuring the Session Manager

  1. Open either $CATALINA_HOME/conf/context.xml or /WEB-INF/context.xml for editing.
  2. Specify the HotRodManager class for the Session Manager and define configuration as appropriate.
  3. Save and close context.xml.

Example Configuration

<Manager className="org.wildfly.clustering.tomcat.hotrod.HotRodManager"
         configurationName="mycache"
         persistenceStrategy="FINE"
         maxActiveSessions="100"
         server_list="127.0.0.1:11222;127.0.0.1:11223;127.0.0.1:11224"/>

6.1.3. HotRodManager Configuration Properties

PropertyDescription

configurationName

Specifies a cache instance or template defined in $RHDG_HOME/server/conf/infinispan.xml. Your application then creates a cache instance that uses the configuration from the named cache.

persistenceStrategy

Defines how sessions map to entries in the cache.

COARSE stores all attributes of a session in a single cache entry. This is the default.

FINE stores session attributes in separate cache entries.

maxActiveSessions

Defines the maximum number of sessions to store in the cache. The default is no maximum (limitless).

To configure Hot Rod clients, specify properties without the infinispan.client.hotrod. prefix. For more information, see the Hot Rod Client Configuration API.

You can also specify common attributes for the Session Manager. Refer to the appropriate version of the Apache Tomcat documentation as follows:

Legal Notice

Copyright © 2020 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.