05-17-06 12:14 AM
Hi Jeremy,
I believe it was suspended (not resumable) because the call to the
RuleEngine did not have an exception handler. As far as I know
un-handled exceptions result in suspensions that are not resumable.
If the call to the RuleEngine is contained within a scope and the
transaction type is set to Long Running, an exception handler can be
added. In your case I think you would want to start by handling
'System.Data.SqlClient.SqlException' with a 'suspend' shape. Exceptions
of this type will result in a suspended resumable message when properly
handled.
Hope this helps
Chuck
Jeremy Chapman wrote:
> Last night we had an issue where connection to our data center was lost.
> Our biztalk databases are hosted on servers in the datacenter, so in this
> case the biztalk servers were not able to access the databases. Typically
> this doesn't pose too much of a problem except when it comes to the rules
> engine. We have a biztalk solution which involves an orchestration callin
g
> a rules engine. At some point during our datacenter outage, biztalk
> suspended the orchestration (not resumable) because the rules engine could
> not be called. Shouldn't biztalk do a certain number of retries rather th
an
> just suspending the message outright? Second, why is it not resumable? I
s
> there any way of setting retry values and behavior?
>
>
>
> Microsoft.RuleEngine.RuleStoreCompatibilityCheckException: Error checking
> compatibility of database "BizTalkRuleEngineDb" on server "dc1serv53\QA".
> Database is either not configured as a rule engine database, or you do not
> have sufficient permissions to access the database. --->
> System.Data.SqlClient.SqlException: General network error. Check your
> network documentation.
>
> --- End of inner exception stack trace ---
>
>
> Server stack trace:
> at Microsoft.RuleEngine.SqlRuleStore.TestConnection()
>
> at Microsoft.RuleEngine.SqlRuleStore..ctor(String location)
>
> at
> Microsoft.BizTalk.RuleEngineExtensions.RuleSetDeploymentDriver.GetRuleStor
e()
>
> at
> Microsoft.RuleEngine.RemoteUpdateService.RemoteUpdateService.ValidateUser(
)
>
> at
> Microsoft.RuleEngine.RemoteUpdateService.RemoteUpdateService.RegisterPolic
yAuthorizationUpdateCallback(RemoteUpdat
eCallbackRepeater
> proc)
>
> at
> System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(M
ethodBase
> mb, Object[] args, Object server, Int32 methodPtr, Boolean
> fExecuteInContext, Object[]& outArgs)
>
> at
> System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMes
sage
> msg, Int32 methodPtr, Boolean fExecuteInContext)
>
> Exception rethrown at [0]:
> at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessa
ge
> reqMsg, IMessage retMsg)
>
> at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
> msgData, Int32 type)
>
> at
> Microsoft.RuleEngine.IRuleEngineUpdateServiceInterface.RegisterPolicyAutho
rizationUpdateCallback(RemoteUpdateCallb
ackRepeater
> proc)
>
> at
> Microsoft.RuleEngine.RemoteUpdateService.RemoteUpdateServiceProxy.Register
PolicyAuthorizationUpdateCallback(Remote
UpdateCallbackRepeater
> proc)
>
> at
> System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(M
ethodBase
> mb, Object[] args, Object server, Int32 methodPtr, Boolean
> fExecuteInContext, Object[]& outArgs)
>
> at
> System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMes
sage
> msg, Int32 methodPtr, Boolean fExecuteInContext)
>
> Exception rethrown at [1]:
> at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessa
ge
> reqMsg, IMessage retMsg)
>
> at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
> msgData, Int32 type)
>
> at
> Microsoft.RuleEngine.RemoteUpdateService.RemoteUpdateServiceProxy.Register
PolicyAuthorizationUpdateCallback(Remote
UpdateCallbackRepeater
> proc)
>
> at Microsoft.RuleEngine.RuleEngineCache..ctor()
>
> at Microsoft.RuleEngine.Policy..ctor(String policyName)
>
> at
> InteriorHealth.Orchestrations.PromisADT.RouteADT.segment3(StopConditions
> stopOn)
>
> at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s,
> StopConditions stopCond, Exception& exp)
> Microsoft.RuleEngine.RuleStoreCompatibilityCheckException
> Scoped@
> RouteADT.??__scope0
> RouteADT.traCallRule
> RouteADT.RouteADT
> ADT_03.ADT_03
> 00000000-0000-0000-0000-000000000000
[ Post a follow-up to this message ]
|