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

Create testground tests for deal data transfer restarts #5740

Closed
dirkmc opened this issue Mar 8, 2021 · 5 comments
Closed

Create testground tests for deal data transfer restarts #5740

dirkmc opened this issue Mar 8, 2021 · 5 comments

Comments

@dirkmc
Copy link
Contributor

dirkmc commented Mar 8, 2021

We need testground tests to verify that storage and retrieval deals behave correctly when the data transfer restarts, because

  • the miner went down
  • the client went down
  • the connection went down

Suggested implementation:

  • Create one bootstrapper, one client and one miner
  • Use 8MB sector sizes
  • Transfer 7MB file
  • Reduce network bandwidth to 256kb so that it takes around 30s for the data to transfer

It may be difficult to restart the client / miner programmatically from within testground, in which case

  • the scope of this task should be reduced to verifying correct behaviour when the network connection goes down (repeatedly)
  • a different framework should be used to simulate miner / client restarts
@dirkmc dirkmc added this to the 💹Storage Deal Success milestone Mar 8, 2021
@dirkmc dirkmc added the x/ignite label Mar 9, 2021
@aarshkshah1992
Copy link
Contributor

@dirkmc

  1. As far as a go-fil-markets peer is concerned, what's the difference between losing a connection to a peer versus that peer crashing ?

  2. We can add a utility to go-fil-markets that shuts-down a peer and then starts it again. IIUC, the only thing that needs to be shared between the "old" peer and the "new" restarted peer is the datastore as the datastore contains the FSM & deal states.

@dirkmc
Copy link
Contributor Author

dirkmc commented Mar 24, 2021

what's the difference between losing a connection to a peer versus that peer crashing?

From the client's point of view, losing the connection to the provider and the provider crashing look the same.
But we also want to test from the provider's point of view, and that a client or provider can be restarted in the middle of a data transfer and will pick up from where the transfer stopped.

I think the case of the network connection going down is more important to get right though, as it happens more frequently.

We can add a utility to go-fil-markets that shuts-down a peer and then starts it again

I would like the test to simulate a real world scenario of the client or provider actually being rebooted during a transfer. So it's not just go-fil-markets that needs to restart, but the whole node.

@raulk
Copy link
Member

raulk commented Mar 24, 2021

I know we’re blocked on larger sectors because otherwise the transfer is too fast to be able to disrupt it midway. Two options come to mind, there may be more:

  1. We constrain the bandwidth via traffic shaping, so that the transfer takes much longer. (can introduce other artefacts)
  2. We use 32GiB sectors with fake sealing, instantaneous sealing. (probably the best option)

@dkkapur
Copy link
Contributor

dkkapur commented May 24, 2021

@dirkmc - fair to assume this can be closed with the fixes in markets v1.3?

@dirkmc
Copy link
Contributor Author

dirkmc commented May 31, 2021

Yes, thanks Deep, closing

@dirkmc dirkmc closed this as completed May 31, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants