ACE project stopped working all of a sudden

Hello,

We’ve been using Atlassian Connect Express (ACE) framework for managing our staging pipeline. We’ve had the app in production for more than 2 years but since last week it stopped working.

> review-apps-portal@0.0.1 start /home/stageuser/code/git_src/tools/www/app/jira
> node -r esm app.js

morgan deprecated default format: use combined format node_modules/esm/esm.js:1:278827
Watching atlassian-connect.json for changes
warn: Using database: review-app
App server running at http://api-server:3000
Executing (default): CREATE TABLE IF NOT EXISTS `AddonSettings` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `clientKey` VARCHAR(255), `key` VARCHAR(255), `val` JSON); { plain: false,
  raw: true,
  logging: [Function],
  timestamps: false,
  validate: {},
  freezeTableName: false,
  underscored: false,
  paranoid: false,
  rejectOnEmpty: false,
  whereCollection: null,
  schema: null,
  schemaDelimiter: '',
  defaultScope: {},
  scopes: {},
  indexes:
   [ { fields: [Array],
       type: '',
       parser: null,
       name: 'addon_settings_client_key_key' } ],
  name: { plural: 'AddonSettings', singular: 'AddonSetting' },
  omitNull: false,
  sequelize:
   Sequelize {
     options:
      { dialect: 'sqlite',
        dialectModule: null,
        dialectModulePath: null,
        protocol: 'tcp',
        define: {},
        query: {},
        sync: {},
        timezone: '+00:00',
        clientMinMessages: 'warning',
        standardConformingStrings: true,
        logging: [Function],
        omitNull: false,
        native: false,
        replication: false,
        ssl: undefined,
        pool: {},
        quoteIdentifiers: true,
        hooks: {},
        retry: [Object],
        transactionType: 'DEFERRED',
        isolationLevel: null,
        databaseVersion: 0,
        typeValidation: false,
        benchmark: false,
        minifyAliases: false,
        logQueryParameters: false,
        adapter: 'sequelize',
        storage: ':memory:' },
     config:
      { database: undefined,
        username: undefined,
        password: null,
        host: 'localhost',
        port: undefined,
        pool: {},
        protocol: 'tcp',
        native: false,
        ssl: undefined,
        replication: false,
        dialectModule: null,
        dialectModulePath: null,
        keepDefaultTimezone: undefined,
        dialectOptions: undefined },
     dialect:
      SqliteDialect {
        sequelize: [Circular],
        connectionManager: [ConnectionManager],
        QueryGenerator: [SQLiteQueryGenerator] },
     queryInterface:
      QueryInterface {
        sequelize: [Circular],
        QueryGenerator: [SQLiteQueryGenerator] },
     models: { AddonSetting: AddonSetting },
     modelManager: ModelManager { models: [Array], sequelize: [Circular] },
     connectionManager:
      ConnectionManager {
        sequelize: [Circular],
        config: [Object],
        dialect: [SqliteDialect],
        versionPromise: null,
        dialectName: 'sqlite',
        pool: [Pool],
        connections: [Object],
        lib: [Object] },
     importCache: {} },
  hooks: true,
  uniqueKeys: {},
  type: 'RAW',
  uuid: 'default',
  inMemory: 1,
  readWriteMode: undefined }
Executing (default): PRAGMA INDEX_LIST(`AddonSettings`) { plain: false,
  raw: true,
  logging: [Function],
  timestamps: false,
  validate: {},
  freezeTableName: false,
  underscored: false,
  paranoid: false,
  rejectOnEmpty: false,
  whereCollection: null,
  schema: null,
  schemaDelimiter: '',
  defaultScope: {},
  scopes: {},
  indexes:
   [ { fields: [Array],
       type: '',
       parser: null,
       name: 'addon_settings_client_key_key' } ],
  name: { plural: 'AddonSettings', singular: 'AddonSetting' },
  omitNull: false,
  sequelize:
   Sequelize {
     options:
      { dialect: 'sqlite',
        dialectModule: null,
        dialectModulePath: null,
        protocol: 'tcp',
        define: {},
        query: {},
        sync: {},
        timezone: '+00:00',
        clientMinMessages: 'warning',
        standardConformingStrings: true,
        logging: [Function],
        omitNull: false,
        native: false,
        replication: false,
        ssl: undefined,
        pool: {},
        quoteIdentifiers: true,
        hooks: {},
        retry: [Object],
        transactionType: 'DEFERRED',
        isolationLevel: null,
        databaseVersion: 0,
        typeValidation: false,
        benchmark: false,
        minifyAliases: false,
        logQueryParameters: false,
        adapter: 'sequelize',
        storage: ':memory:' },
     config:
      { database: undefined,
        username: undefined,
        password: null,
        host: 'localhost',
        port: undefined,
        pool: {},
        protocol: 'tcp',
        native: false,
        ssl: undefined,
        replication: false,
        dialectModule: null,
        dialectModulePath: null,
        keepDefaultTimezone: undefined,
        dialectOptions: undefined },
     dialect:
      SqliteDialect {
        sequelize: [Circular],
        connectionManager: [ConnectionManager],
        QueryGenerator: [SQLiteQueryGenerator] },
     queryInterface:
      QueryInterface {
        sequelize: [Circular],
        QueryGenerator: [SQLiteQueryGenerator] },
     models: { AddonSetting: AddonSetting },
     modelManager: ModelManager { models: [Array], sequelize: [Circular] },
     connectionManager:
      ConnectionManager {
        sequelize: [Circular],
        config: [Object],
        dialect: [SqliteDialect],
        versionPromise: null,
        dialectName: 'sqlite',
        pool: [Pool],
        connections: [Object],
        lib: [Object] },
     importCache: {} },
  hooks: true,
  type: 'SHOWINDEXES',
  uuid: 'default',
  inMemory: 1,
  readWriteMode: undefined }
Executing (default): CREATE INDEX `addon_settings_client_key_key` ON `AddonSettings` (`clientKey`, `key`) { plain: false,
  raw: true,
  logging: [Function],
  benchmark: undefined,
  transaction: undefined,
  schema: null,
  fields: [ 'clientKey', 'key' ],
  parser: null,
  name: 'addon_settings_client_key_key',
  prefix: 'AddonSettings',
  supportsSearchPath: false,
  type: 'RAW',
  uuid: 'default',
  inMemory: 1,
  readWriteMode: undefined }
info: Connected to database
Local tunnel established at https://908a48f6.ngrok.io/
Check http://127.0.0.1:4040 for tunnel status
Registering add-on...
GET /atlassian-connect.json 200 13.468 ms - 893
POST //installed 404 23.129 ms - 150
Failed to register with host https://drivercheck.atlassian.net/ (200)
The app host returned HTTP response code 404 when we tried to contact it during installation. Please try again later or contact the app vendor.
{"type":"INSTALL","pingAfter":300,"status":{"done":true,"statusCode":200,"contentType":"application/vnd.atl.plugins.task.install.err+json","subCode":"connect.install.error.remote.host.bad.response.404","errorMessage":"The app host returned HTTP response code 404 when we tried to contact it during installation. Please try again later or contact the app vendor.","source":"https://908a48f6.ngrok.io/atlassian-connect.json","name":"https://908a48f6.ngrok.io/atlassian-connect.json"},"links":{"self":"/rest/plugins/1.0/pending/40994ce7-d99c-4e70-8d34-3084b002a7d4","alternate":"/rest/plugins/1.0/tasks/40994ce7-d99c-4e70-8d34-3084b002a7d4"},"timestamp":1582148493380,"accountId":"557058:3350c6f9-e35d-4161-b960-7dc147232e79","id":"40994ce7-d99c-4e70-8d34-3084b002a7d4"}
Add-on not registered; no compatible hosts detected

Hi, check this one: Install event calling //install and returning 404 error on install