Obliterate / Folder export issues

If you are having a problem using Vault, post a message here.

Moderator: SourceGear

Post Reply
HakanL
Posts: 6
Joined: Wed Feb 20, 2008 2:05 am

Obliterate / Folder export issues

Post by HakanL » Wed Feb 20, 2008 2:15 am

Hi,

we've been using Vault for a few years now and recently upgraded to 4.0. I was hoping there was a better solution for obliterate that has always been troublesome, but it doesn't seem like it. I have 14000 files that are deleted that I need to obliterate, but it's more or less failing every time on some big project folders.

First I don't like that I have to click thru all folder to find items to obliterate. I'd like to just obliterate everything that has been deleted for 30 days or something. Is there a feature like that?

But when I manually try to obliterate I usually get a lot of "Unable to Obliterate item: $/xxxx". Usually it lists files that are in branches that it relates to. However some of the listed branches neither exist or are deleted. I've checked the vault client and it doesn't show up. If I click to one of the folders in the obliterate tree view then that folder shows up in the tree, but there's nothing to obliterate. That's very weird since it doesn't show up in the vault client and there are no files to obliterate in that folder. It seems my database is a little out of sync, is there a tool to fix and repair it? I've run the DB maintenance tasks.

I figured I could export one of the main folders, delete it and import it again to get rid of deleted items. Unfortunately I get an error saying the tree structure couldn't be built. This is what the last couple of lines in the server log says:

Code: Select all

----2/19/2008 11:53:33 PM    admin--san-ocssg-pr.opencourse.local(127.0.0.1)--SSL Disabled	TreeManager: cache matches repository revision and folder security hasn't changed.  Returning cached tree, revID 73501 
----2/19/2008 11:53:33 PM    admin--san-ocssg-pr.opencourse.local(127.0.0.1)--SSL Disabled	GetTxItemDetail returned:  Success 
----2/19/2008 11:53:33 PM    admin--san-ocssg-pr.opencourse.local(127.0.0.1)--SSL Disabled	Getting Vault Folder Export delta -> Rep ID: 1 Base: 66066 Target: 66060 
----2/19/2008 11:53:33 PM    admin--san-ocssg-pr.opencourse.local(127.0.0.1)--SSL Disabled	VaultAdminServiceAPI::GetFolderExportRepositoryDelta() RepID:1 Base:66066 Target:66060  Calling VaultSqlSCC.GetRepositoryTreeDelta(). 
----2/19/2008 11:53:34 PM    admin--san-ocssg-pr.opencourse.local(127.0.0.1)--SSL Disabled	GetFolderExportRepositoryDelta returned: Success 
----2/19/2008 11:53:34 PM    admin--san-ocssg-pr.opencourse.local(127.0.0.1)--SSL Disabled	TreeManager: cache matches repository revision and folder security hasn't changed.  Returning cached tree, revID 73501 
----2/19/2008 11:53:34 PM    admin--san-ocssg-pr.opencourse.local(127.0.0.1)--SSL Disabled	GetTxItemDetail returned:  Success 
----2/19/2008 11:53:34 PM    admin--san-ocssg-pr.opencourse.local(127.0.0.1)--SSL Disabled	Getting Vault Folder Export delta -> Rep ID: 1 Base: 66060 Target: 65949 
----2/19/2008 11:53:34 PM    admin--san-ocssg-pr.opencourse.local(127.0.0.1)--SSL Disabled	VaultAdminServiceAPI::GetFolderExportRepositoryDelta() RepID:1 Base:66060 Target:65949  Calling VaultSqlSCC.GetRepositoryTreeDelta(). 
----2/19/2008 11:53:35 PM    admin--san-ocssg-pr.opencourse.local(127.0.0.1)--SSL Disabled	VaultServiceSQL.VaultDbTreeException: An error was encountered looking up the owner of a folder or file for the source code tree.  The tree was not built. Base TreeRevision: 66060 Target TreeRevision: 65949  TreeLevel: 4 ParentObjVerID: 0 ObjID: 6566 ObjVersion: 65 Name: Source PinFrom: 0 ParentPathHash: 0x6693E261D750217E23F79F16D469A09A PathHash: 0x1957C194B404E7F1471E1B8049DDC495
   at VaultServiceSQL.VaultRepUtil.BuildTreeDelta(SqlDataReader dr, Int64 nBaseRevID, Int64 nTargetRevID, Hashtable htSharedItems)
   at VaultServiceSQL.VaultSqlSCC.GetFolderExportRepositoryDelta(VaultSqlConn conn, String strSessionID, Int32 nRepID, Int64 nBaseRevID, Int64 nTargetRevID, VaultRepositoryDelta& rep)    at VaultServiceSQL.VaultRepUtil.BuildTreeDelta(SqlDataReader dr, Int64 nBaseRevID, Int64 nTargetRevID, Hashtable htSharedItems)
   at VaultServiceSQL.VaultSqlSCC.GetFolderExportRepositoryDelta(VaultSqlConn conn, String strSessionID, Int32 nRepID, Int64 nBaseRevID, Int64 nTargetRevID, VaultRepositoryDelta& rep)
----2/19/2008 11:53:35 PM    admin--san-ocssg-pr.opencourse.local(127.0.0.1)--SSL Disabled	GetFolderExportRepositoryDelta returned: FailDBInvalidTreeRecords 

Please help,
/Hakan

Beth
Posts: 8550
Joined: Wed Jun 21, 2006 8:24 pm
Location: SourceGear
Contact:

Post by Beth » Wed Feb 20, 2008 11:25 am

The first thing I should mention is that if you obliterate, then it can get in the way of exports. At this time, we don't have a way around it. If you have obliterated already, then export may be a problem.

What is the current size of your database? If I can get the .mdf size and the .ldf size that will tell me more. If your database is not extremely large, then obliterates are not really necessary. It's not something required.

Before an item can be obliterated, it's branches have to be obliterated first. If you deleted them already, then they will only be listed in the obliterate area.

There is a way to come up with a list of all the branches made from that item.
1) Open a Vault client, select the parent folder of the item you want to delete, right click, and select properties. Click on the deleted items tab and undelete the item you where having problems obliterating. Then close that window.
2) Select that folder you wanted to obliterate. Perform a History query, but for filtering, on the actions tab, only select Branch. Then you will have a list of all branches made from that. You can go through and make sure each is obliterated.
3) Then delete the original item again and try obliterating.

HakanL
Posts: 6
Joined: Wed Feb 20, 2008 2:05 am

Post by HakanL » Wed Feb 20, 2008 11:34 am

My issue is that one of the branches shows up in the explorer under Obliterate, but it doesn't show up in the Vault client, either in the tree or under deleted items.

Beth
Posts: 8550
Joined: Wed Jun 21, 2006 8:24 pm
Location: SourceGear
Contact:

Post by Beth » Wed Feb 20, 2008 4:26 pm

When you are checking that Vault client, are you right on the server or your machine? It sounds like it could be a caching problem.

On your Vault server can you perform an iisreset? (Start - Run - iisrest) Please note that action will disconnect your users from that server for a minute.

Then clear your client -side cache. You will want to keep cachemember_workingfolderassignments so that you won't have to reset them, but the rest can go.

Then check what's listed under obliterate again, versus what you see in the client.

HakanL
Posts: 6
Joined: Wed Feb 20, 2008 2:05 am

Post by HakanL » Wed Feb 20, 2008 4:59 pm

The folder that didn't show up may have been a caching issue, it doesn't show up now. I know I don't have to obliterate because of database sizes, but it's like the trashcan in Windows on your desktop, even if you have 200 GB free disk space, it bothers that there are old items that you want to get rid of. Same thing with obliterate, I want to get rid of old stuff that hasn't been used for years (left over from VSS import).

This is what I get:

Code: Select all

Unable to Obliterate item: $/opentee/development/services/xtee/branches/NGX v1

All branches of an item must be obliterated before the item itself can be obliterated. It is possible that some of the branched items have been deleted, but not obliterated. You must obliterate all branches before you can obliterate this item. This item has branches at: 
and then nothing is listed.

/Hakan

HakanL
Posts: 6
Joined: Wed Feb 20, 2008 2:05 am

Post by HakanL » Wed Feb 20, 2008 7:04 pm

Hi again,

I probably got most of this under control now. I think I now understand the relationship between branches and obliterate. I think this is the one major shortcoming in your product that you can't obliterate (hard delete) something because something has been branched off files in what you're trying to obliterate.
Ideally in my mind it would be better if the obliterate function would break the links between deleted files and branches. Here's my example:
File: ABC.cpp, version 1 created 2000-01-01 in $/ProjectA

In 2001-01-01 the file ABC.cpp is shared to $/ProjectB, say version 10.

2002-01-01 I do a branch of $/ProjectB into $/ProjectC.

2003-01-01 $/ProjectA is now completely dead and I want to get rid of everything in it so I delete it and try to obliterate it, but it won't allow me since I did a branch of $/ProjectB. What I don't really understand is why the file can't continue to live in ProjectB and ProjectC?

Thanks,
/Hakan

Beth
Posts: 8550
Joined: Wed Jun 21, 2006 8:24 pm
Location: SourceGear
Contact:

Post by Beth » Thu Feb 21, 2008 1:30 pm

I can understand wanting that. The thing is that the original history is with the original file and not copied again to the branched item. I have an open request for changing how obliterate works and I can add your "vote" to it if you wish. This has been on our radar.

HakanL
Posts: 6
Joined: Wed Feb 20, 2008 2:05 am

Post by HakanL » Thu Feb 21, 2008 1:32 pm

Yes, please add my vote, I think this is an important issue and reading your forums it seems a lot of people have issues with obliterate so this change would hopefully resolve a lot of that and make your product stronger.

Thanks,
/Hakan

Post Reply