feat: per-task Slack notifications with configurable filters - #74
feat: per-task Slack notifications with configurable filters#74adamrtalbot wants to merge 5 commits into
Conversation
Closes #34 Generated by Codex Co-authored-by: Cursor <cursoragent@cursor.com>
Generated by Codex Co-authored-by: Cursor <cursoragent@cursor.com>
Generated by Codex Co-authored-by: Cursor <cursoragent@cursor.com>
Generated by Codex Co-authored-by: Cursor <cursoragent@cursor.com>
Code ReviewThis PR adds Bugs
Seqera Platform button polling timers are never cancelled Missing
No docs or example configuration |
Code ReviewThis PR adds Bugs1. Fix: 2. for (String label : labels ?: Collections.<String>emptyList()) {
if (regex.matcher(label).matches()) return !isNegated
}
return isNegated // <-- true when isNegated=true, labels=[]A task with zero labels matches any Fix: the final 3. Fix: wrap 4. Non-atomic throttle check-and-set Fix: use a synchronized block or Minor5. New Documentation6. No documentation or example config for |
Code ReviewThis PR adds Findings (most-severe first)[Bug]
Fix: replace with [Bug] Throttle check-then-set is not atomic if (lastTaskNotificationTime.get() > 0 && (now - lastTaskNotificationTime.get()) < taskThrottleIntervalMs) return
// ...send...
lastTaskNotificationTime.set(now)
[Bug] Before this PR, [Bug] Timer thread leak in Seqera button polling Each recursive retry call creates [Documentation]
MinorThe |
Fix concurrency bugs, label selector edge cases, timer reuse, progress failed-count accuracy, Seqera button on task messages, and docs. Generated by Codex Co-authored-by: Cursor <cursoragent@cursor.com>
|
Addressed Claude review in 16dba89:
|
adamrtalbot
left a comment
There was a problem hiding this comment.
A nice idea but this seems like a lot of complexity.
It might make more sense to extend the core Nextflow plugin extension points to include withName/withLabel filters instead.
Summary
slack.onTaskCompletewith Nextflow-stylewithName/withLabelselectors, per-selectorminDuration,onFirstFailure, andthrottleIntervalSlackObserver.onProcessCompleteto send Block Kit task messages (process, duration, exit, peak memory/CPU, work dir) as thread replies when threading is enabledCloses #34
Test plan
./gradlew testonTaskCompletewithwithNameselector against a long-running processonFirstFailuresends on first failed taskMade with Cursor