[JBoss JIRA] (ISPN-3906) Do not place ProtobufValueWrapper instances in the cache
by Tristan Tarrant (JIRA)
[ https://issues.jboss.org/browse/ISPN-3906?page=com.atlassian.jira.plugin.... ]
Tristan Tarrant updated ISPN-3906:
----------------------------------
Fix Version/s: 7.1.0.CR1
(was: 7.1.0.Beta1)
> Do not place ProtobufValueWrapper instances in the cache
> --------------------------------------------------------
>
> Key: ISPN-3906
> URL: https://issues.jboss.org/browse/ISPN-3906
> Project: Infinispan
> Issue Type: Task
> Components: Embedded Querying
> Affects Versions: 6.0.0.Final
> Reporter: Adrian Nistor
> Assignee: Adrian Nistor
> Fix For: 7.1.0.CR1
>
>
> ProtobufValueWrapper is only needed in order to provide a classbridge so we can integrate with Hibernate Search. Still, we should not need to wrap the protobuf encoded byte array put in the cache with this class. It should only be created as a temporary wrapper just before we feed the data to Hibernate Search.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
11 years, 3 months
[JBoss JIRA] (ISPN-3905) Murmurhash3 implementation is slow on String keys
by Tristan Tarrant (JIRA)
[ https://issues.jboss.org/browse/ISPN-3905?page=com.atlassian.jira.plugin.... ]
Tristan Tarrant updated ISPN-3905:
----------------------------------
Fix Version/s: 7.1.0.CR1
(was: 7.1.0.Beta1)
> Murmurhash3 implementation is slow on String keys
> -------------------------------------------------
>
> Key: ISPN-3905
> URL: https://issues.jboss.org/browse/ISPN-3905
> Project: Infinispan
> Issue Type: Enhancement
> Components: Core
> Affects Versions: 6.0.0.Final, 6.0.1.Final
> Reporter: Sanne Grinovero
> Assignee: Mircea Markus
> Priority: Minor
> Fix For: 7.1.0.CR1
>
>
> String instances are a common choice for being used as key entries, still the getBytes() operation being performed allocates costly buffers, and the computation to get those bytes looks like expensive too.
> I suspect there might be good reasons for not using the String's own hashcode directly as an input to Murmurhash? Still that's what other implementations seem to do.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
11 years, 3 months
[JBoss JIRA] (ISPN-3907) Define a Protobuf custom option for defining numeric IDs for types
by Tristan Tarrant (JIRA)
[ https://issues.jboss.org/browse/ISPN-3907?page=com.atlassian.jira.plugin.... ]
Tristan Tarrant updated ISPN-3907:
----------------------------------
Fix Version/s: 7.1.0.CR1
(was: 7.1.0.Beta1)
> Define a Protobuf custom option for defining numeric IDs for types
> ------------------------------------------------------------------
>
> Key: ISPN-3907
> URL: https://issues.jboss.org/browse/ISPN-3907
> Project: Infinispan
> Issue Type: Task
> Components: Embedded Querying
> Affects Versions: 6.0.0.Final
> Reporter: Adrian Nistor
> Assignee: Adrian Nistor
> Fix For: 7.1.0.CR1
>
>
> Currently the wire format of all Protobuf encoded keys and values contains a header/envelope that has some metadata information, like the fully qualified type name (that is protobuf type name, not java) of the object encoded in the message. This information is needed so that the other end can decode the message. And we added it because the Protobuf spec assumes both ends are aware of the message type, which is not the case most of the time.
> While this approach solves the problem nicely, it becomes very inefficient is the FQN is long, which is usually the case, as people tend to stick the domain name of their company + package app name into it.
> Solution: provide alternative unique numeric IDs to all types. The IDs can be added to message type definitions in the protobuf schema and the user is in charge of guaranteeing their uniqueness while the system must check and enforce the uniqueness when a schema is registered ib the ProtobufMetadataManager. To do this we define a custom Protobuf Message type option that accepts a numeric value. If such a numeric ID was assigned to the type then when it is serialized in protobuf the system has to use this id in the header rather that the FQN string.
> This option should not be mandatory. Existing apps should work without requiring source code changes or recompiling providing that the relevant jars are upgraded in both client and server to support the new header encoding.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
11 years, 3 months
[JBoss JIRA] (ISPN-3899) XAResourceRecovery implementation needed for transaction recovery in library mode
by Tristan Tarrant (JIRA)
[ https://issues.jboss.org/browse/ISPN-3899?page=com.atlassian.jira.plugin.... ]
Tristan Tarrant updated ISPN-3899:
----------------------------------
Fix Version/s: 7.1.0.CR1
(was: 7.1.0.Beta1)
> XAResourceRecovery implementation needed for transaction recovery in library mode
> ---------------------------------------------------------------------------------
>
> Key: ISPN-3899
> URL: https://issues.jboss.org/browse/ISPN-3899
> Project: Infinispan
> Issue Type: Bug
> Components: Transactions
> Reporter: Galder Zamarreño
> Assignee: Ion Savin
> Fix For: 7.1.0.CR1
>
>
> According to [~pferraro], an implementation of XAResourceRecovery needs to be added to Infinispan and plugged into XAResourceRecoveryRegistry in order to get recovery of XA transactions working as expected.
> This is already done in Server/AS/Wildfly in org.jboss.as.clustering.infinispan.subsystem.CacheService class.
> A similar thing should happen when Infinispan is used in embedded/library mode.
> [~isavin], since you are going to work on the transaction changes in 7.0, maybe you can take this on too? It'd be interesting to add a test to start with which shows that XA transaction recovery is not working as expected as a result of not having this.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
11 years, 3 months
[JBoss JIRA] (ISPN-3866) Parser60.parseStore() ignores store configurations if they are not a SingleFileStore or a ClusterLoader
by Tristan Tarrant (JIRA)
[ https://issues.jboss.org/browse/ISPN-3866?page=com.atlassian.jira.plugin.... ]
Tristan Tarrant updated ISPN-3866:
----------------------------------
Fix Version/s: 7.1.0.CR1
(was: 7.1.0.Beta1)
> Parser60.parseStore() ignores store configurations if they are not a SingleFileStore or a ClusterLoader
> -------------------------------------------------------------------------------------------------------
>
> Key: ISPN-3866
> URL: https://issues.jboss.org/browse/ISPN-3866
> Project: Infinispan
> Issue Type: Bug
> Components: Configuration
> Affects Versions: 6.0.1.Final
> Reporter: Guillermo GARCIA OCHOA
> Priority: Critical
> Fix For: 7.1.0.CR1
>
>
> The {{Parser60.parseStore()}} methods ignores all store definition that is not a {{SingleFileStore}} or a {{ClusterLoader}}
> {code:java}
> private void parseStore(final XMLExtendedStreamReader reader, final ConfigurationBuilderHolder holder) throws XMLStreamException {
> ConfigurationBuilder builder = holder.getCurrentConfigurationBuilder();
> CacheLoader store = null;
> Boolean fetchPersistentState = null;
> Boolean ignoreModifications = null;
> Boolean purgeOnStartup = null;
> Boolean preload = null;
> Boolean shared = null;
> // Here it reads the attributes that the AbstractStoreConfiguration defines
> for (int i = 0; i < reader.getAttributeCount(); i++) {
> ParseUtils.requireNoNamespaceAttribute(reader, i);
> String value = replaceProperties(reader.getAttributeValue(i));
> Attribute attribute = Attribute.forName(reader.getAttributeLocalName(i));
> ...
> }
> // Then it will use the read attributes (and parse the childrens tags)
> // if and only if the configure store is a SingleFileStore or ClusterLoader
> if (store != null) {
> if (store instanceof SingleFileStore) {
> ...
> parseStoreChildren(reader, sfs);
> } else if (store instanceof ClusterLoader) {
> ...
> parseLoaderChildren(reader, cscb);
> }
> }
> }
> {code}
> This means that there is no way to set a configuration to my custom cache store with the default parser {{Parser60}}.
> If there is another way to what I'm asking for, please let me know because in the documentation only refers to the {{SingleFileStore}} implementation.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
11 years, 3 months
[JBoss JIRA] (ISPN-3961) Search across multiple caches
by Tristan Tarrant (JIRA)
[ https://issues.jboss.org/browse/ISPN-3961?page=com.atlassian.jira.plugin.... ]
Tristan Tarrant updated ISPN-3961:
----------------------------------
Fix Version/s: 7.1.0.CR1
(was: 7.1.0.Beta1)
> Search across multiple caches
> -----------------------------
>
> Key: ISPN-3961
> URL: https://issues.jboss.org/browse/ISPN-3961
> Project: Infinispan
> Issue Type: Feature Request
> Components: Embedded Querying, Remote Querying
> Reporter: Adrian Nistor
> Fix For: 7.1.0.CR1
>
>
> This would conceptually mean moving the SearchManager from Cache scope to CacheManager scope, which would allow us to share HS search factory. Would also need to add indexing configuration at cache manager level.
> Having a SearchManager at cache scope would still be desired for cases where the user needs to configure particular indexing settings for certain caches.
> Regarding indexes, we could have one index per class or one index per class + cache name; remains to be decided.
> See discussion here: http://markmail.org/message/oe4jeq4k73f44rts
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
11 years, 3 months
[JBoss JIRA] (ISPN-3927) rethinking ISPN transactions
by Tristan Tarrant (JIRA)
[ https://issues.jboss.org/browse/ISPN-3927?page=com.atlassian.jira.plugin.... ]
Tristan Tarrant updated ISPN-3927:
----------------------------------
Fix Version/s: 7.1.0.CR1
(was: 7.1.0.Beta1)
> rethinking ISPN transactions
> ----------------------------
>
> Key: ISPN-3927
> URL: https://issues.jboss.org/browse/ISPN-3927
> Project: Infinispan
> Issue Type: Feature Request
> Components: Core
> Reporter: Mircea Markus
> Assignee: Ion Savin
> Labels: roadmap
> Fix For: 7.1.0.CR1
>
>
> Umbrella JIRA for several transaction related improvements:
> 1. Async options for commit/rollback
> - they don't really make sense as a user you don't get any guarantee on the status of the transaction
> - they complicate the code significantly
> - I think they should be removed
> 2. READ_COMMITTED
> - it has the same performance as REPEATABLE_READ, but offers less guarantees.
> - unlike REPEATABLE_READ, it also behaves inconsistently when the data is owned by transaction originator
> - I think it should be removed
> 3. Optimistic tx without Write Skew Check (WSC)
> - well, without WSC the transactions are not optimistic by definition
> - they are something else: an batch update of multiple key/values. If the batch is successful you know the update was atomic. If it failed you don't get any guarantee
> - suggestion: optimistic tx should *always* have WSC enabled (no option to configure it)
> - build our batching functionality on top of what currently is optimistic tx without WSC and document it as such
> 4. Remove 1PC option
> - I'm not totally sure about it, but does it really make sense to have 1PC as an option? they don't offer any consistency guarantees so async API + non tx do about the same thing
> [1] http://markmail.org/thread/a7fjko4dyejxqgdy
> [2] https://github.com/infinispan/infinispan/pull/2177
> [3] http://infinispan.markmail.org/thread/nl2bs7rjvayjcybv
> [4] http://infinispan.markmail.org/thread/vbg6g4otu7djazbc
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
11 years, 3 months
[JBoss JIRA] (ISPN-3938) AdvancedAsyncCacheLoader.process() concurrency issues
by Tristan Tarrant (JIRA)
[ https://issues.jboss.org/browse/ISPN-3938?page=com.atlassian.jira.plugin.... ]
Tristan Tarrant updated ISPN-3938:
----------------------------------
Fix Version/s: 7.1.0.CR1
(was: 7.1.0.Beta1)
> AdvancedAsyncCacheLoader.process() concurrency issues
> -----------------------------------------------------
>
> Key: ISPN-3938
> URL: https://issues.jboss.org/browse/ISPN-3938
> Project: Infinispan
> Issue Type: Bug
> Components: Core, Loaders and Stores
> Affects Versions: 6.0.0.Final
> Reporter: Dan Berindei
> Fix For: 7.1.0.CR1
>
>
> {{AdvancedAsyncCacheLoader.process()}} calls {{advancedLoader().process()}} to collect all the keys in the store, but the HashSet used to collect the keys it not thread-safe. This can cause problems, e.g. during state transfer:
> {noformat}
> WARN cheTopologyControlCommand | ISPN000071: Caught exception when handling command CacheTopologyControlCommand{cache=sessions, type=CH_UPDATE, sender=alfie-lt-46127, joinInfo=null, topologyId=3, currentCH=DefaultConsistentHash{numSegments=60, numOwners=1, members=[alfie-lt-46127]}, pendingCH=null, throwable=null, viewId=1}java.util.ConcurrentModificationException
> at java.util.HashMap$HashIterator.nextEntry(HashMap.java:926)
> at java.util.HashMap$KeyIterator.next(HashMap.java:960)
> at org.infinispan.persistence.async.AdvancedAsyncCacheLoader.process(AdvancedAsyncCacheLoader.java:80)
> at org.infinispan.persistence.manager.PersistenceManagerImpl.processOnAllStores(PersistenceManagerImpl.java:414)
> at org.infinispan.statetransfer.StateConsumerImpl.invalidateSegments(StateConsumerImpl.java:910)
> at org.infinispan.statetransfer.StateConsumerImpl.onTopologyUpdate(StateConsumerImpl.java:393)
> at org.infinispan.statetransfer.StateTransferManagerImpl.doTopologyUpdate(StateTransferManagerImpl.java:178)
> at org.infinispan.statetransfer.StateTransferManagerImpl.access$000(StateTransferManagerImpl.java:38)
> at org.infinispan.statetransfer.StateTransferManagerImpl$1.updateConsistentHash(StateTransferManagerImpl.java:100)
> at org.infinispan.topology.LocalTopologyManagerImpl.handleConsistentHashUpdate(LocalTopologyManagerImpl.java:191)
> at org.infinispan.topology.CacheTopologyControlCommand.doPerform(CacheTopologyControlCommand.java:152)
> at org.infinispan.topology.CacheTopologyControlCommand.perform(CacheTopologyControlCommand.java:124)
> at org.infinispan.topology.ClusterTopologyManagerImpl$3.run(ClusterTopologyManagerImpl.java:606)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:744)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
11 years, 3 months