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

Thomas Vandahl resolved JCS-88.
-------------------------------

       Resolution: Fixed
    Fix Version/s: jcs-1.4-dev

Added the test contained in the patch. The problem was already fixed.
                
> Block cache fails to validate a cache file on startup when it contains 
> elements with more than 2 blocks.
> --------------------------------------------------------------------------------------------------------
>
>                 Key: JCS-88
>                 URL: https://issues.apache.org/jira/browse/JCS-88
>             Project: Commons JCS
>          Issue Type: Bug
>    Affects Versions: jcs-1.3
>            Reporter: Diego Rivera
>            Assignee: Thomas Vandahl
>             Fix For: jcs-1.4-dev
>
>         Attachments: jcs-1.3a-JCS-87-patch.patch
>
>   Original Estimate: 0h
>  Remaining Estimate: 0h
>
> The arithmetic for calculating block sizes is wrong.  The code adds a term 
> that shouldn't be considered at that point.  For each block that needs to be 
> written, the size of the block is currently calculated as:
> int chunkSize = Math.min( totalUsed + maxChunkSize, totalBytes - totalUsed )
> The term "totalUsed" should not be added to maxChunkSize, since the intent is 
> to construct a chunk that's either as big as is allowed (maxChunkSize) or as 
> big as the remaining bytes (totalBytes - totalUsed).  Thus, the correct 
> calculation should be:
> int chunkSize = Math.min( maxChunkSize, totalBytes - totalUsed )
> The problem occurs in 
> src/java/org/apache/jcs/auxiliary/disk/block/BlockDisk.java, line 196, inside 
> byte[][] getBlockChunks(byte[] complete, int numBlocksNeeded).
> A patch has been devised and will be submitted as a comment (since 
> attachments aren't possible at this point).  I still need to take the time to 
> devise a unit test for this since the existing unit test passed without issue.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to