
| Key: |
COR-749
|
| Type: |
Bug
|
| Status: |
Closed
|
| Resolution: |
Fixed
|
| Priority: |
Blocker
|
| Assignee: |
Unassigned
|
| Reporter: |
Patrick Roemer
|
| Votes: |
0
|
| Watchers: |
0
|
|
If you were logged in you would be able to see more operations.
|
|
|
db4o Core
Created: 03/Aug/07 01:37 PM
Updated: 22/Aug/07 07:45 PM
|
|
| Component/s: |
None
|
| Affects Version/s: |
None
|
| Fix Version/s: |
Denmark - v6.3
|
|
|
Time Tracking:
|
|
Original Estimate:
|
Not Specified
|
|
|
Remaining Estimate:
|
0h
|
|
|
Time Spent:
|
8.17h
|
|
|
|
| Order: |
1
|
| Original IDS Estimate: |
1
|
| Resolution Date: |
22/Aug/07 07:45 PM
|
| Labels: |
|
| Participants: |
Patrick Roemer
|
| Number of Attachments: |
0
|
| Number of Comments: |
2
|
|
When deciding whether to map String/Array addresses for defragmenting field indexes, defragment looks at the metadata for the class index it currently is processing. This may be a parent class which doesn't know about its child class' indexed fields, so defragment will fail to create mappings for those addresses and the field indexes will be broken.
Proposed fix:
- Read ObjectHeader in SecondPassCommand#processObjectSlot() and use the resulting most specific class metadata to decide whether addresses should be mapped.
Performance improvements:
- Pass Buffer on to ReaderPair#processCopy() so it isn't read twice.
- Cache information on whether to map addresses in a ClassMetadata -> boolean map within the defrag context
|
|
Description
|
When deciding whether to map String/Array addresses for defragmenting field indexes, defragment looks at the metadata for the class index it currently is processing. This may be a parent class which doesn't know about its child class' indexed fields, so defragment will fail to create mappings for those addresses and the field indexes will be broken.
Proposed fix:
- Read ObjectHeader in SecondPassCommand#processObjectSlot() and use the resulting most specific class metadata to decide whether addresses should be mapped.
Performance improvements:
- Pass Buffer on to ReaderPair#processCopy() so it isn't read twice.
- Cache information on whether to map addresses in a ClassMetadata -> boolean map within the defrag context |
Show » |
|