codius / codiusd Goto Github PK
View Code? Open in Web Editor NEWCodius host server-side reference implementation
Home Page: https://codius.org
License: Apache License 2.0
Codius host server-side reference implementation
Home Page: https://codius.org
License: Apache License 2.0
Hello,
Thanks for this wonderful package.
I tried to setup a codius host on Google Cloud Platform.
I already have a toast wallet with 25 xrp in it + subdomain (codius1.soolan.com) pointing to my VM instance ip and installed all the required libs and packages to get this going.
I had no problem with SSL certificate as well. But I got Bad Gateway error when I try to visit: https://codius1.soolan.com/version
Looking at the nginx error logs, it says
2018/07/09 02:47:13 [error] 25800#0: *18 connect() failed (111: Connection refused) while connecting to upstream, client: 129.126.203.71, server: , request: "GET /version HTTP/1.1", upstream: "http://127.0.0.1:3000/version", host: "codius1.soolan.com"
Here is the output for netstat -tulpn
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 25799/nginx: master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 25799/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1109/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1105/master
tcp6 0 0 :::80 :::* LISTEN 25799/nginx: master
tcp6 0 0 :::22 :::* LISTEN 1109/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1105/master
udp 0 0 127.0.0.1:323 0.0.0.0:* 330/chronyd
udp 0 0 0.0.0.0:68 0.0.0.0:* 574/dhclient
udp6 0 0 ::1:323 ```
I followed the steps for trouble shooting the 502 issue (trying to make moneyd and codiusd listening, etc). yet still no luck.
When I start moneyd in debug mode I see this error in its logs:
```2018-07-09T02:40:35.205Z connector:app error TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type undefined
at Function.from (buffer.js:207:11)
at Object.encodeChannelProof (/usr/lib/node_modules/moneyd-uplink-xrp/node_modules/ilp-plugin-xrp-paychan-shared/lib/util.js:110:12)
at Plugin._connect (/usr/lib/node_modules/moneyd-uplink-xrp/node_modules/ilp-plugin-xrp-asym-client/index.js:186:35)
Any idea what might be wrong?
Thank you very much.
The most recent release of hyperd and hyperctl has broken port mapping related to iptables issues. Therefore we must build our own distro packages off of the latest master where these issues are fixed.
Currently we are only hosting builds of hyperd and hyperctl for CentOS 7. We should build and host versions of these packages for every OS hyper supports.
Afterward, we need to update the hyper-bootstrap script to point to all of these new builds.
At the moment Codius only accepts payments through live XRP accounts. This makes it very difficult to test certain contracts (in particular decentralized applications) so an environment that accepts moneyd payments on the testnet (perhaps using dedicated 'test' hosts that we run) would make testing deployment/codius manifest configurations a lot easier.
Hi,
sorry if this is not the best place to discuss these topics but I didn't find a proper place.
I have a few questions which are puzzling me:
I really don't see the advantages over renting N amazon instances and running my app in those instances. But maybe I'm not understanding well. I'm missing the "decentralization" and smart contract point.
My host is down and I can't reach it at https://codius.sneakyfish5.xyz/version
I just upgraded to 1.1.3, ran systemctl daemon-reload
and systemctl restart codiusd
and now my host is unreachable. I checked codiusd logs and heres the only error I see, which shouldn't affect anything.
Jul 13 02:06:12 codius.sneakyfish5.xyz codiusd[19752]: 390,
Jul 13 02:06:12 codius.sneakyfish5.xyz codiusd[19752]: 'https://codius1.auminijay.xyz' ]
Jul 13 02:06:12 codius.sneakyfish5.xyz codiusd[19752]: 2018-07-13T02:06:12.496Z follow-redirects debug options { protocol: 'https:',
Jul 13 02:06:12 codius.sneakyfish5.xyz codiusd[19752]: maxRedirects: 21,
Jul 13 02:06:35 codius.sneakyfish5.xyz codiusd[19752]: 2018-07-13T02:06:35.388Z connector:ilp-plugin-btp[parent]:trace debug processing btp packet {"type":1,"requestId":2350220395,"data":{"protocolData":[{"protocolName":"ilp","contentType":0,"data":{"type":"Buffer","data":[14,118,70,48,48,59,103,46,115,99,121,108,108,97,46,99,108,105,101,110,116,46,55,102,108,109,116,116,118,100,76,122,89,108,45,45,69,104,109,118,101,76,105,84,105,111,77,57,118,51,119,69,49,75,101,85,72,68,107,100,117,90,45,49,99,53,99,97,110,110,111,116,32,112,114,111,99,101,115,115,32,114,111,117,116,101,32,99,111,110,116,114,111,108,32,109,101,115,115,97,103,101,115,32,102,114,111,109,32,110,111,110,45,112,101,101,114,115,46,0]}}]}}
Jul 13 02:06:35 codius.sneakyfish5.xyz codiusd[19752]: 2018-07-13T02:06:35.388Z connector:ilp-plugin-btp[parent]:trace debug received BTP packet (TYPE_RESPONSE, RequestId: 2350220395): {"protocolData":[{"protocolName":"ilp","contentType":0,"data":{"type":"Buffer","data":[14,118,70,48,48,59,103,46,115,99,121,108,108,97,46,99,108,105,101,110,116,46,55,102,108,109,116,116,118,100,76,122,89,108,45,45,69,104,109,118,101,76,105,84,105,111,77,57,118,51,119,69,49,75,101,85,72,68,107,100,117,90,45,49,99,53,99,97,110,110,111,116,32,112,114,111,99,101,115,115,32,114,111,117,116,101,32,99,111,110,116,114,111,108,32,109,101,115,115,97,103,101,115,32,102,114,111,109,32,110,111,110,45,112,101,101,114,115,46,0]}}]}
Jul 13 02:06:35 codius.sneakyfish5.xyz codiusd[19752]: 2018-07-13T02:06:35.388Z connector:ccp-receiver[parent] debug route control message was rejected. rejection={"code":"F00","triggeredBy":"g.scylla.client.7flmttvdLzYl--EhmveLiTioM9v3wE1KeUHDkduZ-1c","message":"cannot process route control messages from non-peers.","data":{"type":"Buffer","data":[]}}
Jul 13 02:06:35 codius.sneakyfish5.xyz codiusd[19752]: 2018-07-13T02:06:35.388Z connector:ccp-receiver[parent] debug failed to set route control information on peer. error=Error: route control message rejected.
Jul 13 02:06:35 codius.sneakyfish5.xyz codiusd[19752]: at plugin.sendData.then.data (/usr/lib/node_modules/codiusd/node_modules/ilp-connector/src/routing/ccp-receiver.ts:174:17)
Jul 13 02:06:35 codius.sneakyfish5.xyz codiusd[19752]: at process._tickCallback (internal/process/next_tick.js:68:7)
I also ran a debug script that you can see here: https://github.com/xrp-community/codius-install
I saw an error there where it said:
==================================
codiusd
==================================
/usr/lib/node_modules/codiusd/src/services/Config.ts:58
throw new Error('Codiusd requires CODIUS_PUBLIC_URI to be set')
^
Error: Codiusd requires CODIUS_PUBLIC_URI to be set
at new Config (/usr/lib/node_modules/codiusd/src/services/Config.ts:58:13)
at construct (/usr/lib/node_modules/codiusd/node_modules/reduct/index.ts:34:12)
at reduct (/usr/lib/node_modules/codiusd/node_modules/reduct/index.ts:59:7)
at new App (/usr/lib/node_modules/codiusd/src/services/App.ts:26:19)
at construct (/usr/lib/node_modules/codiusd/node_modules/reduct/index.ts:34:12)
at reduct (/usr/lib/node_modules/codiusd/node_modules/reduct/index.ts:59:7)
at Object.<anonymous> (/usr/lib/node_modules/codiusd/src/index.ts:8:23)
at Module._compile (internal/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
==================================
So I checked my config but it looks all good to me. I'll paste it below for you to check.
[Unit]
Description=Codiusd
After=network.target nss-lookup.target
[Service]
ExecStart=/usr/bin/npm start
Environment="DEBUG=*"
Environment="CODIUS_PUBLIC_URI=https://codius.sneakyfish5.xyz"
Environment="CODIUS_COST_PER_MONTH=10"
Environment="CODIUS_ADDITIONAL_HOST_INFO=true"
Environment="CODIUS_MAX_MEMORY_FRACTION=0.80"
WorkingDirectory=/usr/lib/node_modules/codiusd
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=codiusd
User=root
Group=root
[Install]
WantedBy=multi-user.target
I would love to have any help you can provide me, and maybe figure this out, as I've never seen something like this before and the troubleshooting docs don't say anything about this.
Can I request a mailing list for announcements, for things like with moneyd-xrp rpm is updated, new version of codiusd is pushed and also when things like hyperd needs updating.
Thx,
Chris
Vars like CODIUS_MAX_MEMORY_FRACTION should be gauaded for a ranged input ...
if you do .90 instead if 0.90 you actually get 90x instead of .9, which results in bad ram reporting
(node:20985) MaxListenersExceededWarning: (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
This occurred when running CODIUS_HYPER_NOOP=true node src/index.js
in the root directory.
Using hyper.sock's create/run pod API endpoints doesn't make hyperd pull the images required. We'll need to use the "Images" commands under https://docs.hypercontainer.io/reference/api.html in order to make sure that all the required images are pulled
Would like to be able to create smart-contract without installing codius cli but through web interface. As it will need to deal with payment side of things maybe calculate fee then wait for user to send funds to a monitored account then soon as payment received start the smart contract with manifest info given.
Moving forward once this is part is done, a site of pre made contracts can be listed like what happens on digital ocean, aws, vultr when choosing flavour of operating system.
This makes it easier to deploy a codius smart contract to less technical users and helps adoption by building on the eco system.
As a default the os.loadavg() showcases values based on cores. Therefore a 1.0 equals 100% utilization based on a single core system. In a dual core system 2.0 would be the same and 4.0 in a quad core system and so forth. So in a single core system 1.0 would be bad but in a quad core system it would be nothing.
Running a multi-core setup this would however make the server look overused and make developers choose another host eventhough there was a lot of processing power left. They have to have a way to know what number is the max to get an idea of the utilization of the system ressources.
I suggest that the averageload is changed to os.loadavg() / core count to give a more valid representation or atleast as a minimum add information about the core count in /info
Hello,
After upgrading to 1.2.5 I get this error:
018-08-17T19:53:17.702Z codiusd:HttpServer info listening at https://codius 2018-08-17T19:53:17.732Z codiusd:SelfTest error { FetchError: request to https://codius/pods?duration=300 failed, reason: connect ECONNREFUSED 10.132.0.2:443 at ClientRequest.<anonymous> (/usr/lib/node_modules/codiusd/node_modules/node-fetch/lib/index.js:1345:11) at ClientRequest.emit (events.js:182:13) at TLSSocket.socketErrorListener (_http_client.js:391:9) at TLSSocket.emit (events.js:182:13) at emitErrorNT (internal/streams/destroy.js:82:8) at emitErrorAndCloseNT (internal/streams/destroy.js:50:3) at process._tickCallback (internal/process/next_tick.js:63:19) message: 'request to https://codius/pods?duration=300 failed, reason: connect ECONNREFUSED 10.132.0.2:443', type: 'system', errno: 'ECONNREFUSED', code: 'ECONNREFUSED' } 2018-08-17T19:53:17.735Z codiusd:SelfTest error Error: Self test failed: Upload Status=false Http Connection=false WebSocket Connection=false at SelfTest.run (/usr/lib/node_modules/codiusd/src/services/SelfTest.ts:202:13) at process._tickCallback (internal/process/next_tick.js:68:7)
Have seen a few transactions where the fee is higher then the payment:
"fee": "0.006183",
"value": "-0.004813"
"fee": "0.006163",
"value": "-0.004793"
This was post a complete format/reinstall, to version 1.1.1
If a manifest with a faulty image is uploaded, the DB is still updated and lists the associated hash with running: true
.
Received this transaction today 8FC4C76BF8F9854F1FB771E9E9D377D6F2EEFA0882FE61DD7B38E0AC86A45136
Codius version 1.1.3
Moneyd version 4.0.1
Discussion:
src/controller/static.ts
Line #20,
const formatFreeMem = (memory: number) => { return (memory % 1000000) > 0 ? (memory / 1000000).toString() + ' gigabytes' : (memory / 1000).toString() + ' megabytes' }
It should be changed to
const formatFreeMem = (memory: number) => { return (memory / 1000000000) > 0 ? (memory / 1000000000).toString() + ' gigabytes' : (memory / 1000000).toString() + ' megabytes' }
I am not sure, it will be corrected or not..
I think this config entry MUST be dynamically changeable at some point since this is the only adjustment granting competitiveness and profitability. Standard HUP? reading from config file?
Create a CNAME alias for a pod hash on a codius host.. doesn't have to be running.
root@codius:/etc/nginx/conf.d|⇒ host justmoon.mmaton.com
justmoon.mmaton.com is an alias for lgx4y2krfrg2wwetdv7wc63z2bluwwshjvjgeumh6plisqjxmnuq.codius.justmoon.com.
lgx4y2krfrg2wwetdv7wc63z2bluwwshjvjgeumh6plisqjxmnuq.codius.justmoon.com has address 147.75.68.187
Curl the codius pod address directly, note correct behaviour.
root@codius:/etc/nginx/conf.d|⇒ curl https://lgx4y2krfrg2wwetdv7wc63z2bluwwshjvjgeumh6plisqjxmnuq.codius.justmoon.com
{"statusCode":404,"error":"Not Found","message":"no pod with that hash found. hash=lgx4y2krfrg2wwetdv7wc63z2bluwwshjvjgeumh6plisqjxmnuq"}#
Curl my CNAME record, we get the root domain effectively and the bog standard codius output.
root@codius:/etc/nginx/conf.d|⇒ curl https://justmoon.mmaton.com -k
<html>
<h2 id="header">Codius Host v1.2.1 at https://codius.justmoon.com</h2>
<p>This server is a Codius Host being run with <a href="https://github.com/codius/codiusd">codiusd.</a> If you want to upload a contract to this host, you may do so with the <a href="https://github.com/codius/codius">Codius CLI.</a></p>
<p>For more information on Codius, visit <a href="https://codius.org">codius.org.</a></p>
<table>
<tr>
<td>Server URI: </td>
<td id="uri">https://codius.justmoon.com</td>
</tr>
<tr>
<td>Number of Peers: </td>
<td id="numPeers">5</td>
</tr>
<tr>
<td>Server Uptime: </td>
<td id="serverUptime">5374889</td>
</tr>
<tr>
<td>Service Uptime: </td>
<td id="serviceUptime">17.76</td>
</tr>
<tr>
<td>Average Load: </td>
<td id="avgLoad">0.0020751953125</td>
</tr>
<tr>
<td>Currencies Accepted: </td>
<td id="currency">XRP</td>
</tr>
<tr>
<td>Monthly Hosting Rate: </td>
<td id="costPerMonth">10</td>
</tr>
<tr>
<td>Free Memory: </td>
<td id="memory">303257.191936 gigabytes</td>
</tr>
<tr>
<td>Max Memory Used?</td>
<td id="fullMem">false</td>
</tr>
</table>
<p>Additional information about this Codius host can be found at these links:</p>
<li><a href="/peers">Peers of this host (Random set of 1,000)</a></li>
</html>
This is not really the behaviour I want out of codius. Is there any way to get CNAMEs to mask a codius pod hash?
Thanks,
Max
Hi,
According to hyper.sh hyperd has now been subsumed by www.katacontainers.io. See
https://twitter.com/hyper_sh/status/1006340953429323778.
Just curious about how this is going to affect Codius moving forward? Will we still be running HyperContainers or KataContainers?
codiusd/src/util/validatePeer.ts
Line 11 in 59386d5
local peers should be allowed when in dev mode
services/HttpServer.ts #53 ~
this.server.views({ engines: { html: Handlebars }, relativeTo: path.resolve(__dirname, '../'), path: 'templates' })
In 1.2.x version, the landing page is fixed as above.
If add an extra parameter in config as 'CODIUS_HOST_INDEX=....'
and use it for resolving a path name,
sever operator can design their own index file.
After deploying a host it would be useful to have a service that deploys a special test contract to that host and reports back if the host was successfully deployed or not.
The host operator should simply submit the address of their host and an email address and the service will deploy the contract, run some tests, and then kill the contract before sending an email report to the host.
In my codiusd.service configuration file, the "CODIUS_PUBLIC_URI" property value was missing an ending double-quote. This caused my host to be discovered as "http://local.codius.org:3000" (default). While the fix was clear, it took quite some time to see this as there were no errors or warnings. Can the configuration be validated such that any potential issues may be, at least, flagged as warnings in log?
A few of us have the codius host env set up and are able to run the examples locally and get back a pod + url to it, which works.
However, when we try the example against an external host, the codius client log has money bandwidth exceeded
, with several retries.
What client/server config is necessary to get around this? My wallet is funded with 120 xrp.
ilp-plugin-btp processing btp packet {"type":1,"requestId":4098386379,"data":{"protocolData":[{"protocolName":"ilp","contentType":0,"data":{"type":"Buffer","data":[14,51,84,48,52,8,103,46,115,99,121,108,108,97,37,101,120,99,101,101,100,101,100,32,109,111,110,101,121,32,98,97,110,100,119,105,100,116,104,44,32,116,104,114,111,116,116,108,105,110,103,46,0]}}]}} +2s
ilp-plugin-btp received BTP packet (TYPE_RESPONSE, RequestId: 4098386379): {"protocolData":[{"protocolName":"ilp","contentType":0,"data":{"type":"Buffer","data":[14,51,84,48,52,8,103,46,115,99,121,108,108,97,37,101,120,99,101,101,100,101,100,32,109,111,110,101,121,32,98,97,110,100,119,105,100,116,104,44,32,116,104,114,111,116,116,108,105,110,103,46,0]}}]} +0ms
ilp-protocol-stream:Client:Connection packet 7 was rejected +95ms
ilp-protocol-stream:Client:Stream:1 cancelled holdId: 7 for: 22821 +97ms
ilp-protocol-stream:Client:Connection handling reject: {"code":"T04","triggeredBy":"g.scylla","message":"exceeded money bandwidth, throttling.","data":{"type":"Buffer","data":[]}} +0ms
ilp-protocol-stream:Client:Connection got temporary error. waiting 3200 before trying again +0ms
We've been trying to figure it out in the gitter chat.
This should probably be done from the CodiusDB class so that it can skip the mkdir
call when memdown is being used
With the coming of 1.2.1 and enforcement of a functional host before running it, it would be great if you have a mechanism that checks a version before allowing the contract to be deployed. For example some kind if minimal version that is required listed in the manifest.
This will prevent system owners to stay at an older version then the contract owner would prefer.
Remove trailing '/' from URI before Hapi tests it against regex expression
It would be nice if Codius had a second private port where it exposed an admin API similar to ILP connector.
Features would include:
When a pod is deleted from we should immediately save it to the DB, currently its just stored in local memory so if the host is restarted before its saved then it will not be removed from the db.
https://github.com/codius/codiusd/blob/master/src/services/PodDatabase.ts#L37
Why hyperd when we have kubernetes ruling the world ? Will you provide a kube version of this ever ?
Jun 7 03:52:14 codiusd[4286]: (node:4314) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 34): Error: getaddrinfo ENOTFOUND codius.example.com codius.example.com:443
Jun 7 03:52:23 codiusd[4286]: (node:4314) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 39): Error: getaddrinfo ENOTFOUND codius.example.com codius.example.com:443
Jun 7 03:52:38 codiusd[4286]: (node:4314) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 47): Error: getaddrinfo ENOTFOUND codius.example.com codius.example.com:443
Seems to be due to a misconfigured node attempting to peer?
For diagnostics, but also status, it would be great if you can see when the last success pod has been run on the server. Perhaps even a total amount of contracts since start as well.
https://github.com/codius/codiusd/blob/master/src/services/Config.ts#L55
I want to test a network of codius hosts running locally, but if they're in dev mode then I can't peer them with one another
If the main reliability index we need to be concerned with from a hosting standpiont is the availability of our contracts/hyperd, I think that hyperd uptime should be exposed along with serverUptime and serviceUptime in the codiusd /info endpoint.
If the codiusd service is down, restarted, etc, that should not affect running containers. We will inevitably have to restart codiusd to upgrade, so the uptime for the codiusd service metric may be a bit misleading.
Adding an endpoint to list all pods by manifest hash would be a useful feature for people who want to analyze the codius network. It would also be useful for discovering where specific contracts are being run.
Some people might want to run a contract privately, especially during development. To address this, we can add an "unlisted"
field to the manifest, which prevents this pod from being shown on the list of pods by hash. It would still be shown in the host operator's admin API and would still count towards their number of running contracts (or not; that's something I could go either way on)
Currently, if you call GET /pods?manifestHash=HASH
, you'll get the manifest corresponding to HASH
. You might not want this to be public, though. We should add a "privateManifest"
field which disables that behavior when it's set to true.
Need to add one line as
this.config.selfTestSuccess = this.wsSuccess && this.uploadSuccess && this.httpSuccess
at line number 129 of SelfTest.ts
It would be very useful if each host reported basic stats like the number of running contracts.
With 1.1.0 you made fullMem a bool and it is now not possible to see the memory allocation anymore.
I would like to request that the value is put back for general knowledge about RAM capacity throughout the network. If its to have a variable for an easy check if the host is available, then i suggest adding a "available" variable.
We'll set a sane maximum of 1000 peers to return so we don't DoS hosts. Query param will be n
to specify how many peers you want.
This will greatly speed up host discovery and help with mapping the network.
Codiusd doesn't have a timeout on incoming HTTP requests, but lots of them are timing out when the payment size is large or it takes a long time to pull images. This is because nginx returns a 504 when the upstream call takes too long to send data.
We could prevent this by having codiusd send a small amount of data on an interval in order to keep the connection alive. We could use the raw response stream in order to write some insignificant data (like whitespace) and then write the actual JSON response once the request is complete
On commit 7e3603d
Ran npm install --unsafe-perm
Relevant logs:
src/services/HyperClient.ts:36:7 - error TS2345: Argument of type '{ socketPath: string; method: string; url: string; params: { podName: string; }; responseType: st...' is not assignable to parameter of type 'AxiosRequestConfig'.
Object literal may only specify known properties, and 'socketPath' does not exist in type 'AxiosRequestConfig'.
36 socketPath: this.config.hyperSock,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/services/HyperClient.ts:65:7 - error TS2345: Argument of type '{ socketPath: string; method: string; url: string; params: { imageName: string; }; }' is not assignable to parameter of type 'AxiosRequestConfig'.
Object literal may only specify known properties, and 'socketPath' does not exist in type 'AxiosRequestConfig'.
65 socketPath: this.config.hyperSock,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/services/HyperClient.ts:77:7 - error TS2345: Argument of type '{ socketPath: string; method: string; url: string; data: PodSpec; }' is not assignable to parameter of type 'AxiosRequestConfig'.
Object literal may only specify known properties, and 'socketPath' does not exist in type 'AxiosRequestConfig'.
77 socketPath: this.config.hyperSock,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/services/HyperClient.ts:90:7 - error TS2345: Argument of type '{ socketPath: string; method: string; url: string; params: { podId: string; }; }' is not assignable to parameter of type 'AxiosRequestConfig'.
Object literal may only specify known properties, and 'socketPath' does not exist in type 'AxiosRequestConfig'.
90 socketPath: this.config.hyperSock,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/services/HyperClient.ts:109:7 - error TS2345: Argument of type '{ socketPath: string; method: string; url: string; params: { podId: string; }; }' is not assignable to parameter of type 'AxiosRequestConfig'.
Object literal may only specify known properties, and 'socketPath' does not exist in type 'AxiosRequestConfig'.
109 socketPath: this.config.hyperSock,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have CodiusD runtime support/expose streaming operational metrics related to application stack health (cpu,memory, disk, IO), intra-component communication, Interledger access, currency used in/out, etc. Generated metrics should be in a commonly available, open-source format such as Prometheus.
Purpose of feature request is to assist Codius Host providers in tuning and maintaining their service offering, as well as providing statistical proof of quality of services delivered. Will provide a method of determining the quality of Codius Hosting Service Providers for developers/entities prior to deploying Codius contracts.
Hello, I've installed my host, and it seems to be running but Codiusd is still showing problems:
/usr/lib/node_modules/codiusd/src/services/Config.ts:58 throw new Error('Codiusd requires CODIUS_PUBLIC_URI to be set') ^ Error: Codiusd requires CODIUS_PUBLIC_URI to be set at new Config (/usr/lib/node_modules/codiusd/src/services/Config.ts:58:13) at construct (/usr/lib/node_modules/codiusd/node_modules/reduct/index.ts:34:12) at reduct (/usr/lib/node_modules/codiusd/node_modules/reduct/index.ts:59:7) at new App (/usr/lib/node_modules/codiusd/src/services/App.ts:26:19) at construct (/usr/lib/node_modules/codiusd/node_modules/reduct/index.ts:34:12) at reduct (/usr/lib/node_modules/codiusd/node_modules/reduct/index.ts:59:7) at Object.<anonymous> (/usr/lib/node_modules/codiusd/src/index.ts:8:23) at Module._compile (internal/modules/cjs/loader.js:689:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10) at Module.load (internal/modules/cjs/loader.js:599:32)
This is my codiusd.serivce:
[Unit] Description=Codiusd After=network.target nss-lookup.target [Service] ExecStart=/usr/bin/npm start WorkingDirectory=/usr/lib/node_modules/codiusd Environment=DEBUG=* Environment=CODIUS_PUBLIC_URI=https://zodius.gaetanoherman.be Environment=CODIUS_XRP_PER_MONTH=10 Environment=CODIUS_MAX_MEMORY_FRACTION=0.97 Environment=CODIUS_ADDITIONAL_HOST_INFO=true Restart=always StandardOutput=syslog StandardError=syslog SyslogIdentifier=codiusd User=root Group=root [Install] WantedBy=multi-user.target
2018-07-03T15:45:18.960Z connector:ccp-receiver[parent] debug route control message was rejected. rejection={"code":"F00","triggeredBy":"g.scylla","message":"cannot process route control messages from non-peers.","data":{"type":"Buffer","data":[]}}
2018-07-03T15:45:18.961Z connector:ccp-receiver[parent] debug failed to set route control information on peer. error=Error: route control message rejected.
at plugin.sendData.then.data (/usr/lib/moneyd-xrp/moneyd/node_modules/ilp-connector/src/routing/ccp-receiver.ts:174:17)
thank you
Nice thing to see in codiusd - maintenance mode which stops codiusd from accepting new contracts, but all existing contracts continue to run. Once all existing contracts expire the server administrator can work on versions upgrade resource adding etc.
Hosts fail to process contracts whenever the public vars are defined but the private field is not included in the manifest. Here's the output from the Codius CLI:
codius-cli:uploadHandler Pod Upload failed Error: Request Failed +8s
Failed To Upload Pods to:
[ { error: 'Request Failed',
host: 'https://codius.andros-connector.com',
status: 500,
statusText: 'Internal Server Error' } ]
The standard manifest schema does not require the private vars field to be specified, its entirely optional. The contract uploaded successfully when I added an empty private vars field. The upload also worked when the public and private vars fields were both left out.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.