smartcontractkit / external-initiator Goto Github PK
View Code? Open in Web Editor NEWInitiate Chainlink job runs from external sources
License: MIT License
Initiate Chainlink job runs from external sources
License: MIT License
Potentially add runlog
& fluxmonitor
distinct types on JobSpec? (For now the convention is that if nothing is passed then it is runlog. But there might be other types from time to time.)
FluxMonitor spec might need some validations.
If oracle is not eligible to submit, FM is not started. We should probably log the reason for the non-eligibility, so we can know if it is expected behavior or something has gone wrong.
As of current PoC FM integration with Substrate, we requesting the FA state once on FM, and then changing it directly on FM on new incoming events from BM.
We might need to have the FA state synced as close as possible to the actual blockchain state. For e.g something might go wrong in FM logic, and have it do an internal state change that doesn't reflect the true state of the blockchain. Or maybe the blockchain has some other unexpected behaviour that FM haven't taken into account, so the FA is in a different state.
A solution could be to do the syncing(querying the whole FA state anew) more frequently, on incoming blockchain events, to prevent faulty results.
(We might need to move all FA state handling to BM and have FM only to read it).
i have ran ./integration/setup
without issue.
But when i ran ./integration/run_test
, the integration_chainlink container kept restarting.
Here is the log from that container:
2020-09-15T00:10:35Z [INFO] API exposed for user [email protected] cmd/local_client.go:95
2020-09-15T00:10:35Z [DEBUG] eth.Client#Dial(...) eth/client.go:110
error starting app: dial tcp 127.0.0.1:8546: connect: connection refused
i didn't change the integration/chainlink.env
file under integration which has ETH_DISABLED=true
As part of #139, the FM service now has access to contexts in requests to the blockchain implementation.
The FM service should implement these by setting a timeout for requests, and calling the context cancel on subscriptions on shutdown.
FM starts even the related job is not present in the CL node. What should the behavior be?
At least we might need an easy way to delete subscriptions(both to CL node + the blockchain), without having to manually do it through db? Maybe something like clear/reset of all subscriptions at least?
If the job run is not successful, EI cannot submit again, due to lastSubmittedRound already incremenented. Potentially increment the lastSubmittedRound at a later point, after successfully submitting to the contract itself.
Currently it takes ~6 min for the CI to set up the integration tests, and roughly 10 minutes in total. This probably won't scale very well as we integrate more (non-EVM) chains.
Unit tests in non-blockchain packages should be blockchain agnostic
The FM service currently has a lot of unclear logic that should be cleaned up.
A few of the issues:
While it was discussed earlier that the blockchain manager sending a single FM state struct would be the best option, I now think that the best solution here is if we have a generic channel in which the blockchain manager sends different types of events defined in the blockchain
package. This should reduce the number of pointers used, and hopefully clean up some of the logic in the FM service.
There are cases where we don't want a poll timer and only use a heartbeat, or cases where we only want a poller (trigger on deviation) and no heartbeat.
This includes:
See chainlink/node_test.go
for inspiration
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.