Skip to content

Commit 0f85e56

Browse files
committed
Bug 37228588 - [37193699->14.1.2.0.1] Unable to change backing map for an existing caching scheme using cache config override (14.1.2.0 cl 112515 --> ce/14.1.2.0)
- redo CacheConfigOverrideProcessor integration - integrate non elastic data related test changes [git-p4: depot-paths = "//dev/coherence-ce/release/coherence-ce-v14.1.2.0/": change = 113219]
1 parent 02f425e commit 0f85e56

File tree

3 files changed

+23
-27
lines changed

3 files changed

+23
-27
lines changed

prj/coherence-core/src/main/java/com/tangosol/coherence/config/xml/processor/CacheConfigOverrideProcessor.java

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import java.util.ArrayList;
1212
import java.util.List;
1313

14-
import com.oracle.coherence.common.base.Logger;
1514
import com.tangosol.config.xml.OverrideProcessor;
1615
import com.tangosol.run.xml.XmlElement;
1716
import com.tangosol.run.xml.XmlHelper;
@@ -76,9 +75,9 @@ else if ("interceptors".equals(xmlElement.getName()))
7675
private void processSchemeMappings(XmlElement xmlBase,
7776
XmlElement xmlOverrideSchemeMappings, String sMappingSubElementName)
7877
{
79-
List<XmlElement> listElements = new ArrayList<>();
78+
List<XmlElement> listElements = new ArrayList<>();
79+
XmlElement xmlCurrentElement = xmlBase.getElement(xmlOverrideSchemeMappings.getName());
8080

81-
XmlElement xmlCurrentElement = xmlBase.getElement(xmlOverrideSchemeMappings.getName());
8281
if (xmlCurrentElement == null)
8382
{
8483
listElements.add(xmlOverrideSchemeMappings);
@@ -200,7 +199,8 @@ else if (!listElements.contains(xmlElementOverride))
200199
*/
201200
private void processCachingSchemes(XmlElement xmlBase, XmlElement xmlOverrideCachingSchemes)
202201
{
203-
List<XmlElement> listElements = new ArrayList<XmlElement>();
202+
List<XmlElement> listElements = new ArrayList<XmlElement>();
203+
XmlElement xmlCurrentElement = xmlBase.getElement(xmlOverrideCachingSchemes.getName());
204204

205205
for (Object subElements : xmlOverrideCachingSchemes.getElementList())
206206
{
@@ -229,30 +229,20 @@ private void processCachingSchemes(XmlElement xmlBase, XmlElement xmlOverrideCac
229229

230230
if (sSchemeName.equals(sOverrideSchemeName))
231231
{
232-
XmlElement xmlElementRemove = null;
233-
234-
for (XmlElement xmlEl : listElements)
232+
if (!xmlElementName.equals(sSubElementName))
235233
{
236-
XmlElement xmlElSchemeName = xmlEl.getElement("scheme-name");
237-
if (xmlElSchemeName != null
238-
&& sOverrideSchemeName.equals(xmlElSchemeName.getValue().toString()))
239-
{
240-
xmlElementRemove = xmlEl;
241-
break;
242-
}
234+
xmlElementBase.setName(sSubElementName);
243235
}
244236

245-
if (xmlElementRemove != null)
246-
{
247-
listElements.remove(xmlElementRemove);
248-
}
237+
xmlElementBase.getElementList().clear();
238+
xmlElementBase.getElementList().addAll(xmlOverride.getElementList());
249239

250-
if (!xmlElementName.equals(sSubElementName))
240+
if (listElements.contains(xmlOverride))
251241
{
252-
xmlElementBase.setName(sSubElementName);
242+
listElements.remove(xmlOverride);
253243
}
254244

255-
XmlHelper.overrideElement(xmlElementBase, xmlOverride);
245+
break;
256246
}
257247
else if (!listElements.contains(xmlOverride))
258248
{
@@ -277,7 +267,7 @@ else if (!listElements.contains(xmlOverride))
277267

278268
if (!listElements.isEmpty())
279269
{
280-
XmlHelper.addElements(xmlBase.getElement(xmlOverrideCachingSchemes.getName()), listElements.iterator());
270+
XmlHelper.addElements(xmlCurrentElement, listElements.iterator());
281271
listElements.clear();
282272
}
283273
}

prj/test/functional/cache/src/main/java/override/CacheConfigOverrideTests.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
/*
2-
* Copyright (c) 2000, 2024, Oracle and/or its affiliates.
2+
* Copyright (c) 2000, 2025, Oracle and/or its affiliates.
33
*
44
* Licensed under the Universal Permissive License v 1.0 as shown at
55
* https://oss.oracle.com/licenses/upl.
66
*/
77
package override;
88

9-
import com.oracle.coherence.testing.AbstractFunctionalTest;
10-
9+
import com.oracle.bedrock.runtime.coherence.options.LocalHost;
10+
import com.oracle.bedrock.runtime.coherence.options.WellKnownAddress;
11+
import com.oracle.bedrock.runtime.java.options.IPv4Preferred;
1112
import com.oracle.bedrock.testsupport.deferred.Eventually;
1213

14+
import com.oracle.coherence.testing.AbstractFunctionalTest;
15+
1316
import com.tangosol.net.CacheFactory;
1417
import com.tangosol.net.CacheService;
1518
import com.tangosol.net.Cluster;
@@ -67,6 +70,8 @@ public CacheConfigOverrideTests()
6770
public static void _startup()
6871
{
6972
// this test requires local storage to be enabled
73+
System.setProperty(WellKnownAddress.PROPERTY, LocalHost.loopback().getAddress());
74+
System.setProperty(IPv4Preferred.JAVA_NET_PREFER_IPV4_STACK, "true");
7075
System.setProperty("coherence.distributed.localstorage", "true");
7176
}
7277

@@ -162,7 +167,7 @@ public void testCacheConfigOverrideSingleScheme()
162167
// Check for correct QuorumStatus for service "$SYS:MyCacheService2" with write
163168
objectName = "Coherence:type=Service,name=\"$SYS:MyCacheService2\",*";
164169
mbeanObj = serverJMX.queryMBeans(new ObjectName(objectName), null);
165-
assertTrue(mbeanObj.size() == 1);
170+
assertEquals(mbeanObj.size(), 1);
166171

167172
serviceON = new ObjectName(mbeanObj.iterator().next().getObjectName().toString());
168173
quorumStatus = (String) serverJMX.getAttribute(serviceON, "QuorumStatus");

prj/test/functional/cache/src/main/resources/override/cache-config-override-two.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0"?>
22
<!--
3-
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
3+
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
44
55
Licensed under the Universal Permissive License v 1.0 as shown at
66
https://oss.oracle.com/licenses/upl.
@@ -19,6 +19,7 @@
1919
<caching-schemes>
2020
<distributed-scheme>
2121
<scheme-name>my-cache-scheme-two</scheme-name>
22+
<service-name>MyCacheService2</service-name>
2223
<partitioned-quorum-policy-scheme>
2324
<write-quorum>1</write-quorum>
2425
</partitioned-quorum-policy-scheme>

0 commit comments

Comments
 (0)