-
Notifications
You must be signed in to change notification settings - Fork 646
Description
Bug Description
The GitHub plugin's release converter crashes with a nil pointer dereference panic when processing certain releases, causing 100% failure rate for all pipelines processing repositories with releases.
Error Details
Error message:
runtime error: invalid memory address or nil pointer dereference
at github.com/apache/incubator-devlake/plugins/github/tasks.ConvertRelease.func1:79
Failure point: Step 30/30 - "Convert Releases" subtask
Root Cause
Commit 794f8ef added a SQL filter to exclude draft releases (published_at IS NOT NULL) but failed to add a defensive nil check before dereferencing the PublishedAt pointer in the converter function at line 79:
PublishedAt: *githubRelease.PublishedAt, // Panic if nil!Impact
- Severity: Critical
- Affected plugin: github_graphql
- Affected operations: All pipelines processing GitHub repositories with releases
- Failure rate: 100% for affected repositories
- Number of observed failures: 10 pipeline tasks (9243, 9259, 9263, 9267, 9271, 9274, 9295, 9310, 9313, 9322)
Environment
- Version: main branch (after commit 794f8ef)
- OS: macOS (Darwin 24.4.0)
- Date observed: October 31, 2025
Reproduction
- Configure a GitHub connection with repositories that have releases
- Run a pipeline to collect data from those repositories
- Observe the pipeline crash at "Convert Releases" step with nil pointer panic
Expected Behavior
The converter should safely handle releases with nil PublishedAt fields, either by:
- Skipping them gracefully (draft releases)
- Logging a warning about data inconsistency
Proposed Solution
Add a nil check before dereferencing the pointer:
if githubRelease.PublishedAt == nil {
return nil, nil
}Related
- Related commit: 794f8ef (fix: drafting releases should not be converted to domain layer)
- Pull request with fix: fix: add nil check for PublishedAt in release converter to prevent panic #8628
Additional Context
The SQL filter published_at IS NOT NULL was added to exclude draft releases, but in practice, some releases still have nil PublishedAt fields due to:
- Data inconsistency in the database
- GORM scanning issues
- Invalid timestamps that couldn't be parsed