Skip to content

Commit fab0366

Browse files
committed
Merge remote-tracking branch 'upstream/main' into remote-path-type
Signed-off-by: Ashish Singh <ssashish@amazon.com>
2 parents 25e06e9 + dda3e3d commit fab0366

File tree

32 files changed

+1447
-351
lines changed

32 files changed

+1447
-351
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
116116
- Make search query counters dynamic to support all query types ([#12601](https://github.com/opensearch-project/OpenSearch/pull/12601))
117117
- [Tiered caching] Add policies controlling which values can enter pluggable caches [EXPERIMENTAL] ([#12542](https://github.com/opensearch-project/OpenSearch/pull/12542))
118118
- [Tiered caching] Add Stale keys Management and CacheCleaner to IndicesRequestCache ([#12625](https://github.com/opensearch-project/OpenSearch/pull/12625))
119+
- [Tiered caching] Add serializer integration to allow ehcache disk cache to use non-primitive values ([#12709](https://github.com/opensearch-project/OpenSearch/pull/12709))
119120
- [Admission Control] Integrated IO Based AdmissionController to AdmissionControl Framework ([#12583](https://github.com/opensearch-project/OpenSearch/pull/12583))
120121

121122
### Dependencies
@@ -144,6 +145,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
144145
### Changed
145146
- Allow composite aggregation to run under a parent filter aggregation ([#11499](https://github.com/opensearch-project/OpenSearch/pull/11499))
146147
- Quickly compute terms aggregations when the top-level query is functionally match-all for a segment ([#11643](https://github.com/opensearch-project/OpenSearch/pull/11643))
148+
- Mark fuzzy filter GA and remove experimental setting ([12631](https://github.com/opensearch-project/OpenSearch/pull/12631))
147149

148150
### Deprecated
149151

libs/core/src/main/java/org/opensearch/core/common/bytes/BytesReference.java

+5
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ static byte[] toBytes(BytesReference reference) {
8282
return ArrayUtil.copyOfSubArray(bytesRef.bytes, bytesRef.offset, bytesRef.offset + bytesRef.length);
8383
}
8484

85+
static byte[] toBytesWithoutCompact(BytesReference reference) {
86+
final BytesRef bytesRef = reference.toBytesRef();
87+
return bytesRef.bytes;
88+
}
89+
8590
/**
8691
* Returns an array of byte buffers from the given BytesReference.
8792
*/

modules/cache-common/src/main/java/org/opensearch/cache/common/tier/TieredSpilloverCache.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ public void onRemoval(RemovalNotification<K, V> notification) {
7979
.setValueType(builder.cacheConfig.getValueType())
8080
.setSettings(builder.cacheConfig.getSettings())
8181
.setWeigher(builder.cacheConfig.getWeigher())
82-
.setMaxSizeInBytes(builder.cacheConfig.getMaxSizeInBytes()) // TODO: Part of a workaround for an issue in TSC. Overall fix
83-
// coming soon
82+
.setMaxSizeInBytes(builder.cacheConfig.getMaxSizeInBytes())
83+
.setExpireAfterAccess(builder.cacheConfig.getExpireAfterAccess())
8484
.build(),
8585
builder.cacheType,
8686
builder.cacheFactories

modules/cache-common/src/test/java/org/opensearch/cache/common/tier/MockDiskCache.java

+18-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.opensearch.common.cache.RemovalListener;
1515
import org.opensearch.common.cache.RemovalNotification;
1616
import org.opensearch.common.cache.RemovalReason;
17+
import org.opensearch.common.cache.serializer.Serializer;
1718
import org.opensearch.common.cache.store.builders.ICacheBuilder;
1819
import org.opensearch.common.cache.store.config.CacheConfig;
1920

@@ -106,8 +107,11 @@ public MockDiskCacheFactory(long delay, int maxSize) {
106107
}
107108

108109
@Override
110+
@SuppressWarnings({ "unchecked" })
109111
public <K, V> ICache<K, V> create(CacheConfig<K, V> config, CacheType cacheType, Map<String, Factory> cacheFactories) {
110-
return new Builder<K, V>().setMaxSize(maxSize)
112+
return new Builder<K, V>().setKeySerializer((Serializer<K, byte[]>) config.getKeySerializer())
113+
.setValueSerializer((Serializer<V, byte[]>) config.getValueSerializer())
114+
.setMaxSize(maxSize)
111115
.setDeliberateDelay(delay)
112116
.setRemovalListener(config.getRemovalListener())
113117
.build();
@@ -123,6 +127,8 @@ public static class Builder<K, V> extends ICacheBuilder<K, V> {
123127

124128
int maxSize;
125129
long delay;
130+
Serializer<K, byte[]> keySerializer;
131+
Serializer<V, byte[]> valueSerializer;
126132

127133
@Override
128134
public ICache<K, V> build() {
@@ -138,5 +144,16 @@ public Builder<K, V> setDeliberateDelay(long millis) {
138144
this.delay = millis;
139145
return this;
140146
}
147+
148+
public Builder<K, V> setKeySerializer(Serializer<K, byte[]> keySerializer) {
149+
this.keySerializer = keySerializer;
150+
return this;
151+
}
152+
153+
public Builder<K, V> setValueSerializer(Serializer<V, byte[]> valueSerializer) {
154+
this.valueSerializer = valueSerializer;
155+
return this;
156+
}
157+
141158
}
142159
}

modules/cache-common/src/test/java/org/opensearch/cache/common/tier/TieredSpilloverCacheTests.java

+16-14
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,11 @@ public void testComputeIfAbsentWithFactoryBasedCacheCreation() throws Exception
119119
.getKey(),
120120
onHeapCacheSize * keyValueSize + "b"
121121
)
122+
.put(
123+
CacheSettings.getConcreteStoreNameSettingForCacheType(CacheType.INDICES_REQUEST_CACHE).getKey(),
124+
TieredSpilloverCache.TieredSpilloverCacheFactory.TIERED_SPILLOVER_CACHE_NAME
125+
)
126+
.put(FeatureFlags.PLUGGABLE_CACHE, "true")
122127
.build();
123128

124129
ICache<String, String> tieredSpilloverICache = new TieredSpilloverCache.TieredSpilloverCacheFactory().create(
@@ -127,12 +132,8 @@ public void testComputeIfAbsentWithFactoryBasedCacheCreation() throws Exception
127132
.setWeigher((k, v) -> keyValueSize)
128133
.setRemovalListener(removalListener)
129134
.setSettings(settings)
130-
.setCachedResultParser(new Function<String, CachedQueryResult.PolicyValues>() {
131-
@Override
132-
public CachedQueryResult.PolicyValues apply(String s) {
133-
return new CachedQueryResult.PolicyValues(20_000_000L);
134-
}
135-
}) // Values will always appear to have taken 20_000_000 ns = 20 ms to compute
135+
.setCachedResultParser(s -> new CachedQueryResult.PolicyValues(20_000_000L)) // Values will always appear to have taken
136+
// 20_000_000 ns = 20 ms to compute
136137
.build(),
137138
CacheType.INDICES_REQUEST_CACHE,
138139
Map.of(
@@ -145,20 +146,16 @@ public CachedQueryResult.PolicyValues apply(String s) {
145146

146147
TieredSpilloverCache<String, String> tieredSpilloverCache = (TieredSpilloverCache<String, String>) tieredSpilloverICache;
147148

148-
// Put values in cache more than it's size and cause evictions from onHeap.
149149
int numOfItems1 = randomIntBetween(onHeapCacheSize + 1, totalSize);
150-
List<String> onHeapKeys = new ArrayList<>();
151-
List<String> diskTierKeys = new ArrayList<>();
152150
for (int iter = 0; iter < numOfItems1; iter++) {
153151
String key = UUID.randomUUID().toString();
154152
LoadAwareCacheLoader<String, String> tieredCacheLoader = getLoadAwareCacheLoader();
155153
tieredSpilloverCache.computeIfAbsent(key, tieredCacheLoader);
156154
}
157-
tieredSpilloverCache.getOnHeapCache().keys().forEach(onHeapKeys::add);
158-
tieredSpilloverCache.getDiskCache().keys().forEach(diskTierKeys::add);
159-
160-
assertEquals(tieredSpilloverCache.getOnHeapCache().count(), onHeapKeys.size());
161-
assertEquals(tieredSpilloverCache.getDiskCache().count(), diskTierKeys.size());
155+
// Verify on heap cache size.
156+
assertEquals(onHeapCacheSize, tieredSpilloverCache.getOnHeapCache().count());
157+
// Verify disk cache size.
158+
assertEquals(numOfItems1 - onHeapCacheSize, tieredSpilloverCache.getDiskCache().count());
162159
}
163160

164161
public void testWithFactoryCreationWithOnHeapCacheNotPresent() {
@@ -180,6 +177,11 @@ public void testWithFactoryCreationWithOnHeapCacheNotPresent() {
180177
.getKey(),
181178
onHeapCacheSize * keyValueSize + "b"
182179
)
180+
.put(
181+
CacheSettings.getConcreteStoreNameSettingForCacheType(CacheType.INDICES_REQUEST_CACHE).getKey(),
182+
TieredSpilloverCache.TieredSpilloverCacheFactory.TIERED_SPILLOVER_CACHE_NAME
183+
)
184+
.put(FeatureFlags.PLUGGABLE_CACHE, "true")
183185
.build();
184186

185187
IllegalArgumentException ex = assertThrows(

0 commit comments

Comments
 (0)