openwhisk-devtools icon indicating copy to clipboard operation
openwhisk-devtools copied to clipboard

make create-provider-alarms broken

Open drandreas opened this issue 3 years ago • 3 comments

It looks like the various openwhisk/x:nightly versions do not match currently.

make quick-start
make add-catalog
make create-provider-alarms

fails with:

npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated [email protected]: this library is no longer supported
npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
npm WARN [email protected] No license field.

added 62 packages from 128 contributors and audited 62 packages in 2.446s

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

+ rm -rf alarmFeed.zip
+ zip -r alarmFeed.zip lib package.json alarm.js -q
+ /root/openwhisk-devtools/docker-compose/openwhisk-src/bin/wsk -i --apihost 192.168.5.55 action update --kind nodejs:14 --auth 789c46b1-71f6-4ed5-8c54-816aa4f8c502:abczO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP alarms/alarm /root/openwhisk-devtools/docker-compose/openwhisk-package-alarms/action/alarmFeed.zip -a description 'Fire trigger when alarm occurs' -a parameters '[ {"name":"cron", "required":true}, {"name":"timezone", "required":false}, {"name":"startDate", "required":false}, {"name":"stopDate", "required":false}, {"name":"strict", "required":false} ]' -a feed true
error: Unable to create action 'alarms/alarm': The 'nodejs:14' runtime is no longer supported. You may read and delete but not update or invoke this action. (code eh1yIZFQHYxz2eDlL4DT7ytbynsYBA4v)

If I patch installCatalog.sh to use nodjs:12 the installation succeeds and the alarm provider is starting up:

Fetch the logs of a container
[root@k8 docker-compose]# docker logs openwhisk_alarmsprovider_1
[2021-06-20T19:07:13.251Z] [INFO] [??] [alarmsTrigger] [createDatabase] creating the trigger database
[2021-06-20T19:07:13.273Z] [INFO] [??] [alarmsTrigger] [server.listen] Express server listening on port 8080
[2021-06-20T19:07:13.311Z] [INFO] [??] [alarmsTrigger] [createDatabase] created trigger database: local_alarmservice
[2021-06-20T19:07:13.543Z] [INFO] [??] [alarmsTrigger] [initActiveHost] redis hset local_alarmservice_worker0 active host0
[2021-06-20T19:07:13.549Z] [INFO] [??] [alarmsTrigger] [initAllTriggers] resetting system from last state
[root@k8 docker-compose]# 

However alarms can not be scheduled - create trigger fails with an internal error.

wsk -i trigger create every-min --feed /whisk.system/alarms/alarm --param cron "* * * * *"
{
    "activationId": "0574e75b897446acb4e75b897416ac45",
    "annotations": [
        {
            "key": "path",
            "value": "whisk.system/alarms/alarm"
        },
        {
            "key": "waitTime",
            "value": 27354
        },
        {
            "key": "kind",
            "value": "nodejs:12"
        },
        {
            "key": "timeout",
            "value": false
        },
        {
            "key": "limits",
            "value": {
                "concurrency": 1,
                "logs": 10,
                "memory": 256,
                "timeout": 60000
            }
        },
        {
            "key": "initTime",
            "value": 286
        }
    ],
    "duration": 1958,
    "end": 1624216232010,
    "logs": [],
    "name": "alarm",
    "namespace": "guest",
    "publish": false,
    "response": {
        "result": {
            "error": {}
        },
        "size": 12,
        "status": "application error",
        "success": false
    },
    "start": 1624216230052,
    "subject": "guest",
    "version": "0.0.1"
}

wsk -i activation poll                                                                    
Enter Ctrl-c to exit.
Polling for activation logs

Activation: 'alarm' (93ea2f86360e4facaa2f86360ecfac5d)
[
    "2021-06-20T19:10:32.519601981Z stdout: alarm: Error invoking whisk action: 204 <Buffer >"
]

Activation: 'alarm' (0574e75b897446acb4e75b897416ac45)
[
    "2021-06-20T19:10:32.0062408Z   stdout: alarm: Error invoking whisk action: 204 <Buffer >"
]

I can't find any debug output that would point to the source of the issue.

drandreas avatar Jun 20 '21 19:06 drandreas

Addendum:

If I patch docker-compose/docker-whisk-controller.env to list nodejs:14 the alarms invocation runs with nodjs:14 but still fails.

{
    "activationId": "91af09a198bb48adaf09a198bb28ad7a",
    "annotations": [
        {
            "key": "path",
            "value": "whisk.system/alarms/alarm"
        },
        {
            "key": "waitTime",
            "value": 12169
        },
        {
            "key": "kind",
            "value": "nodejs:14"
        },
        {
            "key": "timeout",
            "value": false
        },
        {
            "key": "limits",
            "value": {
                "concurrency": 1,
                "logs": 10,
                "memory": 256,
                "timeout": 60000
            }
        },
        {
            "key": "initTime",
            "value": 283
        }
    ],
    "duration": 2161,
    "end": 1624217841986,
    "logs": [],
    "name": "alarm",
    "namespace": "guest",
    "publish": false,
    "response": {
        "result": {
            "error": {}
        },
        "size": 12,
        "status": "application error",
        "success": false
    },
    "start": 1624217839825,
    "subject": "guest",
    "version": "0.0.1"
}

drandreas avatar Jun 20 '21 19:06 drandreas

I found the issue. Line 507 of docker-compose/Makefile passes the arguments in wrong order:

$(shell cat $(TMP_HOME)/tmp/openwhisk/providers.env) ./installCatalog.sh $(realpath $(OPENWHISK_PROJECT_HOME))/ansible/files/auth.whisk.system $(DOCKER_HOST_IP) $(DOCKER_HOST_IP) "http://$(DOCKER_HOST_IP):5984" $(OPEN_WHISK_DB_PREFIX) $(DOCKER_HOST_IP) \

drandreas avatar Jun 20 '21 20:06 drandreas

@drandreas PRs welcome and appreciated 🙏

rabbah avatar Jun 28 '21 17:06 rabbah