[ http://issues.apache.org/jira/browse/DERBY-145?page=history ]
Mike Matrigali closed DERBY-145:
--------------------------------
Assign To: Mike Matrigali
Resolution: Won't Fix
> RAFContainer readPage method is not thread safe
> -----------------------------------------------
>
> Key: DERBY-145
> URL: http://issues.apache.org/jira/browse/DERBY-145
> Project: Derby
> Type: Bug
> Components: Store
> Versions: 10.0.2.1
> Environment: N/A
> Reporter: Rick Post
> Assignee: Mike Matrigali
> Priority: Minor
>
> readPage method comment says 'thread safe and has a synchronized block.
> But 'pageOffset' computation occurs outside the sync block as does decryption.
> This allows the (remote?) possibility of part of the operation(s) being performed using
the wrong pageNumber or pageData.
> Fix - synchronize the method rather than the block
> /**
> Read a page into the supplied array.
> <BR> MT - thread safe
> @exception IOException exception reading page
> @exception StandardException Standard Cloudscape error policy
> */
> protected void readPage(long pageNumber, byte[] pageData)
> throws IOException, StandardException
> {
> if (SanityManager.DEBUG) {
> SanityManager.ASSERT(!getCommittedDropState());
> }
> long pageOffset = pageNumber * pageSize;
> synchronized (this) {
> fileData.seek(pageOffset);
> fileData.readFully(pageData, 0, pageSize);
> }
> if (dataFactory.databaseEncrypted() &&
> pageNumber != FIRST_ALLOC_PAGE_NUMBER)
> {
> decryptPage(pageData, pageSize);
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
|