Skip to content

Issue separating dbconnector into it's own service #228

@stephenmoloney

Description

@stephenmoloney

In a recent release, 6.4.0, it because possible to separate the dbconnector into it's own deployment.

I think this is a great idea. But unfortunately, despite making multiple attempts at the deployment with different cpu and memory settings - including way over capacity, (including the node options for the heap size), I keep getting back this error;

│ retool-dbconnector {"level":"info","message":"SIGTERM signal received; shutting down workers","timestamp":"2025-03-31T16:57:40.700Z"}                                                                    │
│ retool-dbconnector {"level":"info","message":"SIGTERM signal received; stopping server","timestamp":"2025-03-31T16:57:40.701Z"}                                                                          │
│ retool-dbconnector {"level":"info","message":"SIGTERM signal received; stopping server","timestamp":"2025-03-31T16:57:40.701Z"}                                                                          │
│ retool-dbconnector {"level":"info","message":"SIGTERM signal received; stopping server","timestamp":"2025-03-31T16:57:40.701Z"}                                                                          │
│ retool-dbconnector {"level":"info","message":"SIGTERM signal received; stopping server","timestamp":"2025-03-31T16:57:40.701Z"}                                                                          │
│ retool-dbconnector {"level":"info","message":"SIGTERM signal received; stopping server","timestamp":"2025-03-31T16:57:40.701Z"}                                                                          │
│ retool-dbconnector {"level":"info","message":"SIGTERM signal received; stopping server","timestamp":"2025-03-31T16:57:40.701Z"}                                                                          │
│ retool-dbconnector {"level":"info","message":"SIGTERM signal received; stopping server","timestamp":"2025-03-31T16:57:40.701Z"}                                                                          │
│ retool-dbconnector {"level":"info","message":"Stopping database connector server on port","port":"3002","timestamp":"2025-03-31T16:57:40.703Z"}                                                          │
│ retool-dbconnector {"level":"info","message":"Stopping database connector server on port","port":"3002","timestamp":"2025-03-31T16:57:40.703Z"}                                                          │
│ retool-dbconnector {"level":"info","message":"Stopping database connector server on port","port":"3002","timestamp":"2025-03-31T16:57:40.703Z"}                                                          │
│ retool-dbconnector {"level":"info","message":"Stopping database connector server on port","port":"3002","timestamp":"2025-03-31T16:57:40.703Z"}                                                          │
│ retool-dbconnector {"level":"info","message":"Stopping database connector server on port","port":"3002","timestamp":"2025-03-31T16:57:40.703Z"}                                                          │
│ retool-dbconnector {"level":"info","message":"Stopping database connector server on port","port":"3002","timestamp":"2025-03-31T16:57:40.703Z"}                                                          │
│ retool-dbconnector {"level":"info","message":"Stopping database connector server on port","port":"3002","timestamp":"2025-03-31T16:57:40.703Z"}                                                          │
│ retool-dbconnector {"level":"info","message":"Server closed on pid 134","timestamp":"2025-03-31T16:57:40.703Z"}                                                                                          │
│ retool-dbconnector {"level":"info","message":"Server closed on pid 120","timestamp":"2025-03-31T16:57:40.703Z"}                                                                                          │
│ retool-dbconnector {"level":"info","message":"Server closed on pid 112","timestamp":"2025-03-31T16:57:40.703Z"}                                                                                          │
│ retool-dbconnector {"level":"info","message":"Server closed on pid 100","timestamp":"2025-03-31T16:57:40.703Z"}                                                                                          │
│ retool-dbconnector {"level":"info","message":"Server closed on pid 148","timestamp":"2025-03-31T16:57:40.703Z"}                                                                                          │
│ retool-dbconnector {"level":"info","message":"Server closed on pid 114","timestamp":"2025-03-31T16:57:40.703Z"}                                                                                          │
│ retool-dbconnector {"level":"info","message":"Server closed on pid 128","timestamp":"2025-03-31T16:57:40.703Z"}                                                                                          │
│ retool-dbconnector {"level":"info","message":"SIGTERM signal received; stopping server","timestamp":"2025-03-31T16:57:40.709Z"}                                                                          │
│ retool-dbconnector {"level":"info","message":"Stopping database connector server on port","port":"3002","timestamp":"2025-03-31T16:57:40.710Z"}                                                          │
│ retool-dbconnector {"level":"info","message":"Server closed on pid 99","timestamp":"2025-03-31T16:57:40.711Z"}
│ retool-dbconnector {"level":"info","message":"Server closed on pid 99","timestamp":"2025-03-31T16:57:40.711Z"}                                                                                           │
│ retool-dbconnector {"code":0,"kernelOutput":"Command failed: dmesg -T | grep -F -i -e \"$(dmesg -T | grep -F -i 'killed process' | tail -n 1 | grep -oP '(?<=\\[)[^]]+' | head -n 1 | { read input; [ -z │
│ retool-dbconnector {"level":"info","message":"[Master] All workers are dead; shutting down dbconnector","timestamp":"2025-03-31T16:57:41.014Z"}  
[
  {
    "code": 0,
    "kernelOutput": "Command failed: dmesg -T | grep -F -i -e \"$(dmesg -T | grep -F -i 'killed process' | tail -n 1 | grep -oP '(?<=\\[)[^]]+' | head -n 1 | { read input; [ -z \"$input\" ] && echo \"[oom string was not found]\" || echo \"$input\"; })\" -e \"$(dmesg -T | grep -F -i 'invoked oom-killer' | tail -n 1 | grep -oP '(?<=\\[)[^]]+' | head -n 1 | { read input; [ -z \"$input\" ] && echo \"[oom string was not found]\" || echo \"$input\"; })\"\ndmesg: read kernel buffer failed: Operation not permitted\ndmesg: read kernel buffer failed: Operation not permitted\ndmesg: read kernel buffer failed: Operation not permitted\n",
    "level": "info",
    "message": "[Master] Worker died",
    "pid": 100,
    "signal": null,
    "source": "master",
    "timestamp": "2025-03-31T15:35:07.152Z"
  },
  {
    "level": "info",
    "message": "[Master] All workers are dead; shutting down dbconnector",
    "timestamp": "2025-03-31T15:35:07.152Z"
  }
]

dmesg: read kernel buffer failed: Operation not permitted\ seems like a consquequence of something else that is already failing.

The YAML for the dbconnector is as follows;

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/instance: retool
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: retool-dbconnector
    helm.sh/chart: retool-6.4.4
    retoolService: retool-dbconnector
    telemetry.retool.com/service-name: dbconnector
  name: retool-dbconnector
  namespace: retool
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      retoolService: retool-dbconnector
  template:
    metadata:
      annotations: null
      labels:
        app.kubernetes.io/instance: retool
        app.kubernetes.io/managed-by: Helm
        app.kubernetes.io/name: retool-dbconnector
        helm.sh/chart: retool-6.4.4
        retoolService: retool-dbconnector
        telemetry.retool.com/service-name: dbconnector
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - podAffinityTerm:
                labelSelector:
                  matchExpressions:
                    - key: app.kubernetes.io/name
                      operator: In
                      values:
                        - retool
                topologyKey: kubernetes.io/hostname
              weight: 100
      containers:
        - args:
            - bash
            - -c
            - chmod -R +x ./docker_scripts; sync; ./docker_scripts/wait-for-it.sh -t 0
              "$(POSTGRES_HOST):$(POSTGRES_PORT)"; ./docker_scripts/start_api.sh
          env:
            - name: SERVICE_TYPE
              value: DB_CONNECTOR,DB_SSH_CONNECTOR,JAVA_DBCONNECTOR
            - name: DEPLOYMENT_TEMPLATE_TYPE
              value: k8s-helm
            - name: DEPLOYMENT_TEMPLATE_VERSION
              value: 6.4.4
            - name: NODE_ENV
              value: production
            - name: NODE_OPTIONS
              value: --max_old_space_size=1024
            - name: DBCONNECTOR_HTTP_AGENT_MAX_SOCKETS
              value: "1000"
            - name: DBCONNECTOR_POSTGRES_POOL_MAX_SIZE
              value: "100"
            - name: DISABLE_DATABASE_MIGRATIONS
              value: "true"
            - name: WORKFLOW_BACKEND_HOST
              value: http://retool-workflow-backend
            - name: CLIENT_ID
              value: null
            - name: COOKIE_INSECURE
              value: "false"
            - name: NODE_OPTIONS
              value: --max-old-space-size=12288
            - name: ENCRYPTION_KEY
              valueFrom:
                secretKeyRef:
                  key: encryption-key
                  name: retool
            - name: JWT_SECRET
              valueFrom:
                secretKeyRef:
                  key: jwt-secret
                  name: retool
            - name: LICENSE_KEY
              valueFrom:
                secretKeyRef:
                  key: license-key
                  name: retool
            - name: POSTGRES_PASSWORD
              valueFrom:
                secretKeyRef:
                  key: postgresql-password
                  name: retool
          image: tryretool/backend:3.148.5-stable
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /api/checkHealth
              port: 3002
            initialDelaySeconds: 30
            timeoutSeconds: 10
          name: retool-dbconnector
          readinessProbe:
            httpGet:
              path: /api/checkHealth
              port: 3002
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 5
            timeoutSeconds: 10
          resources:
            limits:
              memory: 16384Mi
            requests:
              cpu: 8192m
              memory: 16384Mi
          volumeMounts: null
      nodeSelector:
        kubernetes.io/arch: amd64
      serviceAccountName: retool
      terminationGracePeriodSeconds: 30
      tolerations: []

Any ideas?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions