Exchange public folders search fail: Error while crawling LOB contents

Crawling fails for Large Exchange Public Folders

Recently I faced an interesting issue with crawling exchange public folders with SharePoint Search. I’d like to share a few details and a solutions that fixes it.

Our Exchange Public Folder crawling fails with “Internal Error Occured” messages. Interestingly but not all folder fail to crawl, only several ones.

exchange://XXXX.XXXX.XXX/owa/? ae=Folder&t=IPF.Note &id=PSF.LgAAAAAaRHOQq &pspid=_1349876110817_788781350  &s_p=https&s_ce=0000000g1q0enrplrak9g67lu00000000

Error while crawling LOB contents. ( An internal server error occurred. Try again later. )

exchange

This issues reproduced on FAST Search for SharePoint, as well as for SharePoint 2010 Enterprise Search. Later on we tested it on SharePoint 2013 Search and still had the same problem. In depth examination of  ULS logs revealed following errors.

03/14/2013 16:00:42.51 mssdmn.exe (0x11EC) 0x1D00 SharePoint Server Search FilterDaemon e4ye High FLTRDMN: Errorinfo is “An internal server error occurred. Try again later.” [fltrsink.cxx:553] d:\office\source\search\native\mssdmn\fltrsink.cxx

03/14/2013 16:00:42.51 mssearch.exe (0x06B0) 0x22DC SharePoint Server Search GatherSvc fus3 Medium Transaction failed in plugin RHTG Url pf://xxxx.xxxx.com/owa/? ae=Folder &t=IPF.Note &id=PSF.AEpHAAAB  &pspid=_1363252609418_378466705 Error 0x8004fd11 [gthrtrx.cxx:1042] d:\office\source\search\native\gather\gthrsvc\gthrtrx.cxx

After various troubleshooting sessions with Microsoft Support Services we identified that only folders with 500+ messages fail to be crawled.

Problem Solution

It turned out that it was Exchange Server throttling that caused such behavior. In order to resolve this issue you need to apply two fixes.

1. Disable Throttling for the Default Access Account of SharePoint on Exchange

  • Open Microsoft Exchange Management Shell on your Exchange Database Server, then
    • Start > Microsoft Exchange Server 2010 > Exchange Management Shell;
  • Execute:
    • New-ThrottlingPolicy SharePoint  //this will create new Throttling policy with name “SharePoint”;
  • Execute:
    • Set-ThrottlingPolicy SharePoint -RCAMaxConcurrency $NULL -RCAPercentTimeInCAS $NULL -RCAPercentTimeInMailboxRPC $NULL -RCAPercentTimeInAD $NULL -EWSMaxConcurrency $NULL -EWSPercentTimeInAD $NULL -EWSPercentTimeinCAS $NULL -EWSPercentTimeInMailboxRPC $NULL -EWSMaxSubscriptions $NULL -EWSFastSearchTimeoutInSeconds $NULL -EWSFindCountLimit $NULL
  • If you have  Microsoft Exchange Server is 2010 SP1, then execute:
    •  Set-ThrottlingPolicy SharePoint -CPAMaxConcurrency $NULL -CPAPercentTimeInCAS $NULL -CPAPercentTimeInMailboxRPC $NULL
  • In order to validate correct settings execute:
    • Get-ThrottlingPolicy SharePoint
  • Following properties should not have any value:
    • CPAMaxConcurrency (Exchange 2010 SP1)
    • CPAPercentTimeInCAS (Exchange 2010 SP1)
    • CPAPercentTimeInMailboxRPC (Exchange 2010 SP1)
    • EWSMaxConcurrency
    • EWSPercentTimeInAD
    • EWSPercentTimeInCAS
    • EWSPercentTimeInMailboxRPC
    • EWSMaxSubscriptions
    • EWSFastSearchTimeoutInSeconds
    • EWSFindCountLimit
    • RCAMaxConcurrency
    • RCAPercentTimeInAD
    • RCAPercentTimeInCAS
    • RCAPercentTimeInMailboxRPC
  •  To apply Throttling policy for SharePoint account – execute:
    • Set-Mailbox <Domain>\<UserName-DefaultContentAccessAccount> -ThrottlingPolicy SharePoint

2. Increase max concurrent objects for Exchange session on Exchange Servers

  • On you Exchange Database Server open following registry folder:
    • HKLM\System\CurrentControlSet\Services\MSExchangeIS\ParametersSystem\
  • Create new key
    • MaxObjsPerMapiSession
  • Create new Dword (32-bit) entry
    • objtFolder and assign value 1000 ;
  • Create new Dword (32-bit) entry
    • objtMessage and assign value 500;
  • Reboot Exchange servers
  • Do Full recrawl of you Content Source

Enjoy! Your large exchange folders should be successfully crawled now!

Advertisements
%d bloggers like this: