Admin event page freeze

Home Forums Calendar Products Events Calendar PRO Admin event page freeze

Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
    Posts
  • #1302718
    Gilles
    Participant

    Hello,

    I have a recurring event that I am trying to edit and when I try the page freezes and won’t fully load. The event is visible here:

    https://wednesdaynighthop.com/event/dj-dance-party-2016-2016-01-20/all/

    How should I go about debugging the issue? I know the obvious answer is to disable all the other plugins. But then my site won’t run properly at all.

    Thank you for any advice

    #1302727
    Gilles
    Participant

    I tried disabling all the other plugins on my dev website and the event admin page still freezes. So it looks like it is an issue with the events calendar pro plugin and recurring events.

    #1302735
    Gilles
    Participant

    Just mentioning that switching to the WordPress default theme does not help, so nothing to do with my functions.php changes.

    #1302737
    Gilles
    Participant

    The running process seems to be looping inside javascript and keeps consuming more and more memory. Activity Monitor tells me it’s at 4.09 GB of virtual men and rising.

    Here is a sample extract from Activity Monitor:

    + ! : | + ! : | + ! 262 operationGetById (in JavaScriptCore) + 2231 [0x7fff95e56ce7]
    + ! : | + ! : | + ! 261 WebCore::JSHTMLFormElement::getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&) (in WebCore) + 845 [0x7fffa095145d]
    + ! : | + ! : | + ! : 261 WebCore::HTMLFormElement::namedItem(WTF::AtomicString const&) (in WebCore) + 36 [0x7fffa0630544]
    + ! : | + ! : | + ! : 236 WebCore::HTMLFormElement::namedElements(WTF::AtomicString const&) (in WebCore) + 51 [0x7fffa0630663]
    + ! : | + ! : | + ! : | 236 WebCore::HTMLCollection::namedItems(WTF::AtomicString const&) const (in WebCore) + 73 [0x7fffa060d529]
    + ! : | + ! : | + ! : | 76 WebCore::HTMLFormControlsCollection::updateNamedElementCache() const (in WebCore) + 262,382,… [0x7fffa062f4d6,0x7fffa062f54e,…]
    + ! : | + ! : | + ! : | 66 WebCore::HTMLFormControlsCollection::updateNamedElementCache() const (in WebCore) + 453 [0x7fffa062f595]
    + ! : | + ! : | + ! : | + 25 WebCore::CollectionNamedElementCache::append(WTF::HashMap<WTF::AtomicStringImpl*, WTF::Vector<WebCore::Element*, 0ul, WTF::CrashOnOverflow, 16ul>, WTF::PtrHash<WTF::AtomicStringImpl*>, WTF::HashTraits<WTF::AtomicStringImpl*>, WTF::HashTraits<WTF::Vector<WebCore::Element*, 0ul, WTF::CrashOnOverflow, 16ul> > >&, WTF::AtomicString const&, WebCore::Element&) (in WebCore) + 172 [0x7fffa060d8dc]
    + ! : | + ! : | + ! : | + ! 16 WTF::HashTableAddResult<WTF::HashTableIterator<WTF::AtomicStringImpl*,

    #1302738
    Gilles
    Participant

    The javascript stack trace says it’s stuck in event-recurrence.js on my.add_exclusion.

    By the way, the page sometimes finally loads after something like 5 minutes, but it’s obviously completely unusable.

    #1302739
    Gilles
    Participant

    To give you a bit of a description of the event, it’s a weekly event that keeps going and has an occurrence exception once or twice every month. Right now, the event has 46 ‘will not occur on day’ exceptions.

    Note that if the plugin cannot handle so many exceptions (which I think it should), it should allow us to do it in the first place.

    Let me know what else you may need to debug this bug.

    #1302741
    Gilles
    Participant

    I confirm the javascript code is at fault, more specifically this part:

    ` if ( ‘undefined’ !== typeof data.exclusions && data.exclusions.length ) {
    for ( i in data.exclusions ) {
    this.add_exclusion( data.exclusions[ i ] );
    }//end for
    }`

    I printed out data.exclusions length and it came out as ’51’.

    #1302746
    Gilles
    Participant

    I think I’ve mostly narrowed it down to these two function calls in my.add_exclusion:

                    this.init_dropdowns(); // THIS ONE
    
                    if ( 'undefined' === typeof data ) {
                            this.toggle_rule( $rule );
                    }
    
                    // It's important to trigger the Buttonset after setup of a Recurrence
                    this.init_buttonset(); // THAT ONE
    • This reply was modified 6 years, 10 months ago by Gilles.
    • This reply was modified 6 years, 10 months ago by Gilles.
    • This reply was modified 6 years, 10 months ago by Gilles.
    #1309693
    Andras
    Keymaster

    Hello Gilles,

    Thanks for reaching out to us! I’m really sorry about this issue with the recurring events.

    We are aware of that issue. The cause of it is the following: in ECPRO version 4.3.4 we have changed how recurring events (and rules) are handled in the background. Unfortunately this caused issues on some sites with some event rules resulting in what you have also described.

    One of our recent releases contained a fix that should remedy this issue, however it doesn’t touch custom rules, as there are simply too many scenarios of those which makes it impossible to handle them.

    If the problem still exists for you after the update, then the probably the easiest would be to delete the event series and recreate it from scratch.

    Alternatively it’s possible to dig in the database and delete only the recurrences and recurrence rules, so you are left with the parent event. This was you only need to set up the recurrence rules.

    I’ll flag this thread to our developers (thanks again for all the details), might be something in here that will help us enhance the fix.

    Please let me know if I can help you any further with this.

    Cheers,
    Andras

     

    #1309732
    Andras
    Keymaster

    Could you please test something?

    Create a new recurring event with the same number of exclusions (or pretty close to it) and see if you are experiencing the same issue.

    This would help us determine if this is a bug or a separate scalability issue.

    Thanks,
    Andras

    #1312847
    Gilles
    Participant

    It can easily be replicated. Create a recurring event with just 15 exclusions will show the poor behavior, that is it will take a good 30 seconds to display its admin page. I don’t think you can call it a scalability issue with so few exclusions. I think scalability would be when you would reach 100 exclusions. Definitely a very poor implementation in my opinion. My guess is that some operations are unnecessarily repeated multiple times, and something is not right with the dropdown and buttonset code:

           my.init_dropdowns = function() {
                    $( '.recurrence-row .tribe-dropdown' ).tribe_dropdowns();
            };
    
            my.init_buttonset = function() {
                    $( tribe_buttonset.selector.input ).trigger( 'change.tribe_buttonset' );
            };
    #1314633
    Andras
    Keymaster

    Gilles, thanks a lot for checking that and sharing details. I will flag this to the developers and we’ll definitely investigate this issue.

    I am going to set the status of this ticket to “pending fix” and we will update it once there is some news or the fix is released. If you have any new questions or issues please create a new ticket and we’ll be happy to help. Thanks for your patience!

    Cheers,
    Andras

    #1454083
    Nico
    Member

    Hi there,

    Just wanted to share with you that a new maintenance release is out, including a fix for this issue. We are aware there’s more room for improvement around this area, but hopefully these initial improvements will alleviate the situation for now.

    Find out more about this release → https://theeventscalendar.com/maintenance-release-for-the-week-of-12-feburary-2018/

    Update the plugins and let us know if the fix works for your site,
    Cheers,
    Nico

    #1454617
    Gilles
    Participant

    Thank you, I will give it a try.

    #1454650
    Gilles
    Participant

    I gave it a go. It is better than before. Two things I would mention:

    1) My browser still appears to “freeze” during a few seconds while loading all occurrences/exceptions.
    2) There is no loading indicator. An asynchronous loading indicator would be helpful to show the user that the site isn’t permanently frozen.

    Thank you for working on improving the user experience.

Viewing 15 posts - 1 through 15 (of 16 total)
  • The topic ‘Admin event page freeze’ is closed to new replies.