maelstrom icon indicating copy to clipboard operation
maelstrom copied to clipboard

Injecting Faults - nemesis

Open kkondru opened this issue 3 years ago • 4 comments

I'm experimenting with partitioning with Raft protocol. Can anyone help me on how to induce partial/simplex faults where only one way communication is possible?

I see the option --nemesis FAULTS #{}, a comma separated list of faults to inject.

How is this option used? And what I should give in the comma separated list? usually "--nemesis partition" is provided to induce faults

kkondru avatar Feb 18 '22 20:02 kkondru

There's no CLI argument for one-way message omissions, but I don't think it would be hard to add. Take a look at maelstrom.net for the network definition and how partitions are currently implemented. :-)On Feb 18, 2022 15:31, kkondru @.***> wrote: I'm experimenting with partitioning with Raft protocol. Can anyone help me on how to induce partial/simplex faults where only one way communication is possible? I see the option --nemesis FAULTS #{}, a comma separated list of faults to inject. How is this option used? And what I should give in the comma separated list? usually "--nemesis partition" is provided to induce faults

—Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you are subscribed to this thread.Message ID: @.***>

aphyr avatar Feb 18 '22 22:02 aphyr

Thanks Kyle,

I looked into maelstrom.net, but it doesn't seem to be a related site. I checked "https://github.com/jepsen-io/maelstrom" and it offered a general overview. So, I have to make changes maelstrom codebase for implementing one-way message omissions...? I'm not familiar with Clojure.. will it take much time to learn it!!!

kkondru avatar Feb 19 '22 09:02 kkondru

Yes, sorry, maelstrom.net is the namespace responsible for the virtual network Maelstrom provides. And yes, because there's no built-in support, you'd have to add it yourself.On Feb 19, 2022 04:29, kkondru @.***> wrote: Thanks Kyle, I looked into maelstrom.net, but it doesn't seem to be a related site. I checked "https://github.com/jepsen-io/maelstrom" and it offered a general overview. So, I have to make changes maelstrom codebase for implementing one-way message omissions...? I'm not familiar with Clojure.. will it take much time to learn it!!!

—Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you commented.Message ID: @.***>

aphyr avatar Feb 19 '22 13:02 aphyr

Hi,

I'm trying to understand Maelstrom wrapper code and I see that in the nemesis.cli, there's isn't much code. I'm trying to include one-way communication between the nodes. It's invoking Jepsen code to run nemesis. So, I have to now make changes to Jepsen code?

(ns maelstrom.nemesis "Fault injection" (:require [clojure.tools.logging :refer [info warn]] [jepsen [generator :as gen] [nemesis :as n] [util :refer [pprint-str]]] [jepsen.nemesis.combined :as nc] [slingshot.slingshot :refer [try+ throw+]]))

(defn package "A full nemesis package. Options are those for jepsen.nemesis.combined/nemesis-package." [opts] (nc/compose-packages [(nc/partition-package opts) (nc/db-package opts)]))

kkondru avatar Mar 25 '22 06:03 kkondru