jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Takahito Kikuchi (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (JCR-3958) Endless loop until async upload completes
Date Thu, 07 Apr 2016 10:26:25 GMT

    [ https://issues.apache.org/jira/browse/JCR-3958?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15230047#comment-15230047
] 

Takahito Kikuchi edited comment on JCR-3958 at 4/7/16 10:26 AM:
----------------------------------------------------------------

[~unico@apache.org], I checked the code of your fix, then there does not seem to be any problems.
And I verified as following, then it works fine.

It was not easy to do async upload in order to return {{null}} of {{remove}} purposely, so
instead I set a specified sentence such as 'abc' onto {{LRUCache#remove()}} you implemented
this time so that we can check just the behavior.

{code:java}
                //if (asyncUploadCache.hasEntry(fileName, false)) {
            	  if (asyncUploadCache.hasEntry(fileName, false) || fileName.contains("abc"))
{
{code}

To compare your fix with the previous, I built the previous version with this same condition
of specified sentence. The result is I could reproduce endless loop happened.

Next, I tried with your fix then it works fine. {{LocalCache}} with your fix can detect the
entry with the specified sentence once only, then skip it to next. Also, I confirmed the cache
purge runs well each time it reaches cachePurgeTrigFactor. That looks good.



was (Author: takahito.kikuchi):
[~unico@apache.org], I checked the code of your fix, then there does not seem to be any problems.
And I verified as following, then it works fine.

It was not easy to do async upload in order to return {{null}} of {{remove}} purposely, so
instead I set a specified sentence such as 'abc' onto {{remove}} of {{Localcache}} you implemented
this time so that we can check just the behavior.

{code:java}
                //if (asyncUploadCache.hasEntry(fileName, false)) {
            	  if (asyncUploadCache.hasEntry(fileName, false) || fileName.contains("abc"))
{
{code}

To compare your fix with the previous, I built the previous version with this same condition
of specified sentence. The result is I could reproduce endless loop happened.

Next, I tried with your fix then it works fine. {{LocalCache}} with your fix can detect the
entry with the specified sentence once only, then skip it to next. Also, I confirmed the cache
purge runs well each time it reaches cachePurgeTrigFactor. That looks good.


> Endless loop until async upload completes
> -----------------------------------------
>
>                 Key: JCR-3958
>                 URL: https://issues.apache.org/jira/browse/JCR-3958
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>    Affects Versions: 2.12.0
>            Reporter: Takahito Kikuchi
>            Assignee: Unico Hommes
>
> This is {{LocalCache#PurgeJob()}} issue.
> If the entry object in cache is removed successfully by cache.remove(), cache.entrySet
would be decreased then next entry will be retrieved and removed. However, if the entry object
is not removed due to the failure of removing the file during async upload, the entry in cache
would not be removed, then the next entry would be the same entry again by the iterator because
the iterator is not changed still. Consequently, that causes endless loop until async upload
of the file completes. If the file is larger, the endless loop will continue for a longer
time. It's harmful.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message