[ 
https://issues.apache.org/jira/browse/NIFI-526?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joseph Witt reopened NIFI-526:
------------------------------
      Assignee: Joseph Witt

> GetHTTP may not release writeLock
> ---------------------------------
>
>                 Key: NIFI-526
>                 URL: https://issues.apache.org/jira/browse/NIFI-526
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: 0.0.2
>            Reporter: Mark Latimer
>            Assignee: Joseph Witt
>            Priority: Minor
>              Labels: beginner, newbie
>             Fix For: 0.1.0
>
>         Attachments: 
> 0001-NIFI-526-move-check-into-try-so-writeLock-is-release.patch
>
>
> GetHTTP onTrigger process contains a path that will obtain and not release 
> the writeLock.
> This happens if enough time elapses between the first and second check of 
> timeToPersist.
> Also the readLock locked and unlocked with no meaningful work in between.
> {code:title=GetHTTP.java|borderStyle=solid}
>               if ((etag != null || lastModified != null) && 
> readLock.tryLock()) {
>                     try {
>                       //first check of timeToPersist against current time
>                         if (timeToPersist < System.currentTimeMillis()) {
>                           readLock.unlock();
>                           //obtain writeLock
>                             writeLock.lock();
>                           //check time to persist again, this result may be 
> different
>                           //if the result is different because enough time 
> has elapsed the lock is not released
>                             if (timeToPersist < System.currentTimeMillis()) {
>                                 try {
>                         
>                                ...
>          
>                                } finally {
>                                   readLock.lock();
>                                   //release writeLock only if the second 
> check of timeToPresist is before now.
>                                     writeLock.unlock();
>                                 }
>                             }
>                         }
>                     } finally {
>                         readLock.unlock();
>                     }
>                 }
> {code}



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

Reply via email to