set.go: panic when adding cron without ENABLE_CRON

Issue #276 resolved
Trek Hopton created an issue

Creating a cron on a VidGrind instance that doesn’t have ENABLE_CRON set to true causes a panic when a cron is added via the cron page.

ERROR 2023-08-17T05:23:55.061195Z 2023/08/17 05:23:54 http: panic serving 127.0.0.1:43407: runtime error: invalid memory address or nil pointer dereference goroutine 29022 [running]: net/http.(*conn).serve.func1() /layers/google.go.runtime/go/src/net/http/server.go:1825 +0xbf panic({0xcbbac0, 0x14e9470}) /layers/google.go.runtime/go/src/runtime/panic.go:844 +0x258 main.(*scheduler).set(0x0, 0xc000a72ea0) /layers/google.go.appengine-gomod/srv/cron.go:108 +0xb9 main.editCronsHandler({0xf55630, 0xc000603c00}, 0xc00013f700) /layers/google.go.appengine-gomod/srv/set.go:673 +0x685 net/http.HandlerFunc.ServeHTTP(0x72?, {0xf55630?, 0xc000603c00?}, 0xc000a0d100?) /layers/google.go.runtime/go/src/net/http/server.go:2084 +0x2f net/http.(*ServeMux).ServeHTTP(0x0?, {0xf55630, 0xc000603c00}, 0xc00013f700) /layers/google.go.runtime/go/src/net/http/server.go:2462 +0x149 net/http.serverHandler.ServeHTTP({0xf527f0?}, {0xf55630, 0xc000603c00}, 0xc00013f700) /layers/google.go.runtime/go/src/net/http/server.go:2916 +0x43b net/http.(*conn).serve(0xc00073fb80, {0xf56170, 0xc000191290}) /layers/google.go.runtime/go/src/net/http/server.go:1966 +0x5d7 created by net/http.(*Server).Serve /layers/google.go.runtime/go/src/net/http/server.go:3071 +0x4db
  {
    "textPayload": "2023/08/17 05:23:54 http: panic serving 127.0.0.1:43407: runtime error: invalid memory address or nil pointer dereference\ngoroutine 29022 [running]:\nnet/http.(*conn).serve.func1()\n\t/layers/google.go.runtime/go/src/net/http/server.go:1825 +0xbf\npanic({0xcbbac0, 0x14e9470})\n\t/layers/google.go.runtime/go/src/runtime/panic.go:844 +0x258\nmain.(*scheduler).set(0x0, 0xc000a72ea0)\n\t/layers/google.go.appengine-gomod/srv/cron.go:108 +0xb9\nmain.editCronsHandler({0xf55630, 0xc000603c00}, 0xc00013f700)\n\t/layers/google.go.appengine-gomod/srv/set.go:673 +0x685\nnet/http.HandlerFunc.ServeHTTP(0x72?, {0xf55630?, 0xc000603c00?}, 0xc000a0d100?)\n\t/layers/google.go.runtime/go/src/net/http/server.go:2084 +0x2f\nnet/http.(*ServeMux).ServeHTTP(0x0?, {0xf55630, 0xc000603c00}, 0xc00013f700)\n\t/layers/google.go.runtime/go/src/net/http/server.go:2462 +0x149\nnet/http.serverHandler.ServeHTTP({0xf527f0?}, {0xf55630, 0xc000603c00}, 0xc00013f700)\n\t/layers/google.go.runtime/go/src/net/http/server.go:2916 +0x43b\nnet/http.(*conn).serve(0xc00073fb80, {0xf56170, 0xc000191290})\n\t/layers/google.go.runtime/go/src/net/http/server.go:1966 +0x5d7\ncreated by net/http.(*Server).Serve\n\t/layers/google.go.runtime/go/src/net/http/server.go:3071 +0x4db",
    "insertId": "64ddaeeb0000ef0be4493b72",
    "resource": {
      "type": "gae_app",
      "labels": {
        "version_id": "8",
        "project_id": "vidgrind",
        "zone": "australia-southeast1-3",
        "module_id": "default"
      }
    },
    "timestamp": "2023-08-17T05:23:55.061195Z",
    "severity": "ERROR",
    "labels": {
      "clone_id": "00c61b117cbc08a496c2449f5040145fc2c7b111181812c107fbd937dadc81b4cf81ed5c9905b5221d65d4058f59e558229a4cd3be539f82e83e8c"
    },
    "logName": "projects/vidgrind/logs/stderr",
    "receiveTimestamp": "2023-08-17T05:23:55.348404091Z"
  }

editCronHandler in set.go calls cronScheduler.set() but cronScheduler was never initialise due to ENABLE_CRON being false.

For now we can use the instance of OceanCron to set crons and broadcast repeats because ENABLE_CRON is true.

Comments (1)

  1. Log in to comment