-
Notifications
You must be signed in to change notification settings - Fork 7.3k
ZOOKEEPER-3601:introduce the fault injection framework: Byteman for ZooKeeper #1135
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
Conversation
maoling
commented
Nov 7, 2019
- Byteman is a powerful tool to inject faults during runtime, especially for distributed system
- In the future, we can also introduce it into our unit test infra, just as hadoop, cassandra did. PR-123 is a good starting.
- more details in the ZOOKEEPER-3601
|
anmolnar
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 Alright.
|
retest maven build |
|
I was wondering if the fault injection (Byteman or Chaos Monkey or whatever) functionality is available now? This functionality may be used in ZOOKEEPER-4074. |
Sharing some other chaos engineering approaches currently I used for ZooKeeper:blockade:I use it for injecting network latency and network partition(very useful, I love it). I write lots of specific scripts which help me create the custom network partition pattern I want. chaos-mesh:I use it for general chaos work and it has a good web UI and is integrated with k8s. But AFAIK, I cannot customize network partition jepsen:A framework for distributed systems verification, with fault injection(mainly used for consistency check). I used it for linearizable read consistency check in ZOOKEEPER-3600 Byteman:It's what this patch wants to introduce. Byteman is a tool which makes it easy to trace, monitor and test the behaviour of Java application and JDK runtime code. It injects Java code into your application methods or into Java runtime methods without the need for you to recompile, repackage or even redeploy your application. Injection can be performed at JVM startup or after startup while the application is still running. Injected code can access any of your data and call any application methods, including where they are private. You can inject code almost anywhere you want and there is no need to prepare the original source code in advance. You can even remove injected code and reinstall different changes while the application continues to execute. chaosblade:ChaosBlade is a injection tool that follows the principles of chaos engineering and chaos experimental models to help enterprises improve the fault tolerance of distributed systems and ensure business continuity during the process of enterprises going to cloud or moving to cloud native systems. The scenarios include: Stress for Linux:A tool which imposes a configurable amount of load on your system where ZooKeeper locates namazu-swarm:Namazu Swarm is a part of Namazu, a programmable fuzzy scheduler for testing distributed systems. AFAIK, this project has not been maintained for a long time and it's not easy to install it. Other resources from other projects:[etcd]:https://coreos.com/blog/new-functional-testing-in-etcd.html [Kafka]:https://cwiki.apache.org/confluence/display/KAFKA/Fault+Injection [Apache Ozone]:https://blog.cloudera.com/apache-ozone-fault-injection-framework/ |
|
I will merge this PR at 05-29 if no other concerns within this week. Cc @anmolnar |