[infinispan-issues] [JBoss JIRA] (ISPN-3722) State transfer must be enabled for Lucene Directory if clustered caches are used

Pedro Ruivo (JIRA) jira-events at lists.jboss.org
Mon Nov 18 05:47:06 EST 2013


     [ https://issues.jboss.org/browse/ISPN-3722?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Pedro Ruivo updated ISPN-3722:
------------------------------

    Description: 
take a look at the following code:

{code:java}
public Set<String> getFileList() {
      Set<String> fileList = (Set<String>) cache.get(fileListCacheKey);
      if (fileList == null) {
         fileList = new ConcurrentHashSet<String>();
         Set<String> prev = (Set<String>) cache.putIfAbsent(fileListCacheKey, fileList);
        if ( prev != null ) {
            fileList = prev;
         }
      }
      return fileList;
   }
{code}

when it requests the file list, the joiner does not have the data locally and it tries to do a putIfAbsent with an empty set. However, when it reaches the primary owner (if not changed), it will return the current file list. 
After, it tries to read the files returned in the set and it cannot find it, throwing an IOException -- "Read past EOF"

A validation should be made in order to not allow clustered caches without state transfer.

  was:
take a look at the following code:

{code:java}
public Set<String> getFileList() {
      Set<String> fileList = (Set<String>) cache.get(fileListCacheKey);
      if (fileList == null) {
         //...
         Set<String> prev = (Set<String>) cache.putIfAbsent(fileListCacheKey, fileList);
        //...
      }
      //..
      return fileList;
   }
{code}

when it requests the file list, the joiner does not have the data locally and it tries to do a putIfAbsent with an empty set. However, when it reaches the primary owner (if not changed), it will return the current file list. 
After, it tries to read the files returned in the set and it cannot find it, throwing an IOException -- "Read past EOF"

A validation should be made in order to not allow clustered caches without state transfer.


    
> State transfer must be enabled for Lucene Directory if clustered caches are used
> --------------------------------------------------------------------------------
>
>                 Key: ISPN-3722
>                 URL: https://issues.jboss.org/browse/ISPN-3722
>             Project: Infinispan
>          Issue Type: Bug
>          Components: Lucene Directory
>    Affects Versions: 6.0.0.CR1
>            Reporter: Pedro Ruivo
>            Assignee: Pedro Ruivo
>             Fix For: 6.0.0.Final
>
>
> take a look at the following code:
> {code:java}
> public Set<String> getFileList() {
>       Set<String> fileList = (Set<String>) cache.get(fileListCacheKey);
>       if (fileList == null) {
>          fileList = new ConcurrentHashSet<String>();
>          Set<String> prev = (Set<String>) cache.putIfAbsent(fileListCacheKey, fileList);
>         if ( prev != null ) {
>             fileList = prev;
>          }
>       }
>       return fileList;
>    }
> {code}
> when it requests the file list, the joiner does not have the data locally and it tries to do a putIfAbsent with an empty set. However, when it reaches the primary owner (if not changed), it will return the current file list. 
> After, it tries to read the files returned in the set and it cannot find it, throwing an IOException -- "Read past EOF"
> A validation should be made in order to not allow clustered caches without state transfer.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the infinispan-issues mailing list