I noticed that in your rule, you select from two tables whose names both
FROM MyEvent s INNER JOIN
MyEventEvent e ON (e.SelectRuleID =
Is "MyEvent" really your subscription class name?
When you say "run the rule in QA", do you mean that you use the NS debugging
stored procedures (NSSetQuantumClock, NSPrepareRuleFiring,
NSExecuteRuleFiring) or do you just copy & paste the rule and run it? If the
latter, then I imagine you have to edit some of the names in the FROM clause
because the NS-defined views won't exist or be populated with the right
data, so you aren't running *exactly* the same query.
I suggest you use NSSetQuantumClock to set the quantum clock back to a
quantum in which you saw the duplicate behavior. Then execute
NSPrepareRuleFiring - that will set up all the state, just as NS does when
it executes your rule. Then you can look at the actual event and
subscription views that NS uses and see if they contain the data you expect.
Learn more about SQL-NS:
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of included script samples are subject to the terms specified at
"David Van de Vate" <[email protected]> wrote in message
> Thanks in advance for your prompt attention to this question. It truly
> has me baffled.
> We are quite certain that we are acurately generating events.
> We're reasonably certain that we checked the other usual suspects.
> However, the diagnostics confirm that we generated twice that many
> The event rule in question looks something like the following. When run
> against a set of events at any point in time, it returns one correct set
> of notification data.
> however, the output from NSNotificationBatchDetails
> shows 1 NotificationBatch, 1 RuleFiring with what looks to be duplicate
> notifications in sequence. That is 1 & 2 are identical, 3 & 4, and so
> It's almost as if statement below were run in parallel against the same
> set of events (ie a mutex didn't work).
> However, setting the generator thread pool size to 1 did not change the
> Let me know what else I can pass along.
> SELECT DISTINCT
> FROM MyEvent s INNER JOIN
> MyEventEvent e ON (e.SelectRuleID =
> where e.Customfield matches something else
> *** Sent via Developersdex http://www.developersdex.com ***