Skip to content

[Bug][Module Name] Panic when githubRelease.PublishedAt is nil for at least one row in _tool_github_releases #8624

Closed

Description

@coocoobau

Search before asking

  • I had searched in the issues and found no similar issues.

What happened

I was forced to select that I searched in the issues and found nothing similar but I did find.
Issues #8148 and #8442 are related as well as PR #8583 which introduced the new behaviour while fixing the zero time.

The new issue is for nullable published_at field. This would be null when the release is in Draft mode and the pipeline will fail.

backend/plugins/github/tasks/release_convertor.go:76 (PublishedAt: *githubRelease.PublishedAt) is the culprit.

Screenshot of db table _tool_github_releases
image

Stack Trace:
attached stack trace -- stack trace: | github.com/apache/incubator-devlake/server/services.runPipeline | /app/server/services/pipeline_runner.go:79 | [...repeated from below...] Wraps: (2) Error running pipeline 29. Wraps: (3) attached stack trace -- stack trace: | github.com/apache/incubator-devlake/server/services.RunTasksStandalone | /app/server/services/task.go:217 | github.com/apache/incubator-devlake/server/services.(*pipelineRunner).runPipelineStandalone.func1 | /app/server/services/pipeline_runner.go:42 | github.com/apache/incubator-devlake/core/runner.runPipelineTasks | /app/core/runner/run_pipeline.go:90 | github.com/apache/incubator-devlake/core/runner.RunPipeline | /app/core/runner/run_pipeline.go:54 | github.com/apache/incubator-devlake/server/services.(*pipelineRunner).runPipelineStandalone | /app/server/services/pipeline_runner.go:38 | github.com/apache/incubator-devlake/server/services.runPipeline | /app/server/services/pipeline_runner.go:76 | github.com/apache/incubator-devlake/server/services.RunPipelineInQueue.func1 | /app/server/services/pipeline.go:371 | runtime.goexit | /usr/local/go/src/runtime/asm_amd64.s:1598 Wraps: (4) attached stack trace | -- stack trace: | | github.com/apache/incubator-devlake/server/services.RunTasksStandalone.func1 | | /app/server/services/task.go:189 | Wraps: (2) Error running task 265. | Wraps: (3) attached stack trace | -- stack trace: | | github.com/apache/incubator-devlake/core/runner.RunTask.func1 | | /app/core/runner/run_task.go:75 | | runtime.gopanic | | /usr/local/go/src/runtime/panic.go:884 | | runtime.panicmem | | /usr/local/go/src/runtime/panic.go:260 | | runtime.sigpanic | | /usr/local/go/src/runtime/signal_unix.go:841 | | github.com/apache/incubator-devlake/plugins/github/tasks.ConvertRelease.func1 | | /app/plugins/github/tasks/release_convertor.go:76 | | github.com/apache/incubator-devlake/helpers/pluginhelper/api.(*DataConverter).Execute | | /app/helpers/pluginhelper/api/data_convertor.go:105 | | github.com/apache/incubator-devlake/plugins/github/tasks.ConvertRelease | | /app/plugins/github/tasks/release_convertor.go:103 | | github.com/apache/incubator-devlake/core/runner.runSubtask | | /app/core/runner/run_task.go:425 | | github.com/apache/incubator-devlake/core/runner.RunPluginSubTasks | | /app/core/runner/run_task.go:330 | | github.com/apache/incubator-devlake/core/runner.RunPluginTask | | /app/core/runner/run_task.go:165 | | github.com/apache/incubator-devlake/core/runner.RunTask | | /app/core/runner/run_task.go:139 | | github.com/apache/incubator-devlake/server/services.runTaskStandalone | | /app/server/services/task_runner.go:114 | | github.com/apache/incubator-devlake/server/services.RunTasksStandalone.func1 | | /app/server/services/task.go:187 | | runtime.goexit | | /usr/local/go/src/runtime/asm_amd64.s:1598 | Wraps: (4) run task failed with panic (github.com/apache/incubator-devlake/plugins/github/tasks.ConvertRelease.func1:76) | Wraps: (5) runtime error: invalid memory address or nil pointer dereference | Error types: (1) *withstack.withStack (2) *errutil.withPrefix (3) *withstack.withStack (4) *errutil.withPrefix (5) runtime.errorString Error types: (1) *withstack.withStack (2) *errutil.withPrefix (3) *withstack.withStack (4) *errutil.leafError

What do you expect to happen

As far as I am concerned, if published_at is null the entire row/release should be skipped as it is a draft release.

How to reproduce

  1. Create a GitHub release in Draft mode.
  2. Execute the transform data pipeline.

Anything else

No response

Version

v1.0.3-beta7

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Activity

  1. added
    component/pluginsThis issue or PR relates to plugins
    priority/highThis issue is very important
    severity/p1This bug affects functionality or significantly affect ux
    on Oct 29, 2025
  2. dosubot commented on Oct 29, 2025

    @dosubot

    Hi @coocoobau! I'm Dosu and I’m helping the incubator-devlake team.

    The panic happens because PR #8583 changed the PublishedAt field in the GithubRelease model to a pointer (*time.Time), but the conversion logic in release_convertor.go dereferences it without a nil check, causing a crash when the value is null (as with draft releases) see PR #8583. There’s currently no safeguard in the conversion function to skip or handle releases with a null published_at see code.

    To avoid the panic, releases with a null published_at (drafts) should be skipped during transformation. There’s no documentation or built-in handling for this in the current codebase. The recommended approach is to add a check in the conversion logic to skip rows where PublishedAt is nil.

    To reply, just mention @dosu.


    Docs are dead. Just use Dosu.

    Leave Feedback Ask Dosu about incubator-devlake Share Dosu with your team

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    component/pluginsThis issue or PR relates to pluginspriority/highThis issue is very importantseverity/p1This bug affects functionality or significantly affect uxtype/bugThis issue is a bug

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions