Pointer Transactions are only removed from the Pointer files


Deleting a Pointer transaction removes the entries from the refs.ptr file. Thats correct.
It does not remove the transaction from 000admin nor mark it ".deleted" and it still shows in the Symbol Store Manager.
Note that no message is displayed at the end of the deletion. If the deletion is repeated it ends quickly, but again no message is displayed.
(To tell if its completed right click on transaction. If it shows the popup its completed.)
Yet if I manually delete it using symstore del it seems to do it again, and works (transaction marked .deleted), albeit with some errors - presumably the entries in refs.ptr missing:
c:\debugger\symstore del /i 0000000758 /s v:\sym
Finding ID... 0000004573
SYMSTORE: Number of references deleted = 1690
SYMSTORE: Number of files/pointers deleted = 30
SYMSTORE: Number of errors = 1660
This makes me wonder which symstore.exe you are using?
Closed Jan 19, 2010 at 6:05 AM by alerch
Changeset #33534


robe070 wrote Jan 19, 2010 at 4:05 AM

I've found the cause. We have a few PDBs that are in 2 different directories. These are indexed in the same transaction, and thus there is only one entry in refs.ptr. The first deletes the directory, the second excepts and so the deletion is terminated. Changed code is here in RemoveTransactionCommand.ProcessTransactionLine():
                    // The directory may not exist if the object is in the transaction twice.
                    // So, check before deleting it.
                    string refDir = Path.Combine(SymbolStoreObject.Location, subDir);
                    if (Directory.Exists(refDir))
                       Directory.Delete(refDir, true);

alerch wrote Jan 19, 2010 at 6:01 AM

Fixed in changeset 33534

wrote Jan 19, 2010 at 6:05 AM

wrote Jan 19, 2010 at 6:05 AM

wrote Feb 13, 2013 at 1:32 AM

wrote May 15, 2013 at 4:03 AM