Overview
After upgrading DNN Evoq, you may experience error messages related to your CoreMessagingScheduler. These messages can be frequent and can even cause the error logs to expand to several GB before the cleaning processes can run. Messages may or may not be successfully sending at this time.
The error logs for this problem will contain several different messages, including:
System.NullReferenceException: Object reference not set to an instance of an object.
and
System.IndexOutOfRangeException: Archived
Common to all these errors will be a reference to DotNetNuke.Services.Social.Messaging. In the UI error logs, these will read as a Scheduler Event Failure:
Solution
Part 1: Disabling the scheduler
- Go to Settings > Scheduler
- Take note of the current setting for Scheduler Mode so you can revert to that after you've fixed the problem (default is Timer Method)
- Set the Scheduler Mode to Disabled
If your error logs have become large enough to cause a problem for your site stability or performance, you can clear them by following the instructions in the article Fixing performance issues by truncating error logs. If disabling the scheduler doesn't stop the errors, you may need to recycle your app pool in IIS.
Part 2: Clearing the message queue
The Core Messaging Scheduler's Message Dispatch keeps its message queue in the table CoreMessaging_MessageRecipients. If an upgrade is run while the scheduler is still running, a mismatch can be created between the contents of that table and the other data stores that the messaging feature uses. To fix this problem, you will need to examine the contents of this table and delete pending messages.
WARNING: Always back up your SQL server before directly editing your database.
If you cannot truncate the entire table, you can try removing a small subset of messages. Try the following SQL queries in turn, testing the solution between each. These queries can be run directly in your preferred SQL IDE against your site's database, or they can be run in the integrated SQL Console.
- Delete messages which have not been sent and which were created before the upgrade:
-
delete from CoreMessaging_MessageRecipients
where emailsent=0
and createdondate<'2020-11-30' --Insert your upgrade date
-
- Messages which have not been sent
-
delete from CoreMessaging_MessageRecipients
where emailsent=0
-
- All messages created since one day before the upgrade
-
delete from CoreMessaging_MessageRecipients
where createdondate>dateadd(day,-1,'2020-11-30') --Insert your upgrade date
-
- All archived messages
-
delete from CoreMessaging_MessageRecipients
where archived=1
-
- All messages
-
delete from CoreMessaging_MessageRecipients
-
Testing
- Re-enable your scheduler on its original setting.
- Check the error logs regularly to ensure Core Messaging errors have stopped.
- Messages should be successfully sending.
NOTE: As per our upgrade instructions, the Scheduler should always be disabled before an upgrade is performed in the future. This will minimize the chance of this error resurfacing.
Comments
0 comments
Please sign in to leave a comment.