commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Diego Rivera (Created) (JIRA)" <j...@apache.org>
Subject [jira] [Created] (JCS-88) Block cache fails to validate a cache file on startup when it contains elements with more than 2 blocks.
Date Mon, 23 Jan 2012 20:51:41 GMT
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


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

        

Mime
View raw message