You are viewing limited content. For full access, please sign in.

Question

Question

Timer Catch Events Triggering at 6 PM, not Midnight

asked on October 4, 2017

This is a similar question to the question found here.  However, the solution posted there (upgrading to 10.2) hasn't worked for me.  (We are using 10.2.1 Update 1)

 

Some timer catch events are going at 6 PM (6 hours early).  For example, if the timer event was supposed to go at 12 AM of October 4, it triggered at 6 pm of October 3.  

 

Part of the difficulty I'm having in identifying the issue is that some timer catch events are going at midnight, on the date they should have been.  I've had cases that the exact same Timer Event on a process (same event, same activity) have one trigger go at 6 PM and another 6 hours later at Midnight.  

 

The only consistency that I've found is that if the 6 PM triggering Timer Catch is set to interrupt the attached activity, that process then terminates.  If it is not interrupting the attached activity, it merely suspends it.  From there I can retry the process, and it continues on without any issues.

 

If needed, I can provide the full error details for either the suspended or terminated tasks.  Also, in case it helps, our system Time Zone is set to UTC-07:00 Mountain Time, as are all of our processes.

 

Thanks

0 0

Replies

replied on October 10, 2017

Hi Evan,

 

I'm looking into this issue now and need your help for more details to reproduce the issue.

1. What's your settings for the Timer Catch Event

(1) Is it a boundary timer event (attached to a task) or an intermediate timer event?

(2) How is the trigger time configured? Is it Wait "For" or "Until" or "Based on a Variable"(Based on a Variable is the setting which is used by the other question post)? And is the weekends excluded?

(3) (I saw you posted above, this one is to confirm my understanding is correct) both the system time zone and process time zone are UTC-7:00 Mountain time, right?

2. How do you activate multiple catch timers at the same time?

(1) Run the same process multiple times, if so, how many times (roughly) do you run that process?

(2) Or run one process with multiple timers configured to be triggered at the same time only once?

(3) Or you run one process with multiple timers multiple times?

 

Thanks!

Ming

0 0
replied on October 10, 2017 Show version history

Hi Ming,

 

Thanks for your help with this.  In response to your questions:

 

1.1 It is a boundary timer event (attached to a task).

1.2 All timers for this Business Process are using the "Based on a variable" option.  Most of the timers in the process are 1 day after the variable, but a few are 5 days after the variable.  We also have it repeating daily on the same interval until the attached activity is completed.  In all cases, weekends are excluded.

1.3 Your understanding is correct, our system time zone, business process time zone, and all users working with this form are in the UTC-700 Mountain Time.

 

2.  We activate multiple catch timers at the same time by method of running the process multiple times.  However, there are times where two tasks are going at the same time on one process, which could trigger two timers at the same time.

(A simple summary of this process, is when a manager submits a request to add, remove, or transfer an employee, this process alerts the appropriate people to process those requests.  These timer catch events are triggering emails reminding people that these add, remove, or transfer requests have not yet been processed)

 

Here is a screenshot of the removal branch, which is the only branch to be based on the every 5 day interval.  The other branches are going every day.

Capture.JPG
Capture.JPG (58.53 KB)
0 0
replied on October 10, 2017 Show version history

Hi Evan,

 

Thanks for the details. I looked into the code base, the calculation results were correct. I tried a simple process, the timers were triggered in the expected time. So I tried to set up almost the same process as yours (or partial of your process as the screenshot). And I need some time to check whether I could reproduce the process. 

 

Also, can you share me with the error details of the suspended/terminated tasks? Hopefully we can find some clues out of that as well.

 

Thanks,

Ming 

0 0
replied on October 12, 2017

Hi Ming,

 

I will get you the error details of a terminated task as soon as I can.  (I wasn't thinking and cleared out the terminated list prior to posting my original post)

 

Here are the details for a suspended task from last night.  It ran at 6 PM, when it should have been midnight.

 

Details:
URL: 
Error: UnexpectedError
Date: 10/11/2017 6:00:10 PM (Mountain Standard Time)
HTTP Status Code: 500
Business Process ID: 204
Instance ID: 13979
Business Process Name: User Access Request

Stack Trace:
Caught exception: Laserfiche.Forms.CommonUtils.Exceptions.LFFormsException
Message: An unexpected error has occurred. [LFF502-UnexpectedError]


Inner exception: System.Data.Entity.Core.EntityCommandExecutionException
Message: An error occurred while executing the command definition. See the inner exception for details.
   at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
   at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.<GetResults>b__5()
   at System.Data.Entity.Infrastructure.DbExecutionStrategy.Execute[TResult](Func`1 operation)
   at System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   at System.Data.Entity.Core.Objects.DataClasses.EntityCollection`1.Load(List`1 collection, MergeOption mergeOption)
   at System.Data.Entity.Core.Objects.DataClasses.RelatedEnd.DeferredLoad()
   at System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.LoadProperty[TItem](TItem propertyValue, String relationshipName, String targetRoleName, Boolean mustBeNull, Object wrapperObject)
   at System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.<>c__DisplayClass7`2.<GetInterceptorDelegate>b__1(TProxy proxy, TItem item)
   at System.Data.Entity.DynamicProxies.cf_bp_dataset_12C2342C589E42965EB7171AA4B407DABF3F3AF9F8D64CE88B76A8A9C52334C8.get_cf_fields()
   at Laserfiche.Forms.Routing.VariableXMLGenerator.AddMemberData(XDocument& doc, IEnumerable`1& submissions, Int32 submissionIdInUse, Int32[] IncludedMemberIds, Boolean includeSeparators)
   at Laserfiche.Forms.Routing.VariableXMLGenerator.GenerateXml(Int32 bpInstanceId, Nullable`1 formId, cf_user_snapshot initiator, Nullable`1 submissionId, Nullable`1 initiatedTime, Nullable`1 taskTime, Boolean includeSeparators)
   at Laserfiche.Forms.Routing.VariableXMLGenerator.GetLatestProcessData(Int32 bpInstanceId, Boolean includeSeparators)
   at Laserfiche.Forms.Routing.RoutingContext.GetDataSetInXml(Int32 instanceId)
   at Laserfiche.Forms.Routing.EmailService.Execute(Int32 instanceId, IRoutingContext routingContext, RoutingInstanceStatus OriginalStatus)
   at Laserfiche.Forms.Routing.ServiceTask.Execute(Int32 instanceId, IRoutingContext routingContext)

Inner exception: System.Data.SqlClient.SqlException
Message: Invalid column name 'is_hidden'.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
   at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)

 

0 0
replied on October 12, 2017

Hi Evan,

 

The time zone issue cannot be reproduced from our side. Probably you should open a support case to let us take a closer look.

 

From the error log for the suspended email task, it's strange because the column "is_hidden" in the database should be renamed to "hide_section_label" when you upgrade your database from lower version to 10.2.1. However, seems the binary files are still trying to use the old code base.

One assumption from me could be when installing the newer version of Forms, the Routing Engine Service was still running, so the files for routing engine service didn't get updated successfully. If this is the case, then it can explain the timer calculation is not correct due to the inconsistency code files between main Forms files and Routing Engine files.

Because you said you can retry the process and it continues without errors in your original post, another assumption might be you have multiple Routing Engine Service running, so that sometimes Forms triggers the newer version one and sometimes it triggers the old version Routing Engine, makes the behavior sometimes correct and sometimes incorrect.

 

Above is just my analysis/assumptions based on the description, error log, and what I tried to reproduce. So filing a support case for the timer calculation and suspended/terminated tasks might be better to diagnose the issue and find the best resolution.

 

Thanks,

Ming

0 0
You are not allowed to follow up in this post.

Sign in to reply to this post.