db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-3116) totalSpace not properly initialized in AllocPage
Date Mon, 15 Oct 2007 10:23:51 GMT

    [ https://issues.apache.org/jira/browse/DERBY-3116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12534795
] 

Knut Anders Hatlen commented on DERBY-3116:
-------------------------------------------

Thanks for looking at the patch, Jørgen!

> it seems a little overkill to always reinitiate the byte[] in StoredPage.

Note that setPageBuffer() doesn't reallocate the byte array, it only sets the reference to
the byte array and refreshes some of the instance variables. I think the cost of these operations
is negligible compared to the cost of evicting the old page and initializing the new one.

> Could you achieve the same thing by moving the initSpace call from StoredPage#usePageBuffer
to StoredPage#createPage?

That might be possible, but then I think we would also have to move it into StoredPage.initFromData()
as the same problem may occur if you read an alloc page from disk instead of creating a new
one. It also seems like initSpace() depends on other variables initialized in usePageBuffer()
(slotEntrySize in particular) so we'd probably end up with moving most of the code in usePageBuffer()
into initSpace() anyway.

> Another bug? In StoredPage#initSpace, slotEntrySize is used when setting maxFieldSize.
However, initSpace is called before slotEntrySize has been updated in usePageBuffer.

This is supposed to be fixed in the current trunk (see DERBY-3099). But thanks for verifiying
that it in fact is a bug! :)

> Not related to your patch: There is a problem with the Javadoc in AllocPage (unclosed
paragraph "<p"). Fixing that would show more javadoc in the html files.

Good catch! I fixed the tag and checked it in. Now I see one more line in the javadoc, but
still there's much of it that doesn't show up. Perhaps there's a problem with the custom javadoc
tags (format_id, purpose, etc)?

> totalSpace not properly initialized in AllocPage
> ------------------------------------------------
>
>                 Key: DERBY-3116
>                 URL: https://issues.apache.org/jira/browse/DERBY-3116
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.4.0.0
>            Reporter: Knut Anders Hatlen
>            Priority: Minor
>         Attachments: d3116-1.diff
>
>
> There are some problems with the initialization of totalSpace in AllocPage. It is initialized
in StoredPage.initSpace() which is again called from StoredPage.usePageBuffer(), and it is
set to the value returned from AllocPage.getMaxFreeSpace(). The problems are:
>   1) The calculation in getMaxFreeSpace() uses borrowedSpace, but when createIdentity()
is called on an AllocPage, borrowedSpace has not been initialized when getMaxFreeSpace() is
called and the calculated size is wrong.
>   2) When a page object is reused, usePageBuffer() is only called if a new byte array
must be allocated (because the new page has a different size than the old page). This means
that the totalSize field gets the same value as in the old page if their sizes are equal,
which is not necessarily correct.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message