Comments (6)
First thought: we should invert the dependency! Fuse should not depend on folsom, but another system could depend on both folsom and fuse, or folsom and exometer. This way, we don't mandate a specific version of tracker and this improves the flexibility of the system as a whole. We then provide a "plug in" module in the configuration for these kinds of things and we call that module whenever we want to do things with stats. By reconfiguring the name of the plug-in module, one can easy define fuse_folsom
, fuse_trace
, fuse_et
, fuse_exometer
and so on, and use the right module.
The change is definitely worthwhile to pursue. It would require a major version bump, but I think that should be done. The other part is to rewrite documentation appropriately.
from fuse.
Sounds good; I'll take a shot at this.
When you say "the configuration", do you mean via:
StatsModule = application:get_env(fuse, stats_plugin, fuse_folsom)
or similar? That's not a problem to set up in the state of the fuse_server
process, but any concerns with calls like this in the async_dirty
fast path of fuse_server:ask_/1
?
Finally, is "master" the right place to be working as of now? I'm getting errors with tests there, both from folsom's "bear" dependency requiring application:start
and (with that fixed), in the QC tests:
https://gist.github.com/emauton/d33385c06e16b6446161
from fuse.
Regarding performance worries: I want somebody to have a problem before I try to solve it. So application:get_env/3
is definitely the way to go for now.
The master
should be stable. If it is not, it is an error. You should be able to branch off of master
at any point knowing you have a stable foundation on which to build patches.
The QC errors are worrisome. I should probably look into why that happens :)
from fuse.
d195fae is not a serious commit btw - just stashing away some exploratory work from earlier for reference.
from fuse.
Ok, I took the time to look at this. The EQC errors you are seeing are probably expected. To compile the code for EQC-analysis, you need to run make app_eqc
since we are setting an EQC_TESTING
compile time knob.
The knob overrides timing in the model in order to make sure we control time in the system. This is necessary to test correctness of parallel timing constructions and to forward time correctly in the model. If you compile without it, things go bad very quickly, and that is essentially what you see. In general,
fuse_eqc:r(seq, {1, min}),
fuse_eqc:r(par, {1, min}),
should work out-of-the-box, but the PULSE enabled variant requires a more careful recompile to pull off, and its setup is less stable.
All in all, we should hence be able to use the test cases on the new code as well.
from fuse.
OK, verified that with the right make
args the EQC stuff is fine. Sorry about that. :o)
With #7 I think we're done here? Thanks!
from fuse.
Related Issues (20)
- Add release 16 and 17 support HOT 2
- tags not synced HOT 2
- Is sasl needed in the application? HOT 2
- update readme - users HOT 4
- Progress reports are output to console HOT 2
- Model failure: when resetting a fuse the timer reference is not reset HOT 1
- Model failure: Unexpected cancel timer HOT 3
- Reinstall failures.
- Some invariants which is needed to move forward: HOT 1
- What is a circuit breaker..? HOT 1
- Fault Injection Fuses lead to errors HOT 3
- gulp build issue with html files HOT 1
- Relax the circuit name? HOT 3
- SASL started by default HOT 8
- Bump version and update hex.pm package HOT 6
- Move from Travis CI to GitHub Actions? HOT 1
- Broken spec for the name of a fuse
- telemetry implementation of fuse_stats_plugin? HOT 1
- Control the service restart after blown HOT 35
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 fuse.