Skip to content
This repository has been archived by the owner on Nov 6, 2020. It is now read-only.

Implement parity_versionInfo & parity_setChain on LC; fix parity_setChain #10312

Merged
merged 11 commits into from
Mar 4, 2019

Conversation

axelchalon
Copy link
Contributor

@axelchalon axelchalon commented Feb 7, 2019

  • Implement eth_subscribe('syncing') RPC for full node & light node (closes Implement eth_subscribe('syncing') #10080); same output format as eth_syncing rpc: we'll use the implentation of this other PR RPC: Implements eth_subscribe("syncing") #10311 instead
  • parity_setChain RPC: return an error if failed (instead of true)
  • Light client: implement set_exit_handler & parity_setChain RPC (needed for Fether)
  • Light client: implement parity_versionInfo RPC (needed for Fether)

cc @amaurymartiny

@axelchalon axelchalon added A0-pleasereview 🤓 Pull request needs code review. M6-rpcapi 📣 RPC API. labels Feb 7, 2019
@parity-cla-bot
Copy link

It looks like @axelchalon signed our Contributor License Agreement. 👍

Many thanks,

Parity Technologies CLA Bot

1 similar comment
@parity-cla-bot
Copy link

It looks like @axelchalon signed our Contributor License Agreement. 👍

Many thanks,

Parity Technologies CLA Bot

@axelchalon
Copy link
Contributor Author

There's another implementation of eth_subscribe('syncing') in this PR: #10311

Copy link
Collaborator

@tomusdrw tomusdrw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please fix the indentation in all files, apart from that it looks ok. We could optimize the notification though to get events from sync like #10311 is attempting to do.

@axelchalon
Copy link
Contributor Author

FWIW if preferred I can revert the Implement eth_subscribe('syncing') commit if we decide to use the implementation in the other PR #10311

@5chdn 5chdn modified the milestones: 2.4, 2.5, 2.6 Feb 21, 2019
@axelchalon axelchalon changed the title Implement eth_subscribe('syncing'); parity_versionInfo & parity_setChain on LC; fix parity_setChain Implement parity_versionInfo & parity_setChain on LC; fix parity_setChain Feb 22, 2019
@soc1c soc1c added A8-looksgood 🦄 Pull request is reviewed well. and removed A0-pleasereview 🤓 Pull request needs code review. labels Feb 27, 2019
@Tbaut
Copy link
Contributor

Tbaut commented Mar 4, 2019

adding the beta label as we need if for Fether :)

parity/run.rs Outdated
@@ -379,7 +383,7 @@ fn execute_light_impl(cmd: RunCmd, logger: Arc<RotatingLogger>) -> Result<Runnin

fn execute_impl<Cr, Rr>(cmd: RunCmd, logger: Arc<RotatingLogger>, on_client_rq: Cr,
on_updater_rq: Rr) -> Result<RunningClient, String>
where Cr: Fn(String) + 'static + Send,
where Cr: Fn(String) -> Result<(), ()> + 'static + Send,
Copy link
Collaborator

@niklasad1 niklasad1 Mar 4, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this change needed?

It breaks parity-clib compatibility, https://github.com/paritytech/parity-ethereum/blob/master/parity-clib/src/lib.rs#L145 is the problem basically we ignore the return value because the restart function is void i.e, doesn't return any value.

It could be fixed by changing the return value of the callback function to an integer and map 0 to Ok and other values as Err but it requires some changes in the C API

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, it'd be nice to have the RPC response reflect whether or not the restart succeeded (although not necessary) but changing the return value of the restart client callback to an integer doesn't seem very clean so I'll change back the return value of the callback for now! 👍

parity/run.rs Outdated
@@ -165,7 +165,9 @@ impl ::local_store::NodeInfo for FullNodeInfo {
type LightClient = ::light::client::Client<::light_helpers::EpochFetch>;

// helper for light execution.
fn execute_light_impl(cmd: RunCmd, logger: Arc<RotatingLogger>) -> Result<RunningClient, String> {
fn execute_light_impl<Cr>(cmd: RunCmd, logger: Arc<RotatingLogger>, on_client_rq: Cr) -> Result<RunningClient, String>
where Cr: Fn(String) -> Result<(), ()> + 'static + Send
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this change needed?

It breaks parity-clib compatibility

@@ -240,7 +239,7 @@ impl<C, M, U, F> ParitySet for ParitySetClient<C, M, U, F> where
let hash = hash.into();

Ok(self.miner.remove_transaction(&hash)
.map(|t| Transaction::from_pending(t.pending().clone()))
.map(|t| Transaction::from_pending(t.pending().clone()))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove space please :P

Copy link
Collaborator

@niklasad1 niklasad1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall the code looks good but the change of the trait bound where Cr: Fn(String) -> Result<(), ()> + 'static + Send breaks compatibility with C library which need to be addressed!

Either by changing back back the trait bound to where Cr: Fn(String) + 'static + Send or fix it in the C API (see inline comments)

@niklasad1 niklasad1 added A5-grumble 🔥 Pull request has minor issues that must be addressed before merging. and removed A8-looksgood 🦄 Pull request is reviewed well. labels Mar 4, 2019
@niklasad1 niklasad1 added A8-looksgood 🦄 Pull request is reviewed well. and removed A5-grumble 🔥 Pull request has minor issues that must be addressed before merging. labels Mar 4, 2019
@niklasad1 niklasad1 merged commit 7014642 into master Mar 4, 2019
@niklasad1 niklasad1 deleted the ac-rpc branch March 4, 2019 19:24
soc1c pushed a commit that referenced this pull request Mar 13, 2019
…hain (#10312)

* Light client: implement parity_versionInfo RPC

* Light client: implement set_exit_handler & parity_setChain RPC

* parity_setChain RPC: return an error if failed (instead of `true`)

* Implement eth_subscribe('syncing') RPC for full node & light node

* Fix indentation

* Revert commit: Implement eth_subscribe('syncing')

* Revert change to Cr callback function
@soc1c soc1c mentioned this pull request Mar 13, 2019
7 tasks
soc1c added a commit that referenced this pull request Mar 19, 2019
* version: bump beta

* Implement parity_versionInfo & parity_setChain on LC; fix parity_setChain (#10312)

* Light client: implement parity_versionInfo RPC

* Light client: implement set_exit_handler & parity_setChain RPC

* parity_setChain RPC: return an error if failed (instead of `true`)

* Implement eth_subscribe('syncing') RPC for full node & light node

* Fix indentation

* Revert commit: Implement eth_subscribe('syncing')

* Revert change to Cr callback function

* CI publish to aws (#10446)

* move publish aws from gitlab.yml to gitlab scripts

* gitlab.yml cleaning
move publish AWS to gitlab scripts
remove dependencies from android build

* CI aws git checkout (#10451)

* Updating the CI system with the publication of releases and binary files on github

Signed-off-by: Denis S. Soldatov aka General-Beck <general.beck@gmail.com>

* move publish aws from gitlab.yml to gitlab scripts

Signed-off-by: Denis S. Soldatov aka General-Beck <general.beck@gmail.com>

* gitlab.yml cleaning
move publish AWS to gitlab scripts
remove dependencies from android build

Signed-off-by: Denis S. Soldatov aka General-Beck <general.beck@gmail.com>

* Revert "Updating the CI system with the publication of releases and binary files on github"

This reverts commit da87e06.

* remove no-git for aws

* microfix

* no need in no_git then

* Revert "CI aws git checkout (#10451)" (#10456)

* Revert "CI aws git checkout (#10451)"

This reverts commit 3e1d731.

* Update .gitlab-ci.yml

revert aws script with small fixes

* Delete publish-aws.sh

* Tests parallelized (#10452)

* tests splitted, phase 1

* typo

* fix wrong launch commands

* typos

* rearrangements

* use `nproc` function for threads

* use nproc for threads

* let theads be auto, build-andriod no more in regular run

* split val chain and cargo check

* renamed some files

* wrong phase

* check rust files before test jobs

* lint error

* rust files modivied var

* test except changes

* add rust_changes except

* lint error

* fixes

* .gitlab-ci.yml can't be excluded

* pipeline shouldn't start

* pipeline must go

* pipeline must go 2

* pipeline must go 3

* pipeline must go 4

* pipeline must go 5

* pipeline must go 6

* pipeline must go 7

* pipeline must not go 1

* pipeline must go 8

* avoid skippng tests yet, reintroducing them after the caching

* test theory

* parallelized cargo check with combusting helicopters

* less uploads

* alias for cargo checks

* nice template

* Ensure static validator set changes are recognized (#10467)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A8-looksgood 🦄 Pull request is reviewed well. M6-rpcapi 📣 RPC API.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement eth_subscribe('syncing')
8 participants