1fanwang commented on PR #71460:
URL: https://github.com/apache/airflow/pull/71460#issuecomment-5390963964

   > Hey @1fanwang, sorry but I have second thoughts on this one. Could you 
explain in human english the change here? Sorry but I find it difficult 
recently to read these AI generated description. Can you really explain what 
this change does? What does it allow? A before your PR vs after your PR would 
help
   
   hey @vincbeck my bad - we do NOT need this PR, and thanks for raising this!
   
   I tried to walk through this again and repro, it proved me wrong and this 
only breaks in a case that doesn't really come up in practice: a single DAG 
waiting on two assets whose watchers are configured in the exact same way - 
declared in the same DAG file
   ```
   feed_us = Asset("feed_us", watchers=[AssetWatcher(name="w", 
trigger=T(source="orders"))])
   feed_eu = Asset("feed_eu", watchers=[AssetWatcher(name="w", 
trigger=T(source="orders"))])
   
   with DAG("combined_report", schedule=[feed_us, feed_eu]):
   ```
   Airflow dedupes triggers within a single file parse, so both assets land on 
one trigger row, and the trigger gets two accessors:
   ```
    7 | feed_eu      <- one trigger row, two assets
    7 | feed_us
   ```
   The watcher example in our docs assumes one accessor, so it raises and the 
triggerer restarts it in a loop:
   ```
   [error] Trigger ID 7 exited with error Task has 2 concrete inlets and outlets
   [error] Trigger exited without sending an event. Dependent tasks will be 
failed.
   $ grep -c "concrete inlets and outlets" triggerer.log
   16
   ```
   Split across two DAG files it doesn't happen at all. Closing this and #71751.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to