Extensions timeout

Mirek Lauš mirek at laus.cz
Mon Mar 11 06:12:34 EDT 2019


Anyone? My extensions still timeout time to time
as the node process aborts … What’s wrong?

-ml

> On 7 Feb, 2019, at 14:48 , Mirek Lauš <mirek at laus.cz> wrote:
> 
> I’m still getting extension timeouts, nodeJS process exits due
> to signal 6, leaving a coredump behind:
> 
>> (gdb) core node.core
>> Core was generated by `/usr/local/bin/node lib/extension-wrapper remote'.
>> Program terminated with signal 6, Aborted.
>> #0  0x0000000804b3447a in ?? ()
> 
> How to tell what’s going on?
> 
> -ml
> 
>> 
>> 
>> On 1 Feb, 2019, at 7:26 , Mirek Lauš <mirek at laus.cz> wrote:
>> 
>> Thank you, I will try and let you know.
>> 
>> -m
>> 
>>> On 31 Jan, 2019, at 22:25 , Dan Morphis <dan at milkcarton.com> wrote:
>>> 
>>> Try setting the next level and batch size smaller and see if that helps. Put this in your config.json:
>>> 
>>> "GPN_NEXT_LEVEL": 3,
>>> "GPV_BATCH_SIZE": 24,
>>> 
>>> 
>>> 
>>> On Thu, Jan 31, 2019 at 12:23 PM Simon Ryf <simon.ryf at dualstack.ch> wrote:
>>> Sorry I’m tiered – it isn’t about extensions but general device timeout…
>>> 
>>> 
>>> 
>>> From: Users <users-bounces at lists.genieacs.com> on behalf of Simon Ryf <simon.ryf at dualstack.ch>
>>> Reply-To: Community support for GenieACS users <users at lists.genieacs.com>
>>> Date: Thursday, 31 January 2019 at 22:22
>>> To: Community support for GenieACS users <users at lists.genieacs.com>
>>> Subject: Re: Extensions timeout
>>> 
>>> 
>>> 
>>> Dan and Zaid – do you know that you’re still having a “bug” when using Node >=8.x on that?
>>> 
>>> 
>>> 
>>> https://nodejs.org/api/http.html#http_server_keepalivetimeout
>>> 
>>> 
>>> 
>>> you need to fix that in server.js I can give you the code I’ve added for that.
>>> 
>>> I’m not really a Node dev and therefore I didn’t yet made a pull request…
>>> 
>>> 
>>> 
>>> Cheers
>>> 
>>> Simon
>>> 
>>> 
>>> 
>>> From: Users <users-bounces at lists.genieacs.com> on behalf of Dan Morphis <dan at milkcarton.com>
>>> Reply-To: Community support for GenieACS users <users at lists.genieacs.com>
>>> Date: Thursday, 31 January 2019 at 20:54
>>> To: Community support for GenieACS users <users at lists.genieacs.com>
>>> Subject: Re: Extensions timeout
>>> 
>>> 
>>> 
>>> You can increase the extension timeout by adding "EXT_TIMEOUT": 30000, to the genieacs/config/config.json file. Timeout is in milliseconds.
>>> 
>>> 
>>> 
>>> -dan
>>> 
>>> 
>>> 
>>> On Tue, Jan 29, 2019 at 11:27 PM Mirek Lauš <mirek at laus.cz> wrote:
>>> 
>>> Hello Genieacs users,
>>> 
>>> my extensions sometimes results in timeout without a reason giving a NodeJS
>>> error in the log:
>>> 
>>>> 1: node::Abort(void) [/usr/local/bin/node]
>>>> 2: node::PlatformInit(void) [/usr/local/bin/node]
>>>> 3: node::Start(int, char**) [/usr/local/bin/node]
>>>> 4: _start [/usr/local/bin/node]
>>> 
>>> My extension is called from Provision script:
>>> 
>>>> let genieacsId = declare("DeviceID.ID", {value: 1}).value[0];
>>>> let externalIp = declare("InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress", {value: 1}).value[0];
>>>> let connReqUrl = declare("InternetGatewayDevice.ManagementServer.ConnectionRequestURL", {value: 1}).value[0];
>>>> 
>>>> let args = {id: genieacsId, url: connReqUrl, ip: externalIp};
>>>> 
>>>> log('remoteCallback call script');
>>>> 
>>>> let resp = ext('remote', 'remoteCallback', JSON.stringify(args));
>>>> log('remote response ' + genieacsId + ': ' + resp);
>>> 
>>> And the extension:
>>> 
>>>> const API_URL = 'https://remote.url/api/genieacs';
>>>> const url = require("url");
>>>> const http = require(API_URL.split(":", 1)[0]);
>>>> 
>>>> const logger = require('../../lib/logger');
>>>> 
>>>> function remoteCallback(args, callback) {
>>>> 
>>>> let params = JSON.parse(args[0]);
>>>> 
>>>> const uri = API_URL + "/callback.pl?id=" + params.id + "&url=" + params.url + "&ip=" + params.ip;
>>>> 
>>>> let options = url.parse(uri);
>>>> options.headers = { accept: 'application/json', "content-type": 'application/json' };
>>>> 
>>>> logger.info({message: 'post callback ' + params.id});
>>>> 
>>>> let request = http.get(options, function (response) {
>>>> 
>>>>   if (response.statusCode == 404) {
>>>>     return callback(null, null);
>>>>   }
>>>> 
>>>>   if (response.statusCode >= 400) {
>>>>     return callback(new Error("Unexpected error. Response Code: " +
>>>>     response.statusCode + '. Status Message: ' + response.statusMessage + '. t: ' + typeof response.statusCode));
>>>>   }
>>>> 
>>>>   let data = "";
>>>> 
>>>>   response.on("data", function(d) {
>>>>     data = data + d.toString();
>>>>   });
>>>> 
>>>>   response.on("end", function () {
>>>>     logger.info({message: 'post callback response: ' + data});
>>>>     return callback(null,data);
>>>>   });
>>>> 
>>>> });
>>>> 
>>>> request.on("error", function (err) {
>>>>   logger.info({message: 'post callback error: ' + err});
>>>>   callback(err);
>>>> });
>>>> 
>>>> }
>>>> 
>>>> exports.remoteCallback = remoteCallback;
>>> 
>>> 
>>> How to debug this?
>>> 
>>> Regards
>>> Mirek
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.genieacs.com
>>> http://lists.genieacs.com/mailman/listinfo/users
>>> 
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.genieacs.com
>>> http://lists.genieacs.com/mailman/listinfo/users
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.genieacs.com
>>> http://lists.genieacs.com/mailman/listinfo/users
>> 
> 



More information about the Users mailing list