跳到主要内容
ArcBlock Community

Blocklet Server v1.16.22 GUI restart fails

wgring
支持
priority-lowresolved

After a GUI (not terminal/console) restart on the new beta version, it stayed loading on the same "Ensure everything is OK" step as previous times and versions I've been checking out. This so far is consistent between non-root and sudo. It had an RPC Server exit code 0 display this time, but yet again it didn't start/restart. The tail output still shows the process either attempting to start back up and fails - while never trying again after the failure, or the RPC Server exit code 0.

It just seems to send the start signal once and not actually verify if there's running condition afterwards, where if there's not a running condition it should attempt another start.

Sometimes when I'm launching a fresh init I may have to remove a start lock, or even just attempt a second start because something didn't load within a set amount of time. I don't see the restart process attempting to do any of those things after a failure on restart.

12 条回复

shijun2年前

Can you give a bit more information on the host environment your blocklet-server runs in?

  • Which cloud provider is it using?
  • Does it have a static IP address?
  • What's the CPU and memory config?
  • What's the network settings?

We just tested the latest beta release on our production servers, restart and upgrading all worked as expected.Please note that there was a bug in the updater process of blocklet server v1.16.21, which is fixed in v1.16.22 beta

wgring2年前(edited)

Not cloud provided, self hosted, fresh server init, ubuntu desktop 22.04 64bit, node js18, nginx, arm64, raspberry pi 4 8GB (Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.8GHz), effectively a static IP, it hasn't changed but ISPs usually give dynamic to residential.

Whether the network settings have open ports or not the results are still the same. The restart process as used from the GUI never actually restarts the blocklet server. Doesnt even attempt a retry when viewing the tail output of the logs.

With open ports it will obtain an external facing IP which I am able to access externally and internally, but restarting still has the same results.

wgring2年前(edited)

Everything works fine without sudo use now. That being said here is how I come across and can reproduce this issue. I haven't yet checked it with a live install on x64, but that would be my next test since I have the hardware physically available.

For the raspberry pi, during the GUI restart - this is the output of "tail -f" on the logs from the point when it updates wildcard certs. Everything beforehand seemed to look fine, though these message about "webapp" and "util" are always present: ==> .blocklet-server/logs/_abtnode/daemon.stderr.log <==

2024-01-15T16:49:11: - Updating wildcard certificates... 2024-01-15T16:49:11: ✔ Updating wildcard certificates... Done in 0.069s 2024-01-15T16:49:11: - Starting blocklet service...

==> .blocklet-server/logs/_abtnode/daemon-2024-01-15.log <==

[4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/util] [server runtime info] [{"date","cpu".41,"mem","daemonMem","serviceMem"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}]

==> .blocklet-server/logs/_abtnode/daemon.log <==

[4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/util] [server runtime info] [{"date","cpu".41,"mem","daemonMem","serviceMem"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}]

==> .blocklet-server/logs/_abtnode/daemon-2024-01-15.log <==

[4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/util] [server runtime info] [{"date","cpu".95,"mem","daemonMem","serviceMem"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}]

==> .blocklet-server/logs/_abtnode/daemon.log <==

[4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/util] [server runtime info] [{"date","cpu".95,"mem","daemonMem","serviceMem"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}]

==> .blocklet-server/logs/_abtnode/daemon-2024-01-15.log <==

[4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/util] [server runtime info] [{"date","cpu".97,"mem","daemonMem","serviceMem"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}]

==> .blocklet-server/logs/_abtnode/daemon-error-2024-01-15.log <==

[4046] [2024-01-15 16:49] [error] [@abtnode/core] [failed to push notification to wallet] [{"error":{"error":"connect ECONNREFUSED 127.0.0.1","error_stack":"Error: connect ECONNREFUSED 127.0.0.1\n at sendToAppChannel (/home/bc1/.npm-packages/lib/node_modules/@blocklet/cli/node_modules/@blocklet/sdk/lib/util/send-notification.js:122)\n at process.processTicksAndRejections (node/process/task_queues:95)\n at async NodeMonitSender.sendToWallet (/home/bc1/.npm-packages/lib/node_modules/@blocklet/cli/node_modules/@abtnode/core/lib/monitor/node-monit-sender.js:85)"}}]

==> .blocklet-server/logs/_abtnode/daemon-error.log <==

[4046] [2024-01-15 16:49] [error] [@abtnode/core] [failed to push notification to wallet] [{"error":{"error":"connect ECONNREFUSED 127.0.0.1","error_stack":"Error: connect ECONNREFUSED 127.0.0.1\n at sendToAppChannel (/home/bc1/.npm-packages/lib/node_modules/@blocklet/cli/node_modules/@blocklet/sdk/lib/util/send-notification.js:122)\n at process.processTicksAndRejections (node/process/task_queues:95)\n at async NodeMonitSender.sendToWallet (/home/bc1/.npm-packages/lib/node_modules/@blocklet/cli/node_modules/@abtnode/core/lib/monitor/node-monit-sender.js:85)"}}]

==> .blocklet-server/logs/_abtnode/daemon.log <==

[4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/util] [server runtime info] [{"date","cpu".97,"mem","daemonMem","serviceMem"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}]

==> .blocklet-server/logs/_abtnode/daemon.stderr.log <==

2024-01-15T16:49:40: AxiosError: connect ECONNREFUSED 127.0.0.1 2024-01-15T16:49:40: at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555) { 2024-01-15T16:49:40: port: 40406, 2024-01-15T16:49:40: address: '127.0.0.1', 2024-01-15T16:49:40: syscall: 'connect', 2024-01-15T16:49:40: code: 'ECONNREFUSED', 2024-01-15T16:49:40: errno: -111, 2024-01-15T16:49:40: config: { 2024-01-15T16:49:40: transitional: { 2024-01-15T16:49:40: silentJSONParsing: true, 2024-01-15T16:49:40: forcedJSONParsing: true, 2024-01-15T16:49:40: clarifyTimeoutError: false 2024-01-15T16:49:40: }, 2024-01-15T16:49:40: adapter: [Function: httpAdapter], 2024-01-15T16:49:40: transformRequest: [ [Function: transformRequest] ], 2024-01-15T16:49:40: transformResponse: [ [Function: transformResponse] ], 2024-01-15T16:49:40: timeout: 60000, 2024-01-15T16:49:40: xsrfCookieName: 'XSRF-TOKEN', 2024-01-15T16:49:40: xsrfHeaderName: 'X-XSRF-TOKEN', 2024-01-15T16:49:40: maxContentLength: -1, 2024-01-15T16:49:40: maxBodyLength: -1, 2024-01-15T16:49:40: env: { FormData: [Function] }, 2024-01-15T16:49:40: validateStatus: [Function: validateStatus], 2024-01-15T16:49:40: headers: { 2024-01-15T16:49:40: Accept: 'application/json, text/plain, /', 2024-01-15T16:49:40: 'Content-Type': 'application/json', 2024-01-15T16:49:40: 'User-Agent': 'BlockletSDK/1.16.22', 2024-01-15T16:49:40: 'Content-Length': 723 2024-01-15T16:49:40: }, 2024-01-15T16:49:40: proxy: false, 2024-01-15T16:49:40: method: 'post', 2024-01-15T16:49:40: url: 'http://127.0.0.1:40406/.well-known/service/api/send-to-app-channel', 2024-01-15T16:49:40: data: '{"apiVersion":"1.16.22","data":{"sender":{"appDid":"zNKtrGCLssMmv6W2iNqrrvouJsXa87Q5xnRL","token":"eyJhbGciOiJFZDI1NTE5IiwidHlwZSI6IkpXVCJ9.eyJleHAiOiIxNzA1MzY2NDgwIiwiaWF0IjoiMTcwNTM2NjE4MCIsImlzcyI6ImRpZDphYnQ6ek5LdHJHQ0xzc01tdjZXMmlOcXJydm91SnNYYTg3UTV4blJMIiwibmJmIjoiMTcwNTM2NjE4MCIsInZlcnNpb24iOiIxLjAuMCJ9.difQJDtD6k3ID4OwD4aI7pcowuY-lWLzT2bStGhIiOnTN5g9fvw0TWn_v14y2F-Z31ch0DsX7oYztGbyPUyuBw"},"channel":"app:zNKtrGCLssMmv6W2iNqrrvouJsXa87Q5xnRL","event":"message","notification":{"type":"feed","feedType":"data-tracker","data":{"cardTitle":"Server Usage","items":[{"title":"CPU","content":"99%","content_color":"#FF1111"},{"title":"MEM","content":"2.51 GB (32%)","content_color":"#222222"}]}},"options":{}}}' 2024-01-15T16:49:40: }, 2024-01-15T16:49:40: request: <ref *1> Writable { 2024-01-15T16:49:40: _writableState: WritableState { 2024-01-15T16:49:40: objectMode: false, 2024-01-15T16:49:40: highWaterMark: 16384, 2024-01-15T16:49:40: finalCalled: false, 2024-01-15T16:49:40: needDrain: false, 2024-01-15T16:49:40: ending: false, 2024-01-15T16:49:40: ended: false, 2024-01-15T16:49:40: finished: false, 2024-01-15T16:49:40: destroyed: false, 2024-01-15T16:49:40: decodeStrings: true, 2024-01-15T16:49:40: defaultEncoding: 'utf8', 2024-01-15T16:49:40: length: 0, 2024-01-15T16:49:40: writing: false, 2024-01-15T16:49:40: corked: 0, 2024-01-15T16:49:40: sync: true, 2024-01-15T16:49:40: bufferProcessing: false, 2024-01-15T16:49:40: onwrite: [Function: bound onwrite], 2024-01-15T16:49:40: writecb: null, 2024-01-15T16:49:40: writelen: 0, 2024-01-15T16:49:40: afterWriteTickInfo: null, 2024-01-15T16:49:40: buffered: [], 2024-01-15T16:49:40: bufferedIndex: 0, 2024-01-15T16:49:40: allBuffers: true, 2024-01-15T16:49:40: allNoop: true, 2024-01-15T16:49:40: pendingcb: 0, 2024-01-15T16:49:40: constructed: true, 2024-01-15T16:49:40: prefinished: false, 2024-01-15T16:49:40: errorEmitted: false, 2024-01-15T16:49:40: emitClose: true, 2024-01-15T16:49:40: autoDestroy: true, 2024-01-15T16:49:40: errored: null, 2024-01-15T16:49:40: closed: false, 2024-01-15T16:49:40: closeEmitted: false, 2024-01-15T16:49:40: [Symbol(kOnFinished)]: [] 2024-01-15T16:49:40: }, 2024-01-15T16:49:40: _events: [Object: null prototype] { 2024-01-15T16:49:40: response: [Function: handleResponse], 2024-01-15T16:49:40: error: [Function: handleRequestError], 2024-01-15T16:49:40: socket: [Array] 2024-01-15T16:49:40: }, 2024-01-15T16:49:40: _eventsCount: 3, 2024-01-15T16:49:40: _maxListeners: undefined, 2024-01-15T16:49:40: _options: { 2024-01-15T16:49:40: maxRedirects: 21, 2024-01-15T16:49:40: maxBodyLength: 10485760, 2024-01-15T16:49:40: protocol: 'http:', 2024-01-15T16:49:40: path: '/.well-known/service/api/send-to-app-channel', 2024-01-15T16:49:40: method: 'POST', 2024-01-15T16:49:40: headers: [Object], 2024-01-15T16:49:40: agent: undefined, 2024-01-15T16:49:40: agents: [Object], 2024-01-15T16:49:40: auth: undefined, 2024-01-15T16:49:40: hostname: '127.0.0.1', 2024-01-15T16:49:40: port: '40406', 2024-01-15T16:49:40: nativeProtocols: [Object], 2024-01-15T16:49:40: pathname: '/.well-known/service/api/send-to-app-channel' 2024-01-15T16:49:40: }, 2024-01-15T16:49:40: _ended: false, 2024-01-15T16:49:40: _ending: true, 2024-01-15T16:49:40: _redirectCount: 0, 2024-01-15T16:49:40: _redirects: [], 2024-01-15T16:49:40: _requestBodyLength: 723, 2024-01-15T16:49:40: _requestBodyBuffers: [ [Object] ], 2024-01-15T16:49:40: _onNativeResponse: [Function (anonymous)], 2024-01-15T16:49:40: _currentRequest: ClientRequest { 2024-01-15T16:49:40: _events: [Object: null prototype], 2024-01-15T16:49:40: _eventsCount: 7, 2024-01-15T16:49:40: _maxListeners: undefined, 2024-01-15T16:49:40: outputData: [], 2024-01-15T16:49:40: outputSize: 0, 2024-01-15T16:49:40: writable: true, 2024-01-15T16:49:40: destroyed: false, 2024-01-15T16:49:40: _last: true, 2024-01-15T16:49:40: chunkedEncoding: false, 2024-01-15T16:49:40: shouldKeepAlive: false, 2024-01-15T16:49:40: maxRequestsOnConnectionReached: false, 2024-01-15T16:49:40: _defaultKeepAlive: true, 2024-01-15T16:49:40: useChunkedEncodingByDefault: true, 2024-01-15T16:49:40: sendDate: false, 2024-01-15T16:49:40: _removedConnection: false, 2024-01-15T16:49:40: _removedContLen: false, 2024-01-15T16:49:40: _removedTE: false, 2024-01-15T16:49:40: strictContentLength: false, 2024-01-15T16:49:40: _contentLength: 723, 2024-01-15T16:49:40: _hasBody: true, 2024-01-15T16:49:40: _trailer: '', 2024-01-15T16:49:40: finished: false, 2024-01-15T16:49:40: _headerSent: true, 2024-01-15T16:49:40: _closed: false, 2024-01-15T16:49:40: socket: [Socket], 2024-01-15T16:49:40: _header: 'POST /.well-known/service/api/send-to-app-channel HTTP/1.1\r\n' + 2024-01-15T16:49:40: 'Accept: application/json, text/plain, /\r\n' + 2024-01-15T16:49:40: 'Content-Type: application/json\r\n' + 2024-01-15T16:49:40: 'User-Agent: BlockletSDK/1.16.22\r\n' + 2024-01-15T16:49:40: 'Content-Length: 723\r\n' + 2024-01-15T16:49:40: 'Host: 127.0.0.1\r\n' + 2024-01-15T16:49:40: 'Connection: close\r\n' + 2024-01-15T16:49:40: '\r\n', 2024-01-15T16:49:40: _keepAliveTimeout: 0, 2024-01-15T16:49:40: _onPendingData: [Function: nop], 2024-01-15T16:49:40: agent: [Agent], 2024-01-15T16:49:40: socketPath: undefined, 2024-01-15T16:49:40: method: 'POST', 2024-01-15T16:49:40: maxHeaderSize: undefined, 2024-01-15T16:49:40: insecureHTTPParser: undefined, 2024-01-15T16:49:40: joinDuplicateHeaders: undefined, 2024-01-15T16:49:40: path: '/.well-known/service/api/send-to-app-channel', 2024-01-15T16:49:40: _ended: false, 2024-01-15T16:49:40: res: null, 2024-01-15T16:49:40: aborted: false, 2024-01-15T16:49:40: timeoutCb: null, 2024-01-15T16:49:40: upgradeOrConnect: false, 2024-01-15T16:49:40: parser: null, 2024-01-15T16:49:40: maxHeadersCount: null, 2024-01-15T16:49:40: reusedSocket: false, 2024-01-15T16:49:40: host: '127.0.0.1', 2024-01-15T16:49:40: protocol: 'http:', 2024-01-15T16:49:40: _redirectable: [Circular *1], 2024-01-15T16:49:40: [Symbol(kCapture)]: false, 2024-01-15T16:49:40: [Symbol(kBytesWritten)]: 0, 2024-01-15T16:49:40: [Symbol(kNeedDrain)]: false, 2024-01-15T16:49:40: [Symbol(corked)]: 0, 2024-01-15T16:49:40: [Symbol(kOutHeaders)]: [Object: null prototype], 2024-01-15T16:49:40: [Symbol(errored)]: null, 2024-01-15T16:49:40: [Symbol(kHighWaterMark)]: 16384, 2024-01-15T16:49:40: [Symbol(kRejectNonStandardBodyWrites)]: false, 2024-01-15T16:49:40: [Symbol(kUniqueHeaders)]: null 2024-01-15T16:49:40: }, 2024-01-15T16:49:40: _currentUrl: 'http://127.0.0.1:40406/.well-known/service/api/send-to-app-channel', 2024-01-15T16:49:40: _timeout: null, 2024-01-15T16:49:40: [Symbol(kCapture)]: false 2024-01-15T16:49:40: } 2024-01-15T16:49:40: } 2024-01-15T16:49:46: ✖ Starting blocklet service... Fail after 35.851s 2024-01-15T16:49:46: service not ready within 28 seconds 2024-01-15T16:49:46: ✖ Blocklet Service start failed: service not ready within 28 seconds

At this point, it then outputs: ==> .blocklet-server/logs/_abtnode/daemon.stdout.log <==

2024-01-15T16:49:47: Restarting blocklet server done

==> .blocklet-server/logs/_abtnode/daemon-2024-01-15.log <==

[4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/util] [server runtime info] [{"date","cpu".97,"mem","daemonMem","serviceMem"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}]

==> .blocklet-server/logs/_abtnode/daemon-error-2024-01-15.log <==

[4046] [2024-01-15 16:49] [error] [@abtnode/core] [failed to push notification to wallet] [{"error":{"error":"connect ECONNREFUSED 127.0.0.1","error_stack":"Error: connect ECONNREFUSED 127.0.0.1\n at sendToAppChannel (/home/bc1/.npm-packages/lib/node_modules/@blocklet/cli/node_modules/@blocklet/sdk/lib/util/send-notification.js:122)\n at process.processTicksAndRejections (node/process/task_queues:95)\n at async NodeMonitSender.sendToWallet (/home/bc1/.npm-packages/lib/node_modules/@blocklet/cli/node_modules/@abtnode/core/lib/monitor/node-monit-sender.js:85)"}}]

==> .blocklet-server/logs/_abtnode/daemon-error.log <==

[4046] [2024-01-15 16:49] [error] [@abtnode/core] [failed to push notification to wallet] [{"error":{"error":"connect ECONNREFUSED 127.0.0.1","error_stack":"Error: connect ECONNREFUSED 127.0.0.1\n at sendToAppChannel (/home/bc1/.npm-packages/lib/node_modules/@blocklet/cli/node_modules/@blocklet/sdk/lib/util/send-notification.js:122)\n at process.processTicksAndRejections (node/process/task_queues:95)\n at async NodeMonitSender.sendToWallet (/home/bc1/.npm-packages/lib/node_modules/@blocklet/cli/node_modules/@abtnode/core/lib/monitor/node-monit-sender.js:85)"}}]

==> .blocklet-server/logs/_abtnode/daemon.log <==

[4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.blockletsRuntimeInfo","event":"node.blockletsRuntimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/util] [server runtime info] [{"date","cpu".97,"mem","daemonMem","serviceMem"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}] [4046] [2024-01-15 16:49] [info] [@abtnode/webapp] [no connections when broadcast message] [{"topic":"node.runtimeInfo","event":"node.runtimeInfo"}]

After this, the first messages and these logs continue to repeat. This is a fresh install of 1.16.22 now, without nginx (using default routing), which I tried before doing this as well. The output is the same between the two. The start fails and there is no follow-up on verifying the status of the restart, before proceeding to a finish output of "Restarting blocklet server done".

After this happened, I chose to run blocklet server start again. It output this: blocklet server v1.16.22 ✔ Server schema successfully migrated: /home/bc1/abt4/.blocklet-server/core/server.db ✔ Service schema successfully migrated: /home/bc1/abt4/.blocklet-server/services/service.db ✔ certificate-manager schema successfully migrated: /home/bc1/abt4/.blocklet-server/modules/certificate-manager/module.db ⚠ Server is starting, please try again later ℹ Please cleanup with rm -f /home/bc1/abt4/.blocklet-server/start.lock and then try again

After removing the start lock and starting the server again without --update-db. , I can access the dashboard again and it is not stuck on the restart/upgrade screen. At this point it gives me the message of "We found that there are some differences between config file and database". It shows mode between the two as "production" and "maintenance" respectively.

It successfully starts, outputting: ✔ Updating blocklet environments... Done in 0.007s ✔ Updating wildcard certificates... Done in 0.032s ✔ Starting blocklet service... Done in 32.07s ✔ Starting server daemon... Done in 28.438s ✔ Fetching accessible IPs... Done in 14.161s ✔ Updating DID Domain... Done in 0.837s ✔ You can access your Blocklet Server with either of the following URLs

wgring2年前(edited)

When I compare my above results to that of my laptop (intel amd64) with another live install, if it successfully restarts without issue then it must have something to do with the hardware capability? If it doesn't and results in the same thing, the only difference I would think of between a "not running>start" method and a "GUI Restart>[tail output shows keep-alive] Blocklet Service start failed: service not ready within 28 seconds" is the keep-alive. I don't remember seeing "keep-alive" during the tail output of a fresh start.

shijun2年前

Seems the starting takes too long, and blocklet server considers a failure.

wgring2年前

I figured that was the case, even though it outputs blocklet server restart done.

I understand it hangs at the "Ensure everything is OK" step, but seems its also not "ensuring" the start successfully completes. Aside from a faster storage drive, is the restart process supposed to keep attempting until it does succeed? It seems like it only tries once.

wgring2年前

wgring2年前(edited)

I did the above method over again, let the GUI restart get stuck at "ensure everything is ok", and then I used "blocklet server stop -f" to shutdown the server.

After this, attempting to start the server with or without the --update-db flag results in a message to cleanup the start.lock.

After cleaning up the start.lock file - with the assumption that cleaning the start.lock is required, and the --update-db flag should also be inserted in the restart process - and that is the point I am sitting at manually (it doesnt show that flag in the tail output of the GUI restart), I run "blocklet server start --update-db".

It updates to database which is labeled "maintenance", and proceeds to start. At this point it is accessible again, WITHOUT being stuck on the same screen (it would stay stuck on that screen after the same restart method in 1.16.19-1.16.20 though).

To me, it seems after the blocklet server shuts down during the process, the process calls for "blocklet server start" (no update-db, no removing start.lock) and fails. The order of operations always leads to that, and it never attempts retries.

wgring2年前(edited)

Ive moved to an amd64 setup on a virtualbox vm, with nodejs 20, nginx, npm 10.3.0, and beta 1.16.23-beta-7b5b0175. Restart works without issue. [edit: with ubuntu 22 jammy still]

Likely cause is raspberry pi specific whether hardware consumption or otherwise, will check that one next with same settings.

pi with same settings cannot complete GUI restart. i may try this again with ethernet and network attached storage but i have a feeling it wont help - limited to speeds of the Pi both cpu and data read/write. extra bandaids shouldnt be required so going to consider the pi4 incompatible/not capable for now. may try again with pi5 (or later versions) in future.

[edit: ignore this section, i had a bugged router. rechecked after switching router out, and 1.16.22 picks up external ips in VM and pi as long as port forward is correct from router]: for external ips to show, i had to install release of blocklet cli (non beta) and then install beta on top. there are package discrepancies between the two, without beta installed after (both global install, with sudo) the release version will not show external ips. with beta on top it will.

1.16.22 grabs external ip (make sure port forward is correct), restarts without issue. Sudo installs and when running commands.

11.16.2-beta-abdda301 grabs external ip (make sure port forward is correct),restarts without issue. Sudo installs and when running commands.

wgring2年前(edited)

The pi4 is definitely inadequate out of box to run blocklet cli. Even with Debian, it would fail restart. [edit: I believe it is CPU/disk read write limited. logs of blocklet cli would show cpu usage at 98% consistently.]

Yes, it had installed on Debian. Will be testing that in a separate VM as well.

wgring2年前(edited)

Image

Virtual Machine running in VMWare Workstation 17 Player for windows (Fusion is for Mac, which i dont use). Should also work in VirtualBox 7. This is Ubuntu 23.10.1.

For testing purposes (without commercial license) it works likes a charm. This should also work in MS Windows Hyper-V - if you have the professional edition of windows 10/11 or server standard or higher. You would just use Add or Remove Windows features to install it if you have Windows 10/11 Pro.

In the above, in VMWare Workstation 17 Player it works with the VM having its own network interface in bridge mode (with Replicate state). I was using a usb wifi dongle, but it could also have been done with the ethernet. The host machine was using the built in wifi

回复