Per the documentation the supported versions today compatible with each other are:
As of this writing, ehcache 3.9.x seems incompatible with Terracotta when run using:
docker run --rm --name tc-server -p 9410:9410 -d \
--env OFFHEAP_RESOURCE1_NAME=main \
--env OFFHEAP_RESOURCE2_NAME=extra \
--env OFFHEAP_RESOURCE1_SIZE=256 \
--env OFFHEAP_RESOURCE2_SIZE=16 \
terracotta/terracotta-server-oss:5.6.4
2021-02-26 15:21:05,830 ERROR [com.tc.object.handshakemanager.ClientHandshakeManagerImpl] - <ClientID[13]: Interrupted while waiting for handshake>
org.terracotta.exception.ConnectionClosedException: Entity: org.terracotta.lease.LeaseAcquirer:SystemLeaseAcquirer Connection closed before sending message
at com.tc.object.ClientEntityManagerImpl.throwClosedExceptionOnMessage(ClientEntityManagerImpl.java:514)
at com.tc.object.ClientEntityManagerImpl.queueInFlightMessage(ClientEntityManagerImpl.java:656)
at com.tc.object.ClientEntityManagerImpl.queueInFlightMessage(ClientEntityManagerImpl.java:626)
at com.tc.object.ClientEntityManagerImpl.sendMessageWhileBusy(ClientEntityManagerImpl.java:597)
at com.tc.object.ClientEntityManagerImpl.internalRelease(ClientEntityManagerImpl.java:577)
at com.tc.object.ClientEntityManagerImpl.internalLookup(ClientEntityManagerImpl.java:563)
at com.tc.object.ClientEntityManagerImpl.fetchEntity(ClientEntityManagerImpl.java:188)
at com.terracotta.connection.entity.TerracottaEntityRef.fetchEntity(TerracottaEntityRef.java:82)
at org.terracotta.lease.LeaseMaintainerFactory.getLeaseAcquirer(LeaseMaintainerFactory.java:63)
at org.terracotta.lease.LeaseMaintainerFactory.createLeaseMaintainer(LeaseMaintainerFactory.java:46)
at org.terracotta.lease.connection.BasicLeasedConnection.create(BasicLeasedConnection.java:40)
at org.terracotta.lease.connection.LeasedConnectionServiceImpl.createLeasedConnection(LeasedConnectionServiceImpl.java:58)
at org.terracotta.lease.connection.LeasedConnectionServiceImpl.connect(LeasedConnectionServiceImpl.java:47)
at org.terracotta.lease.connection.LeasedConnectionFactory.getLeasedConnection(LeasedConnectionFactory.java:71)
at org.terracotta.lease.connection.LeasedConnectionFactory.connect(LeasedConnectionFactory.java:47)
at org.ehcache.clustered.client.internal.ConnectionSource$ClusterUri.connect(ConnectionSource.java:71)
at org.ehcache.clustered.client.internal.service.ConnectionState.connect(ConnectionState.java:151)
at org.ehcache.clustered.client.internal.service.ConnectionState.initClusterConnection(ConnectionState.java:128)
at org.ehcache.clustered.client.internal.service.DefaultClusteringService.start(DefaultClusteringService.java:122)
at org.ehcache.core.spi.ServiceLocator.startAllServices(ServiceLocator.java:128)
at org.ehcache.core.EhcacheManager.init(EhcacheManager.java:577)
at org.ehcache.jsr107.EhcacheCachingProvider.createCacheManager(EhcacheCachingProvider.java:159)
at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:134)
at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:97)
2021-02-26 11:21:07.971 ERROR --- [orkerComm # 0_R] c.t.n.protocol.tcm.TCMessageHydrateSink : Error hydrating message of type CLIENT_HANDSHAKE_MESSAGE
com.tc.net.protocol.tcm.UnknownNameException: unknown name: 10 for message class com.tc.object.msg.ClientHandshakeMessageImpl
at com.tc.net.protocol.tcm.TCMessageImpl.hydrate(TCMessageImpl.java:179)
at com.tc.net.protocol.tcm.TCMessageHydrateSink.putMessage(TCMessageHydrateSink.java:36)
at com.tc.net.protocol.tcm.TCMessageRouterImpl.putMessage(TCMessageRouterImpl.java:64)
at com.tc.net.protocol.tcm.AbstractMessageChannel.receive(AbstractMessageChannel.java:215)
at com.tc.net.protocol.transport.MessageTransportBase.receiveToReceiveLayer(MessageTransportBase.java:138)
at com.tc.net.protocol.transport.ServerMessageTransport.receiveTransportMessageImpl(ServerMessageTransport.java:101)
at com.tc.net.protocol.transport.MessageTransportBase.receiveTransportMessage(MessageTransportBase.java:113)
at com.tc.net.protocol.transport.ServerStackProvider$MessageSink.putMessage(ServerStackProvider.java:267)
at com.tc.net.protocol.transport.WireProtocolAdaptorImpl.addReadData(WireProtocolAdaptorImpl.java:75)
at com.tc.net.core.TCConnectionImpl.addNetworkData(TCConnectionImpl.java:827)
at com.tc.net.core.TCConnectionImpl.doReadFromBufferInternal(TCConnectionImpl.java:488)
at com.tc.net.core.TCConnectionImpl.doReadFromBuffer(TCConnectionImpl.java:342)
at com.tc.net.core.TCConnectionImpl.doReadInternal(TCConnectionImpl.java:325)
at com.tc.net.core.TCConnectionImpl.doRead(TCConnectionImpl.java:309)
at com.tc.net.core.CoreNIOServices$CommThread.selectLoop(CoreNIOServices.java:667)
at com.tc.net.core.CoreNIOServices$CommThread.run(CoreNIOServices.java:371)
2021-02-26 11:21:07.979 INFO --- [n 0.0.0.0:9410)] c.t.n.p.transport.ServerStackProvider : "Client Cannot Reconnect. Connection attempts from the Terracotta node at 172.17.0.1:59080 are being rejected by the Terracotta server array. Reason: Stack for ConnectionID(14.fb6fcd7e24ab4abba9d0ced613095dcc.4211040f-b39f-48db-911e-c6ddc26afcc9-177de11f475.Permanent) not found."