[Glass] Experiences migrating a Gemstone/S database
Dale Henrichs
dale.henrichs at gemtalksystems.com
Fri Dec 20 10:11:23 PST 2019
Marten,
Thanks for the stack ... For completeness, could you share the code in
the removeAllIndices:total: with me? I would like to reproduce this
problem, so the number of concurrent processes doing removal would be
useful, as well ... Concurrent bugs are always difficult to track down
(and reproduce) so the more information I have the better.
I've submitted a bug: "48485 'CorruptObj, FetchObjId fetch past end'
during concurrent index removal" to track this problem.
Finally I am curious if you have tried `IndexManager removeAllIndexes`?
It is intended for use in the case where you are removing all of the
indexes in the system ... Instead of removing the individual objects
participating in the indexes (which is what is done by the standard
remove index code), the index data structures (btrees, etc.) are simply
dropped on the floor --- the objects participating in index are removed
directly from the dependency lists, so it should be quite a bit faster
than removing each individual index from it's collection ...
Dale
On 12/20/19 7:45 AM, Marten Feldtmann wrote:
> This is the error I get from my tasks which are removig indices. The
> code works, when its running alone. My working theory is, that the
> RcConflictSet in the IndexManager instance is the reason for this
> failure ... but I have no proof for that.
>
> the commitTransaction in line 16 is just after I remove all indices
> from ONE structure. the removeIndex code is a copy of the createIndex
> code, so iI think, that all tasks are working on their own (not
> common) data
>
> ERROR 2261 , a InternalError occurred (error 2261), The object with
> object ID 1480033747713 is corrupt. Reason: 'CorruptObj, FetchObjId
> fetch past end' (InternalError)
> topaz > exec iferr 1 : where
> ==> 1 InternalError (AbstractException) >> _signalFromPrimitive: @6
> line 15
> 2 DepListTable >> depListBucketFor: @1 line 1
> 3 DepListTable >> _add: @3 line 8
> 4 DepListTable (Object) >> perform:withArguments: @1 line 1
> 5 LogEntry >> redo @2 line 5
> 6 RedoLog >> _redoOperationsForEntries: @6 line 4
> 7 DepListTable (Object) >> _abortAndReplay: @15 line 20
> 8 DepListTable >> _resolveRcConflictsWith: @3 line 10
> 9 System class >> _resolveRcConflicts @21 line 26
> 10 System class >> _resolveRcConflictsForCommit: @4 line 8
> 11 [] in System class >> _localCommit: @28 line 42
> 12 ExecBlock0 (ExecBlock) >> onException:do: @2 line 66
> 13 System class >> _localCommit: @16 line 44
> 14 SessionMethodTransactionBoundaryPolicy
> (TransactionBoundaryDefaultPolicy) >> commit: @3 line 3
> 15 System class >> _commit: @8 line 16
> 16 System class >> commitTransaction @5 line 7
> 17 [] in WCATIServiceClass class >> removeAllIndices:total: @59 line 28
> 18 SortedCollection (Collection) >> do: @6 line 10
> 19 WCATIServiceClass class >> removeAllIndices:total: @35 line 24
> 20 Executed Code @2 line 1
> 21 GsNMethod class >> _gsReturnToC @1 line 1
> topaz 1> commit
> ERROR 2249 , a TransactionError occurred (error 2249), Further commits
> have been disabled for this session because: 'CorruptObj, FetchObjId
> fetch past end'. This session must logout. (TransactionError)
> topaz > exec iferr 1 : where
> ==> 1 TransactionError (AbstractException) >> _signalFromPrimitive: @6
> line 15
> 2 System class >> _primitiveCommit: @1 line 1
> 3 [] in System class >> _localCommit: @21 line 30
> 4 ExecBlock0 (ExecBlock) >> onException:do: @2 line 66
> 5 System class >> _localCommit: @9 line 31
> 6 SessionMethodTransactionBoundaryPolicy
> (TransactionBoundaryDefaultPolicy) >> commit: @3 line 3
> 7 System class >> _commit: @8 line 16
> 8 System class >> _gciCommit @5 line 5
> 9 GsNMethod class >> _gsReturnToC @1 line 1
> topaz 1> doit
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gemtalksystems.com/mailman/private/glass/attachments/20191220/d914c6e5/attachment-0001.htm>
More information about the Glass
mailing list