Guys, I have a real mystery here.
I have a complex canvas app and lots of timers that I use as functions.
In this app I have a form that adds a student to Dataverse (populating 3 different tables with data). The Submit button triggers a sequence of two Timers, addStudent1 and addStudent2.
Each timer uses a boolean context variable to start it: startAddStudent1 and startAddStudent2, respectively.
Generally everything works fine. But there's one weird circumstance where addStudent2 is triggering on its own, causing a bad record to get added to the database.
I've narrowed down the circumstances that cause the phantom trigger--there are 3 fields in the form that check Dataverse for duplicates and notify the user (they all have the same code in their OnChange). But this code never references startAddStudent2.
The first time the form detects an existing student in the table, the user can add service, and everything is fine. The second (and subsequent) time the user tries the same thing with a different existing student, addStudent2 triggers immediately.
I looked at my variables and startAddStudent2 doesn't appear anywhere unexpected in my app. The duplicate-checking fields don't touch it.
What's more, I made a little debug label to show what happens to my variables when the bug happens:

What I discovered is that, when the bug happens, startAddStudent2 never gets set to True. Which means that addStudent2 is triggering independently of its Start condition.
Yikes!
- Is it possible for Timers to ever start for reasons other than their Start condition, or the user clicking on them?
- Are there other debugging tricks I could try to nail down exactly what is happening when my timer triggers?