jerrong / Sitecore-Item-Buckets

Manage Large Repositories of Content in Sitecore
18 stars 19 forks source link

[DatabaseCrawler] System.InvalidOperationException exception during navigating on content tree #25

Closed ob1dev closed 11 years ago

ob1dev commented 11 years ago

Item Buckets might throws the following exception in Sitecore Log file during navigating on content tree:

ERROR Could not update index entry. Action: 'RemovedVersion', Item: '{E3E8C81D-1718-49CA-90B2-63382A0655F8}' Exception: System.InvalidOperationException Message: Version is not passed to RemoveVersion handler Source: Sitecore.Kernel at Sitecore.Diagnostics.Assert.IsNotNull(Object value, String message) at Sitecore.ItemBucket.Kernel.Kernel.RemoteCrawlers.RemoteDatabaseCrawler.Provider_OnRemoveVersion(Object sender, EventArgs e) in p:\SitecoreItemBuckets\src\ItemBucket.Kernel\Kernel\RemoteCrawlers\RemoteDatabaseCrawler.cs:line 539 at System.EventHandler.Invoke(Object sender, EventArgs e) at Sitecore.Data.Managers.IndexingProvider.RemoveVersion(HistoryEntry entry, Database database) at Sitecore.Data.Managers.IndexingProvider.UpdateIndex(HistoryEntry entry, Database database)

The reason why this happens is because incorrect implicit type conversion is used in the Sitecore.ItemBucket.Kernel.Kernel.RemoteCrawlers. RemoteDatabaseCrawler.Provider_OnRemoveVersion(object sender, EventArgs e) method of the Sitecore.ItemBucket.Kernel project. Instead of the “Sitecore.Data.Version” type, it uses “System.Version” one

To fix this issue you need to use “Sitecore.Data.Version” type: . . . Sitecore.Data.Version version = SitecoreEventArgs.GetObject(e, 3) as Sitecore.Data.Version; Assert.IsNotNull(version, "Version is not passed to RemoveVersion handler"); using (IndexDeleteContext context = this._index.CreateDeleteContext()) { this.DeleteVersion(iD, language.ToString(), version.ToString(), context); context.Commit(); } . . .

ob1dev commented 11 years ago

This issue is fixed in Sitecore CMS 7.0.