zvika-finally opened a new issue, #8629:
URL: https://github.com/apache/incubator-devlake/issues/8629

   ## 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 794f8efcd 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:
   
   ```go
   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 794f8efcd)
   - **OS:** macOS (Darwin 24.4.0)
   - **Date observed:** October 31, 2025
   
   ## Reproduction
   
   1. Configure a GitHub connection with repositories that have releases
   2. Run a pipeline to collect data from those repositories
   3. 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:
   
   ```go
   if githubRelease.PublishedAt == nil {
       return nil, nil
   }
   ```
   
   ## Related
   
   - Related commit: 794f8efcd (fix: drafting releases should not be converted 
to domain layer)
   - Pull request with fix: #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


-- 
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