yalla-coop / cost-of-living-support

GNU General Public License v3.0
1 stars 0 forks source link

column s.theme_key does not exist #295

Closed hassanelnajjar closed 11 months ago

hassanelnajjar commented 11 months ago

Please select the priority level by adding one of the following labels to this issue?

Priority-1 (Critical e.g. the website is down, multiple users unable to log into platform)

Describe the bug and the expected behaviour.

This is the full JSON object from Sentry

{
  "event_id": "a2f650de6eb744d1ba7475b4f025ed72",
  "project": 4504276397981696,
  "release": null,
  "dist": null,
  "platform": "node",
  "message": "",
  "datetime": "2023-09-29T09:29:58+00:00",
  "tags": [
    ["browser", "Googlebot 2.1"],
    ["browser.name", "Googlebot"],
    ["environment", "production"],
    ["handled", "yes"],
    ["level", "error"],
    ["mechanism", "generic"],
    ["os", "Ubuntu Linux 22.04"],
    ["os.name", "Ubuntu Linux"],
    ["runtime", "node v14.21.3"],
    ["runtime.name", "node"],
    ["server_name", "5cea30a9-ba0c-44c4-9521-ccb223aa9f61"],
    ["transaction", "GET /"],
    ["url", "http://col-helper.co.uk/api/sections"]
  ],
  "_meta": {
    "request": {
      "cookies": {
        "1": {
          "1": { "": { "rem": [["@password:filter", "s", 0, 10]], "len": 36 } }
        },
        "2": {
          "1": { "": { "rem": [["@anything:filter", "s", 0, 10]], "len": 24 } }
        }
      },
      "headers": {
        "23": {
          "1": { "": { "rem": [["@password:filter", "s", 0, 10]], "len": 36 } }
        }
      }
    }
  },
  "_metrics": { "bytes.ingested.event": 10938, "bytes.stored.event": 23452 },
  "contexts": {
    "app": {
      "app_start_time": "2023-09-28T21:47:05.917Z",
      "app_memory": 63418368,
      "type": "app"
    },
    "browser": { "name": "Googlebot", "version": "2.1", "type": "browser" },
    "culture": { "locale": "en-US", "timezone": "UTC", "type": "culture" },
    "device": {
      "arch": "x64",
      "memory_size": 66350264320,
      "free_memory": 4167561216,
      "boot_time": "2023-09-26T20:07:53.141Z",
      "processor_count": 8,
      "cpu_description": "Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz",
      "processor_frequency": 2899,
      "type": "device"
    },
    "os": {
      "name": "Ubuntu Linux",
      "version": "22.04",
      "kernel_version": "5.15.0-1041-aws",
      "type": "os"
    },
    "runtime": { "name": "node", "version": "v14.21.3", "type": "runtime" },
    "trace": {
      "trace_id": "7aae8b109caf492088d4b719202dccbe",
      "span_id": "81bb2e169e9d3073",
      "parent_span_id": "bedd7ae6933963c0",
      "op": "http.server",
      "status": "unknown",
      "type": "trace"
    }
  },
  "culprit": "GET /",
  "environment": "production",
  "errors": [
    {
      "type": "js_no_source",
      "symbolicator_type": "missing_source",
      "url": "/app/server/node_modules/pg-protocol/dist/index.js"
    },
    {
      "type": "js_no_source",
      "symbolicator_type": "missing_source",
      "url": "/app/server/node_modules/pg-protocol/dist/parser.js"
    }
  ],
  "exception": {
    "values": [
      {
        "type": "error",
        "value": "column s.theme_key does not exist",
        "stacktrace": {
          "frames": [
            {
              "function": "TLSWrap.onStreamRead",
              "module": "stream_base_commons",
              "filename": "internal/stream_base_commons.js",
              "abs_path": "internal/stream_base_commons.js",
              "lineno": 188,
              "colno": 23,
              "in_app": false
            },
            {
              "function": "TLSSocket.Readable.push",
              "module": "readable",
              "filename": "internal/streams/readable.js",
              "abs_path": "internal/streams/readable.js",
              "lineno": 206,
              "colno": 10,
              "in_app": false
            },
            {
              "function": "readableAddChunk",
              "module": "readable",
              "filename": "internal/streams/readable.js",
              "abs_path": "internal/streams/readable.js",
              "lineno": 267,
              "colno": 9,
              "in_app": false
            },
            {
              "function": "addChunk",
              "module": "readable",
              "filename": "internal/streams/readable.js",
              "abs_path": "internal/streams/readable.js",
              "lineno": 293,
              "colno": 12,
              "in_app": false
            },
            {
              "function": "TLSSocket.emit",
              "module": "domain",
              "filename": "domain.js",
              "abs_path": "domain.js",
              "lineno": 537,
              "colno": 15,
              "in_app": false
            },
            {
              "function": "TLSSocket.emit",
              "module": "events",
              "filename": "events.js",
              "abs_path": "events.js",
              "lineno": 400,
              "colno": 28,
              "in_app": false
            },
            {
              "function": "TLSSocket.<anonymous>",
              "module": "pg-protocol.dist:index",
              "filename": "/app/server/node_modules/pg-protocol/dist/index.js",
              "abs_path": "/app/server/node_modules/pg-protocol/dist/index.js",
              "lineno": 11,
              "colno": 42,
              "pre_context": [
                "const messages_1 = require(\"./messages\");",
                "Object.defineProperty(exports, \"DatabaseError\", { enumerable: true, get: function () { return messages_1.DatabaseError; } });",
                "const serializer_1 = require(\"./serializer\");",
                "Object.defineProperty(exports, \"serialize\", { enumerable: true, get: function () { return serializer_1.serialize; } });",
                "const parser_1 = require(\"./parser\");",
                "function parse(stream, callback) {",
                "    const parser = new parser_1.Parser();"
              ],
              "context_line": "    stream.on('data', (buffer) => parser.parse(buffer, callback));",
              "post_context": [
                "    return new Promise((resolve) => stream.on('end', () => resolve()));",
                "}",
                "exports.parse = parse;",
                "//# sourceMappingURL=index.js.map"
              ],
              "in_app": false
            },
            {
              "function": "Parser.parse",
              "module": "pg-protocol.dist:parser",
              "filename": "/app/server/node_modules/pg-protocol/dist/parser.js",
              "abs_path": "/app/server/node_modules/pg-protocol/dist/parser.js",
              "lineno": 39,
              "colno": 38,
              "pre_context": [
                "        while (offset + HEADER_LENGTH <= bufferFullLength) {",
                "            // code is 1 byte long - it identifies the message type",
                "            const code = this.buffer[offset];",
                "            // length is 1 Uint32BE - it is the length of the message EXCLUDING the code",
                "            const length = this.buffer.readUInt32BE(offset + CODE_LENGTH);",
                "            const fullMessageLength = CODE_LENGTH + length;",
                "            if (fullMessageLength + offset <= bufferFullLength) {"
              ],
              "context_line": "                const message = this.handlePacket(offset + HEADER_LENGTH, code, length, this.buffer);",
              "post_context": [
                "                callback(message);",
                "                offset += fullMessageLength;",
                "            }",
                "            else {",
                "                break;",
                "            }",
                "        }"
              ],
              "in_app": false
            },
            {
              "function": "Parser.handlePacket",
              "module": "pg-protocol.dist:parser",
              "filename": "/app/server/node_modules/pg-protocol/dist/parser.js",
              "abs_path": "/app/server/node_modules/pg-protocol/dist/parser.js",
              "lineno": 126,
              "colno": 29,
              "pre_context": [
                "            case 82 /* AuthenticationResponse */:",
                "                return this.parseAuthenticationResponse(offset, length, bytes);",
                "            case 83 /* ParameterStatus */:",
                "                return this.parseParameterStatusMessage(offset, length, bytes);",
                "            case 75 /* BackendKeyData */:",
                "                return this.parseBackendKeyData(offset, length, bytes);",
                "            case 69 /* ErrorMessage */:"
              ],
              "context_line": "                return this.parseErrorMessage(offset, length, bytes, 'error');",
              "post_context": [
                "            case 78 /* NoticeMessage */:",
                "                return this.parseErrorMessage(offset, length, bytes, 'notice');",
                "            case 84 /* RowDescriptionMessage */:",
                "                return this.parseRowDescriptionMessage(offset, length, bytes);",
                "            case 116 /* ParameterDescriptionMessage */:",
                "                return this.parseParameterDescriptionMessage(offset, length, bytes);",
                "            case 71 /* CopyIn */:"
              ],
              "in_app": false
            },
            {
              "function": "Parser.parseErrorMessage",
              "module": "pg-protocol.dist:parser",
              "filename": "/app/server/node_modules/pg-protocol/dist/parser.js",
              "abs_path": "/app/server/node_modules/pg-protocol/dist/parser.js",
              "lineno": 287,
              "colno": 98,
              "pre_context": [
                "        const fields = {};",
                "        let fieldType = this.reader.string(1);",
                "        while (fieldType !== '\\0') {",
                "            fields[fieldType] = this.reader.cstring();",
                "            fieldType = this.reader.string(1);",
                "        }",
                "        const messageValue = fields.M;"
              ],
              "context_line": "'{snip} message = name === 'notice' ? new messages_1.NoticeMessage(length, messageValue) : new messages_1.DatabaseError(messageValue, length, name);",
              "post_context": [
                "        message.severity = fields.S;",
                "        message.code = fields.C;",
                "        message.detail = fields.D;",
                "        message.hint = fields.H;",
                "        message.position = fields.P;",
                "        message.internalPosition = fields.p;",
                "        message.internalQuery = fields.q;"
              ],
              "in_app": false
            }
          ]
        },
        "raw_stacktrace": {
          "frames": [
            {
              "function": "TLSWrap.onStreamRead",
              "module": "stream_base_commons",
              "filename": "internal/stream_base_commons.js",
              "abs_path": "internal/stream_base_commons.js",
              "lineno": 188,
              "colno": 23,
              "in_app": false
            },
            {
              "function": "TLSSocket.Readable.push",
              "module": "readable",
              "filename": "internal/streams/readable.js",
              "abs_path": "internal/streams/readable.js",
              "lineno": 206,
              "colno": 10,
              "in_app": false
            },
            {
              "function": "readableAddChunk",
              "module": "readable",
              "filename": "internal/streams/readable.js",
              "abs_path": "internal/streams/readable.js",
              "lineno": 267,
              "colno": 9,
              "in_app": false
            },
            {
              "function": "addChunk",
              "module": "readable",
              "filename": "internal/streams/readable.js",
              "abs_path": "internal/streams/readable.js",
              "lineno": 293,
              "colno": 12,
              "in_app": false
            },
            {
              "function": "TLSSocket.emit",
              "module": "domain",
              "filename": "domain.js",
              "abs_path": "domain.js",
              "lineno": 537,
              "colno": 15,
              "in_app": false
            },
            {
              "function": "TLSSocket.emit",
              "module": "events",
              "filename": "events.js",
              "abs_path": "events.js",
              "lineno": 400,
              "colno": 28,
              "in_app": false
            },
            {
              "function": "TLSSocket.<anonymous>",
              "module": "pg-protocol.dist:index",
              "filename": "/app/server/node_modules/pg-protocol/dist/index.js",
              "abs_path": "/app/server/node_modules/pg-protocol/dist/index.js",
              "lineno": 11,
              "colno": 42,
              "pre_context": [
                "const messages_1 = require(\"./messages\");",
                "Object.defineProperty(exports, \"DatabaseError\", { enumerable: true, get: function () { return messages_1.DatabaseError; } });",
                "const serializer_1 = require(\"./serializer\");",
                "Object.defineProperty(exports, \"serialize\", { enumerable: true, get: function () { return serializer_1.serialize; } });",
                "const parser_1 = require(\"./parser\");",
                "function parse(stream, callback) {",
                "    const parser = new parser_1.Parser();"
              ],
              "context_line": "    stream.on('data', (buffer) => parser.parse(buffer, callback));",
              "post_context": [
                "    return new Promise((resolve) => stream.on('end', () => resolve()));",
                "}",
                "exports.parse = parse;",
                "//# sourceMappingURL=index.js.map"
              ],
              "in_app": false
            },
            {
              "function": "Parser.parse",
              "module": "pg-protocol.dist:parser",
              "filename": "/app/server/node_modules/pg-protocol/dist/parser.js",
              "abs_path": "/app/server/node_modules/pg-protocol/dist/parser.js",
              "lineno": 39,
              "colno": 38,
              "pre_context": [
                "        while (offset + HEADER_LENGTH <= bufferFullLength) {",
                "            // code is 1 byte long - it identifies the message type",
                "            const code = this.buffer[offset];",
                "            // length is 1 Uint32BE - it is the length of the message EXCLUDING the code",
                "            const length = this.buffer.readUInt32BE(offset + CODE_LENGTH);",
                "            const fullMessageLength = CODE_LENGTH + length;",
                "            if (fullMessageLength + offset <= bufferFullLength) {"
              ],
              "context_line": "                const message = this.handlePacket(offset + HEADER_LENGTH, code, length, this.buffer);",
              "post_context": [
                "                callback(message);",
                "                offset += fullMessageLength;",
                "            }",
                "            else {",
                "                break;",
                "            }",
                "        }"
              ],
              "in_app": false
            },
            {
              "function": "Parser.handlePacket",
              "module": "pg-protocol.dist:parser",
              "filename": "/app/server/node_modules/pg-protocol/dist/parser.js",
              "abs_path": "/app/server/node_modules/pg-protocol/dist/parser.js",
              "lineno": 126,
              "colno": 29,
              "pre_context": [
                "            case 82 /* AuthenticationResponse */:",
                "                return this.parseAuthenticationResponse(offset, length, bytes);",
                "            case 83 /* ParameterStatus */:",
                "                return this.parseParameterStatusMessage(offset, length, bytes);",
                "            case 75 /* BackendKeyData */:",
                "                return this.parseBackendKeyData(offset, length, bytes);",
                "            case 69 /* ErrorMessage */:"
              ],
              "context_line": "                return this.parseErrorMessage(offset, length, bytes, 'error');",
              "post_context": [
                "            case 78 /* NoticeMessage */:",
                "                return this.parseErrorMessage(offset, length, bytes, 'notice');",
                "            case 84 /* RowDescriptionMessage */:",
                "                return this.parseRowDescriptionMessage(offset, length, bytes);",
                "            case 116 /* ParameterDescriptionMessage */:",
                "                return this.parseParameterDescriptionMessage(offset, length, bytes);",
                "            case 71 /* CopyIn */:"
              ],
              "in_app": false
            },
            {
              "function": "Parser.parseErrorMessage",
              "module": "pg-protocol.dist:parser",
              "filename": "/app/server/node_modules/pg-protocol/dist/parser.js",
              "abs_path": "/app/server/node_modules/pg-protocol/dist/parser.js",
              "lineno": 287,
              "colno": 98,
              "pre_context": [
                "        const fields = {};",
                "        let fieldType = this.reader.string(1);",
                "        while (fieldType !== '\\0') {",
                "            fields[fieldType] = this.reader.cstring();",
                "            fieldType = this.reader.string(1);",
                "        }",
                "        const messageValue = fields.M;"
              ],
              "context_line": "'{snip} message = name === 'notice' ? new messages_1.NoticeMessage(length, messageValue) : new messages_1.DatabaseError(messageValue, length, name);",
              "post_context": [
                "        message.severity = fields.S;",
                "        message.code = fields.C;",
                "        message.detail = fields.D;",
                "        message.hint = fields.H;",
                "        message.position = fields.P;",
                "        message.internalPosition = fields.p;",
                "        message.internalQuery = fields.q;"
              ],
              "in_app": false
            }
          ]
        },
        "mechanism": { "type": "generic", "handled": true }
      }
    ]
  },
  "fingerprint": ["{{ default }}", "column s.theme_key does not exist"],
  "grouping_config": {
    "enhancements": "eJybzDRxc15qeXFJZU6qlZGBkbGugaGuoeEEAHJMCAM",
    "id": "newstyle:2023-01-11"
  },
  "hashes": ["d71cf75493da82e48938a35398933590"],
  "ingest_path": [
    {
      "version": "23.9.1",
      "public_key": "XE7QiyuNlja9PZ7I9qJlwQotzecWrUIN91BAO7Q5R38"
    }
  ],
  "key_id": "2773060",
  "level": "error",
  "location": "/app/server/node_modules/pg-protocol/dist/parser.js",
  "logger": "",
  "metadata": {
    "display_title_with_tree_label": false,
    "filename": "/app/server/node_modules/pg-protocol/dist/parser.js",
    "function": "Parser.parseErrorMessage",
    "in_app_frame_mix": "system-only",
    "type": "error",
    "value": "column s.theme_key does not exist"
  },
  "modules": {
    "accepts": "1.3.8",
    "array-flatten": "1.1.1",
    "aws-sdk": "2.1267.0",
    "basic-auth": "2.0.1",
    "bcryptjs": "2.4.3",
    "body-parser": "1.20.1",
    "buffer-equal-constant-time": "1.0.1",
    "bytes": "3.1.2",
    "call-bind": "1.0.2",
    "content-disposition": "0.5.4",
    "content-type": "1.0.4",
    "cookie": "0.4.2",
    "cookie-parser": "1.4.6",
    "cookie-signature": "1.0.6",
    "cors": "2.8.5",
    "csrf": "3.1.0",
    "csurf": "1.11.0",
    "debug": "4.3.4",
    "deepmerge": "4.2.2",
    "depd": "1.1.2",
    "destroy": "1.2.0",
    "dotenv": "16.0.3",
    "ecdsa-sig-formatter": "1.0.11",
    "ee-first": "1.1.1",
    "encodeurl": "1.0.2",
    "escape-html": "1.0.3",
    "etag": "1.8.1",
    "express": "4.18.2",
    "finalhandler": "1.2.0",
    "follow-redirects": "1.15.2",
    "forwarded": "0.2.0",
    "fresh": "0.5.2",
    "function-bind": "1.1.1",
    "get-intrinsic": "1.1.3",
    "has": "1.0.3",
    "has-flag": "4.0.0",
    "has-symbols": "1.0.3",
    "helmet": "4.6.0",
    "http-errors": "1.7.3",
    "iconv-lite": "0.4.24",
    "inherits": "2.0.4",
    "ipaddr.js": "1.9.1",
    "jmespath": "0.16.0",
    "json2csv": "5.0.7",
    "jsonparse": "1.3.1",
    "jsonwebtoken": "8.5.1",
    "jwa": "1.4.1",
    "jws": "3.2.2",
    "lodash": "4.17.21",
    "lodash.get": "4.4.2",
    "lodash.includes": "4.3.0",
    "lodash.isboolean": "3.0.3",
    "lodash.isinteger": "4.0.4",
    "lodash.isnumber": "3.0.3",
    "lodash.isplainobject": "4.0.6",
    "lodash.isstring": "4.0.1",
    "lodash.once": "4.1.1",
    "lru_map": "0.3.3",
    "media-typer": "0.3.0",
    "merge-descriptors": "1.0.1",
    "methods": "1.1.2",
    "mime": "1.6.0",
    "mime-db": "1.52.0",
    "mime-types": "2.1.35",
    "moment": "2.29.4",
    "morgan": "1.10.0",
    "ms": "2.1.2",
    "nanoclone": "0.2.1",
    "negotiator": "0.6.3",
    "object-assign": "4.1.1",
    "object-inspect": "1.12.2",
    "on-finished": "2.4.1",
    "on-headers": "1.0.2",
    "parseurl": "1.3.3",
    "path-to-regexp": "0.1.7",
    "pg": "8.8.0",
    "pg-connection-string": "2.5.0",
    "pg-cursor": "2.7.4",
    "pg-int8": "1.0.1",
    "pg-pool": "3.5.2",
    "pg-protocol": "1.5.0",
    "pg-query-stream": "4.2.4",
    "pg-types": "2.2.0",
    "pgpass": "1.0.5",
    "postgres-array": "2.0.0",
    "postgres-bytea": "1.0.0",
    "postgres-date": "1.0.7",
    "postgres-interval": "1.2.0",
    "property-expr": "2.0.5",
    "proxy-addr": "2.0.7",
    "qs": "6.11.0",
    "random-bytes": "1.0.0",
    "range-parser": "1.2.1",
    "raw-body": "2.5.1",
    "rndm": "1.2.0",
    "safe-buffer": "5.2.1",
    "safer-buffer": "2.1.2",
    "sax": "1.2.1",
    "semver": "5.7.1",
    "send": "0.18.0",
    "serve-favicon": "2.5.0",
    "serve-static": "1.15.0",
    "setprototypeof": "1.1.1",
    "side-channel": "1.0.4",
    "split2": "4.1.0",
    "statuses": "1.5.0",
    "supports-color": "7.2.0",
    "toidentifier": "1.0.0",
    "toposort": "2.0.2",
    "tsscmp": "1.0.6",
    "type-is": "1.6.18",
    "uid-safe": "2.1.5",
    "uniqid": "5.4.0",
    "unpipe": "1.0.0",
    "utils-merge": "1.0.1",
    "uuid": "8.3.2",
    "vary": "1.1.2",
    "xml2js": "0.4.19",
    "xmlbuilder": "9.0.7",
    "xtend": "4.0.2",
    "yup": "0.32.11"
  },
  "nodestore_insert": 1695979800.386605,
  "received": 1695979798.440398,
  "request": {
    "url": "http://col-helper.co.uk/api/sections",
    "method": "GET",
    "query_string": [
      ["forPublic", "true"],
      ["lng", "en"],
      ["uniqueSlug", "hyde"]
    ],
    "cookies": [
      [
        "CookieConsent",
        "{stamp:'-1',necessary:true,preferences:true,statistics:true,marketing:true,method:'implied',ver:1,utc:1695945600084}"
      ],
      ["XSRF-TOKEN", "[Filtered]"],
      ["_csrf", "[Filtered]"],
      ["_ga", "GA1.1.1974271762.1695945600"],
      ["_ga_QMPGXZJ6LR", "GS1.1.1695945600.1.1.1695945600.0.0.0"]
    ],
    "headers": [
      ["Accept", "application/json,text/plain,*/*"],
      ["Accept-Encoding", "gzip"],
      ["Accept-Language", "en-US"],
      [
        "Baggage",
        "sentry-public_key=cb939e80e4f8490ba2604461546a481f,sentry-trace_id=7aae8b109caf492088d4b719202dccbe,sentry-sample_rate=0.5"
      ],
      ["Cdn-Loop", "cloudflare"],
      ["Cf-Connecting-Ip", "66.249.66.169"],
      ["Cf-Ipcountry", "US"],
      ["Cf-Ray", "80e3346a2fc40853-IAD"],
      ["Cf-Visitor", "{\"scheme\":\"https\"}"],
      ["Connect-Time", "0"],
      ["Connection", "close"],
      ["From", "googlebot(at)googlebot.com"],
      ["Host", "col-helper.co.uk"],
      ["Referer", "https://col-helper.co.uk/"],
      ["Sentry-Trace", "7aae8b109caf492088d4b719202dccbe-bedd7ae6933963c0-0"],
      ["Total-Route-Time", "0"],
      [
        "User-Agent",
        "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/117.0.5938.92 Safari/537.36"
      ],
      ["Via", "1.1 vegur"],
      ["X-Forwarded-For", "66.249.66.169, 172.70.38.243"],
      ["X-Forwarded-Port", "443"],
      ["X-Forwarded-Proto", "https"],
      ["X-Request-Id", "09f4644b-c44f-4ae4-b84d-d687f63cf4a1"],
      ["X-Request-Start", "1695979798343"],
      ["X-Xsrf-Token", "[Filtered]"]
    ]
  },
  "sdk": {
    "name": "sentry.javascript.node",
    "version": "7.23.0",
    "integrations": [
      "InboundFilters",
      "FunctionToString",
      "Console",
      "Http",
      "OnUncaughtException",
      "OnUnhandledRejection",
      "ContextLines",
      "Context",
      "Modules",
      "RequestData",
      "LinkedErrors",
      "Postgres",
      "Express"
    ],
    "packages": [{ "name": "npm:@sentry/node", "version": "7.23.0" }]
  },
  "timestamp": 1695979798.36,
  "title": "error: column s.theme_key does not exist",
  "transaction": "GET /",
  "type": "error",
  "version": "7"
}

Steps To Reproduce

Production Env GET http://col-helper.co.uk/api/sections

Screenshots or a link to a Loom Recording

No response

What browsers are you seeing the problem on?

No response

Anything else?

No response

cyberteenie commented 11 months ago

confirmed as fixed by Hassan