Comments (5)
Hey, @mhutchinson,
Thanks for getting back to that issue and for the feedback. I will give it a try this week, hopefully will be able to contribute.
from trillian-examples.
Thanks for the well written bug report and the attempted fix in #1045. This sounds like it should be an easy fix, but I think that appearance is deceptive. I wasn't aware of any logs trying to coerce alignment as specific indices, and the design of the cloner doesn't lend itself well to readjusting to these hints; the current design does a very greedy strategy in the batch.go
Bulk
method where it starts goroutine workers with statically computed ranges to fetch.
I think the BatchFetch
mechanism will need some way to elegantly report up that it only got partial results. The cloner will then need to cancel other fetches in progress and restart fetching again, using a start index based on the last result fetched from the incomplete range. To give confidence that this works, we'd probably want to add some kind of functional test that emulates a log performing this coercion.
I'm open to receiving PRs for this. If none are forthcoming I'll try to make time for this but it's unlikely to happen in the next couple of weeks, at least.
from trillian-examples.
I agree, got actually caught up in that "deception" and still have not fixed an issue.
Another option could be to run at first just one request, check it for the alignment and spin workers accordingly received result.
In the approach you offer I think it's important to also implement the cleanup of cancelled or finished fetchers, as it might break the following insertion transactions.
What do you think would be the preferred way to approach the issue?
from trillian-examples.
I like your proposal to have special-casing only on startup. Once a full chunk has been fetched, then it can enter full parallel mode as it currently does, and die on incomplete chunks.
The reason I like this is:
- it's simpler than trying to realign mid-run
- if the whole process is run by some orchestrator (e.g. docker) then this can be configured to restart the process on death. The events of dying/restarting will fix any transient alignment problems when the startup special casing reruns
I think this approach is worth investigating. It seems strictly better than the current behaviour. Is this something you'd be able to contribute, @tired-engineer ?
from trillian-examples.
Sent the first implementation for review, a bit later than expected. I think it covers more or less everything we've discussed on this thread.
from trillian-examples.
Related Issues (20)
- Question about Firmware Transparency Design: update client (flash_tool) verifying consistency HOT 2
- Typo in the Firmware Transparency Demo Doc HOT 2
- Re-add map demos removed in #257
- Enhance README.md to have a FT Map story nicely connected with the existing story
- Trillian and syslog centralized ? HOT 2
- [Serverless] Split up witness PR handling HOT 1
- [Serverless] Break out log and distributor roles
- Use YAML for human-written config files HOT 1
- Witness can't recover from invalid proof supplied to TOFU update
- Error while testing HOT 1
- [Witness/Armory] Add some form of durable storage HOT 2
- Update merkle dep, and remove calls to visitor for leaves HOT 2
- Supporting the kernel.org transparency log HOT 5
- Don't pass secrets via flags
- Verification of db data HOT 1
- Serverless client inclusion command output not easy to use
- Omniwitness Monolith docker image doesn't run on armv7 HOT 3
- Delete the witness code HOT 1
- Replace deprecated `set-output` command with environment file
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from trillian-examples.