November Happy Hour will be moved to Thursday December 5th.

Community 3.2: Request timed out when deleting a club

Vote:
 

Hi,

in a modest size deployment of EPiServer, I am getting "request timed out" error messages when attempting to delete a club. I've drilled into the EPiServer.Community 3.2 code using Reflector and found out that a single deletion triggers multiple, possibly hundreds, calls between the .Net code and DB. Is this time out a know problem? Possibly fixed in version 4? Or do I have to write my own stored procedure for deleting clubs?

#47280
Jan 21, 2011 15:10
Vote:
 

It's not an issue that I'm aware of, do you have any additional information and I could try to look it up...?

#47327
Jan 24, 2011 13:57
Vote:
 

I've looked into what's needed to upgrade to Community 4.0 - seems that this is too complicated to really be a solution to my problem. Not to mention that the client would have to buy a new EPi 6 license, as the site runs on EPi 5 currently. That's a pity, as the Community 4 replaces the [--] code with a single DELETE. A brand new database schema, I guess.

OK, current situation using 3.2, EPiServer 5, Relate+ 1: the Community 3.2 code for deleting a club is not pretty, but it works - up to the point where an event is triggered in the .Net code (FrameworkFactoryBase.OnEntityRemoved), which in turn invokes stored procedure spEPiServerCommunityNewsFeedRemoveStoriesByEntity (from NewsFeedModule.FrameworkFactoryBase_EntityRemoved). This throws time out and causes the whole transaction to be reverted. Increasing the execution timeout (<httpRuntime executionTimeout="1800"/>) allows the call to succeed. However, it puts the DB server under 90% CPU load on a single core for 3 minutes  - that's not a workaround that I'm willing to use on the live site.

#47331
Jan 24, 2011 15:28
Vote:
 

Further information: the guilty part is this SQL:

SELECT intID FROM tblEPiServerCommunityNewsFeedStory as s WHERE
        NOT EXISTS (SELECT * FROM tblEPiServerCommunityNewsFeedStoryTarget AS t WHERE t.intStoryID = s.intID) OR
        NOT EXISTS (SELECT * FROM tblEPiServerCommunityNewsFeedStoryActor AS a WHERE a.intStoryID = s.intID)
    DELETE FROM tblEPiServerCommunityNewsFeedStory where intID IN (
        SELECT intID FROM tblEPiServerCommunityNewsFeedStory as s WHERE
        NOT EXISTS (SELECT * FROM tblEPiServerCommunityNewsFeedStoryTarget AS t WHERE t.intStoryID = s.intID) OR
        NOT EXISTS (SELECT * FROM tblEPiServerCommunityNewsFeedStoryActor AS a WHERE a.intStoryID = s.intID)
    );

As the tblEPiServerCommunityNewsFeedStoryTarget has over 0.5M entries, tblEPiServerCommunityNewsFeedStoryActor has over 0.5M entries and tblEPiServerCommunityNewsFeedStory has over 0.5M entries, this is quite costly.

#47333
Jan 24, 2011 16:46
Vote:
 

Ah. This more detailed description (which isn't directly related to the clubs) I do recognize, I believe you can contact EPiSupport for a fix.

#47334
Jan 24, 2011 16:55
This thread is locked and should be used for reference only. Please use the Legacy add-ons forum to open new discussions.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.