kubernetestomcatdeploymentpega

pega-web-tomcat container not starting with | Problem during method invocation (doPostInner)


Pega helm deployment failing

The following represents my values (yaml) file for helm deployment containing a minimal deployment as I have only three nodes in my cluster with 32GB each node. I have an external kafka deployment. and am letting pega build the Cassandra cluster for dss data store.

---
global:
  provider: "k8s"

  deployment:
    name: "dev1"

  actions:
    execute: "install"

  storageClassName: ""
  jdbc:
    url: "jdbc:postgresql://192.168.1.xxx:5432/Pega"
    driverClass: "org.postgresql.Driver"
        driverUri: "https://jdbc.postgresql.org/download/postgresql-42.5.4.jar"
    username: "pega"
    password: "rules"
    external_secret_name: ""
    connectionProperties: ""
    rulesSchema: "rules"
    dataSchema: "data"
    customerDataSchema: "customer"

  customArtifactory:
    authentication:
      basic:
        username: ""
        password: ""
      apiKey:
        headerName: ""
        value: ""
      external_secret_name: ""
    enableSSLVerification: true
    certificate:

  docker:
    registry:
      url: "https://hub.docker.com"
      username: "myrepo"
      password: "xxx"
    imagePullSecretNames: []
    pega:
      image: "myrepo/my-pega:23"

  utilityImages:
    busybox:
      image: busybox:1.31.0
      imagePullPolicy: IfNotPresent
    k8s_wait_for:
      image: Pegasystems/k8s-wait-for
      imagePullPolicy: "IfNotPresent"
      # waitTimeSeconds: 2
      # maxRetries: 1

  upgrade:
    kube-apiserver:
      serviceHost: "https://192.168.1.xxx"
      httpsServicePort: "16443"

  compressedConfigurations: false

  tier:
    - name: "k8s-dev"
      nodeType: "Stream,BackgroundProcessing,WebUser,Search,DataFlow"
      requestor:
        passivationTimeSec: 900
      service:
        httpEnabled: true
        port: 80
        targetPort: 8080
        tls:
          enabled: false
          external_secret_name: ""
          keystore:
          keystorepassword:
          port: 443
          targetPort: 8443
          cacertificate:
          certificateFile:
          certificateKeyFile:
          traefik:
            enabled: false
            serverName: ""
            insecureSkipVerify: false

      ingress:
        domain: "web.k8s-dev.org.local"
        tls:
          enabled: false
          certificate:
          key:
          cacertificate:

      replicas: 1
      javaOpts: ""
      pegaDiagnosticUser: ""
      pegaDiagnosticPassword: ""

      volumeClaimTemplate:
        resources:
          requests:
            storage: 5Gi

      deploymentStrategy:
        rollingUpdate:
          maxSurge: 1
          maxUnavailable: 0
        type: RollingUpdate

      livenessProbe:
        port: 8081

      hpa:
        enabled: false

      pdb:
        enabled: false
        minAvailable: 1

cassandra:
  enabled: true
  persistence:
    enabled: true
  resources:
    requests:
      memory: "4Gi"
      cpu: 2
    limits:
      memory: "8Gi"
      cpu: 4

dds:
  port: "9042"
  username: "dnode_ext"
  password: "dnode_ext"
  clientEncryption: false
  trustStore: ""
  trustStorePassword: ""
  keyStore: ""
  keyStorePassword: ""
  external_secret_name: ""
  asyncProcessingEnabled: false
  keyspacesPrefix: ""
  extendedTokenAwarePolicy: false
  latencyAwarePolicy: false
  customRetryPolicy: false
  customRetryPolicyEnabled: false
  customRetryPolicyCount: 1
  speculativeExecutionPolicy: false
  speculativeExecutionPolicyEnabled: false
  speculativeExecutionPolicyDelay: 100
  speculativeExecutionPolicyMaxExecutions: 2
  jmxMetricsEnabled: true
  csvMetricsEnabled: false
  logMetricsEnabled: false

pegasearch:
  image: "myrepo/my-pega-search:23"
  memLimit: "3Gi"
  replicas: 1

installer:
  image: "myrepo/my-pega-installer:23"
  imagePullPolicy: Always
  adminPassword: "passwordX"
  upgrade:
    upgradeType: "in-place"
    targetRulesSchema: "rules"
    targetDataSchema: "data"
    pegaRESTUsername: ""
    pegaRESTPassword: ""

hazelcast:
  image: "YOUR_HAZELCAST_IMAGE:TAG"
  clusteringServiceImage: "YOUR_CLUSTERING_SERVICE_IMAGE:TAG"
  enabled: false
  clusteringServiceEnabled: false
  migration:
    initiateMigration: false
    migrationJobImage: "YOUR_MIGRATION_JOB_IMAGE:TAG"
    embeddedToCSMigration: false
  replicas: 3
  username: ""
  password: ""
  external_secret_name: ""

stream:
  enabled: "false"
  bootstrapServer: ""
  securityProtocol: PLAINTEXT
  trustStore: ""
  trustStorePassword: ""
  keyStore: ""
  keyStorePassword: ""
  jaasConfig: ""
  saslMechanism: PLAIN
  streamNamePattern: "pega-{stream.name}"
  replicationFactor: "1"
  external_secret_name: ""

Problem Description I can produce the entire logs if needed as the system is almost getting to complete start. I am getting the following log output indicating a NullPointerException occurring when the web container is starting.

Kubernetes: microk8s v: v1.27.8 StorageClass: nfs

Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-91-generic x86_64)

System information as of Sun Jan 21 10:22:24 PM UTC 2024

System load: 0.6806640625 Usage of /: 26.5% of 97.87GB Memory usage: 18% Swap usage: 0% Processes: 223

21-Jan-2024 21:41:43.305 SEVERE [http-nio2-8080-exec-5] com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega. Problem during method invocation (doPostInner)
    java.lang.NullPointerException
        at com.pega.pegarules.session.internal.PRSessionProviderImpl.borrowRequestor(PRSessionProviderImpl.java:740)
        at com.pega.pegarules.session.internal.PRSessionProviderImpl.borrowRequestor(PRSessionProviderImpl.java:755)
        at com.pega.pegarules.session.internal.PRSessionProviderImplForModules.borrowRequestor(PRSessionProviderImplForModules.java:60)
        at com.pega.platform.web.request.internal.ResponseProcessorImpl.getBrowserRequestor(ResponseProcessorImpl.java:222)
        at com.pega.platform.web.request.internal.ResponseProcessorImpl.getStream(ResponseProcessorImpl.java:184)
        at com.pega.platform.web.request.internal.ResponseProcessorImpl.getStatusPageStream(ResponseProcessorImpl.java:174)
        at com.pega.platform.web.request.internal.ResponseProcessorImpl.writeStatusOutput(ResponseProcessorImpl.java:191)
        at com.pega.pegarules.web.impl.WebStandardImpl.doPostInner(WebStandardImpl.java:484)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:388)
        at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:430)
        at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethodPropagatingThrowable(AppServerBridgeToPega.java:225)
        at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethod(AppServerBridgeToPega.java:274)
        at com.pega.pegarules.internal.web.servlet.WebStandardBoot.doPost(WebStandardBoot.java:164)
        at com.pega.pegarules.internal.web.servlet.WebStandardBoot.doGet(WebStandardBoot.java:121)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:529)
        at com.pega.pegarules.internal.web.servlet.WebStandardBoot.service(WebStandardBoot.java:191)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670)
        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:765)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
        at org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1732)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
        at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1295)
        at org.apache.tomcat.util.net.Nio2Endpoint.setSocketOptions(Nio2Endpoint.java:339)
        at org.apache.tomcat.util.net.Nio2Endpoint$Nio2Acceptor.completed(Nio2Endpoint.java:479)
        at org.apache.tomcat.util.net.Nio2Endpoint$Nio2Acceptor.completed(Nio2Endpoint.java:415)
        at java.base/sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:127)
        at java.base/sun.nio.ch.Invoker$2.run(Invoker.java:219)
        at java.base/sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Thread.java:829)

Solution

  • resolved: correcting the datasource connection string and upgrading the data.