Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error logged in logfile #550

Closed
Ernst2020 opened this issue Oct 6, 2024 · 5 comments
Closed

Error logged in logfile #550

Ernst2020 opened this issue Oct 6, 2024 · 5 comments
Labels

Comments

@Ernst2020
Copy link

Ernst2020 commented Oct 6, 2024

Software probe running on DietPi in a VMware VM on Windows 10.

On probes running the above I see this regularly in the log file (docker logs [container-id]):

Any clues?


node:internal/process/promises:289
triggerUncaughtException(err, true /* fromPromise */);
^

RequestError: getaddrinfo EAI_AGAIN data.jsdelivr.com
at ClientRequest. (file:///app/node_modules/got/dist/source/core/index.js:790:107)
at Object.onceWrapper (node:events:634:26)
at ClientRequest.emit (node:events:531:35)
at TLSSocket.socketErrorListener (node:_http_client:500:9)
at TLSSocket.emit (node:events:519:28)
at emitErrorNT (node:internal/streams/destroy:169:8)
at emitErrorCloseNT (node:internal/streams/destroy:128:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:120:26) {
input: undefined,
code: 'EAI_AGAIN',
timings: {
start: 1728229654530,
socket: 1728229654533,
lookup: 1728229664543,
connect: undefined,
secureConnect: undefined,
upload: undefined,
response: undefined,
end: undefined,
error: 1728229664544,
abort: undefined,
phases: {
wait: 3,
dns: 10010,
tcp: undefined,
tls: undefined,
request: undefined,
firstByte: undefined,
download: undefined,
total: 10014
}
},
options: Options {
_unixOptions: undefined,
_internals: {
request: undefined,
agent: { http: undefined, https: undefined, http2: undefined },
h2session: undefined,
decompress: true,
timeout: {
connect: undefined,
lookup: undefined,
read: undefined,
request: 15000,
response: undefined,
secureConnect: undefined,
send: undefined,
socket: undefined
},
prefixUrl: '',
body: undefined,
form: undefined,
json: undefined,
cookieJar: undefined,
ignoreInvalidCookies: false,
searchParams: undefined,
dnsLookup: undefined,
dnsCache: undefined,
context: {},
hooks: {
init: [],
beforeRequest: [],
beforeError: [],
beforeRedirect: [],
beforeRetry: [],
afterResponse: []
},
followRedirect: true,
maxRedirects: 10,
cache: undefined,
throwHttpErrors: true,
username: '',
password: '',
http2: false,
allowGetBody: false,
headers: {
'user-agent': 'got (https://github.com/sindresorhus/got)',
accept: 'application/json',
'accept-encoding': 'gzip, deflate, br'
},
methodRewriting: false,
dnsLookupIpVersion: undefined,
parseJson: [Function: parse],
stringifyJson: [Function: stringify],
retry: {
limit: 2,
methods: [ 'GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE' ],
statusCodes: [
408, 413, 429, 500,
502, 503, 504, 521,
522, 524
],
errorCodes: [
'ETIMEDOUT',
'ECONNRESET',
'EADDRINUSE',
'ECONNREFUSED',
'EPIPE',
'ENOTFOUND',
'ENETUNREACH',
'EAI_AGAIN'
],
maxRetryAfter: undefined,
calculateDelay: [Function: calculateDelay],
backoffLimit: Infinity,
noise: 100
},
localAddress: undefined,
method: 'GET',
createConnection: undefined,
cacheOptions: {
shared: undefined,
cacheHeuristic: undefined,
immutableMinTimeToLive: undefined,
ignoreCargoCult: undefined
},
https: {
alpnProtocols: undefined,
rejectUnauthorized: undefined,
checkServerIdentity: undefined,
certificateAuthority: undefined,
key: undefined,
certificate: undefined,
passphrase: undefined,
pfx: undefined,
ciphers: undefined,
honorCipherOrder: undefined,
minVersion: undefined,
maxVersion: undefined,
signatureAlgorithms: undefined,
tlsSessionLifetime: undefined,
dhparam: undefined,
ecdhCurve: undefined,
certificateRevocationLists: undefined
},
encoding: undefined,
resolveBodyOnly: false,
isStream: false,
responseType: 'text',
url: URL {},
pagination: {
transform: [Function: transform],
paginate: [Function: paginate],
filter: [Function: filter],
shouldContinue: [Function: shouldContinue],
countLimit: Infinity,
backoff: 0,
requestLimit: 10000,
stackAllItems: false
},
setHost: true,
maxHeaderSize: undefined,
signal: undefined,
enableUnixSockets: true
},
_merging: false,
_init: [ { timeout: { request: 15000 } } ]
}
}

Node.js v20.13.0
``

@jimaek
Copy link
Member

jimaek commented Oct 6, 2024

Seems like your DNS server couldn't resolve the API domain. What resolver are you using? Maybe there's an issue with DNS and Windows virtualization?

@Ernst2020
Copy link
Author

I have seen this on several of my (4) probes. Will dive into it, one of these runs “Docker for Windows”, the other three VMware Workstation on Windows. Need to determine whether it also happens on the one running “Docker for Windows”.

Since they all use different DNS servers, that is not the issue but it could be VMware and/or Windows. The probe continues to work fine when the error occurs so it is not a too big issue.

The 3 VMware probes run docker on a minimal DietPI distro (Debian based) since that distro comes ready to go as a VMware VM. Very quick to set up.

@jimaek
Copy link
Member

jimaek commented Oct 6, 2024

I've heard before of DNS issues under Windows virtualization and Docker, that's why it was my first thought.
Consider checking how the DNS resolution works and testing the same endpoints using native Windows environment or Linux in the same LAN

@Ernst2020
Copy link
Author

Just had a thought. The docker container created by the standard command line as specified on the Globalping website, defaults to a blocking local log. That implies that when the log becomes larger and the log is asked for, say with “docker logs -f”, docker blocks the probe processing. Could this lead to this issue?

I noticed that a “docker logs [container id] runs fine (not very intensive, so blocking will be short) but the moment I do a “docker logs - since 5 min [container id] the error occurs. Then docker needs to read the whole log file, determine from where to show it, which is more intensive and blocking might interfere with the probe processing?

@jimaek
Copy link
Member

jimaek commented Oct 6, 2024

docker logs and the process inside should be completely independent, unless maybe the device is so underpowered that the logs reading completely overloads the system, even light weight tasks like DNS.

But I really doubt it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants