]
Will Burns updated ISPN-11424:
------------------------------
Status: Resolved (was: Pull Request Sent)
Fix Version/s: 11.0.0.CR1
Resolution: Done
Deprecate StorageType Configuration in favour of MediaType
----------------------------------------------------------
Key: ISPN-11424
URL:
https://issues.redhat.com/browse/ISPN-11424
Project: Infinispan
Issue Type: Bug
Components: Core
Affects Versions: 11.0.0.Alpha2
Reporter: Gustavo Fernandes
Assignee: Gustavo Fernandes
Priority: Major
Fix For: 11.0.0.CR1
Currently caches have configuration to specify memory storing aspects that affects
eviction, e.g.
{code:xml}
<memory>
<object size="20000"/>
</memory>
{code}
{code:xml}
<memory>
<off-heap size="10000000" eviction="MEMORY"/>
</memory>
{code}
{code:xml}
<memory>
<binary strategy="EXCEPTION" eviction="MEMORY"
size="5000"/>
</memory>
{code}
Each of those configurations affect the format that the data will be stored, being
{{object}} the default on-heap storage, {{off-heap}} the {{byte[]}} out of heap storage
and {{binary}} an on-heap format that mix {{byte[]}}, {{String}} and primitives.
This ticket proposes to have the {{MediaType}} of the keys and values to dictate the
storage format, and let the {{<memory>}} element to be responsible to choose between
on-heap and off-heap storage, eliminating the {{Binary}} option altogether. The
configuration would be something like:
{code:xml}
<!-- Default configuration, heap storage with POJOs -->
<memory storage="heap">
<eviction size="20000"/>
</memory>
{code}
{code:xml}
<!-- Storing java serialized objects, on-heap -->
<encoding>
<key media-type="application/x-java-serialized-object"/>
<value media-type="application/x-java-serialized-object"/>
</encoding>
<memory storage="heap">
<eviction size="20000"/>
</memory>
{code}
{code:xml}
<!-- Off-heap configuration, in protobuf format -->
<encoding>
<key media-type="application/x-protostream"/>
<value media-type="application/x-protostream"/>
</encoding>
<memory storage="off-heap">
<eviction size="10000000" eviction="MEMORY"/>
</memory>
{code}