Examine individual changes
This page allows you to examine the variables generated by the Edit Filter for an individual change.
Variables generated for this change
Variable | Value |
---|---|
Edit count of the user (user_editcount ) | null |
Name of the user account (user_name ) | '37.11.126.80' |
Age of the user account (user_age ) | 0 |
Groups (including implicit) the user is in (user_groups ) | [
0 => '*'
] |
Rights that the user has (user_rights ) | [
0 => 'createaccount',
1 => 'read',
2 => 'edit',
3 => 'createtalk',
4 => 'writeapi',
5 => 'editmyusercss',
6 => 'editmyuserjs',
7 => 'viewmywatchlist',
8 => 'editmywatchlist',
9 => 'viewmyprivateinfo',
10 => 'editmyprivateinfo',
11 => 'editmyoptions',
12 => 'centralauth-merge',
13 => 'abusefilter-view',
14 => 'abusefilter-log',
15 => 'abusefilter-log-detail',
16 => 'vipsscaler-test',
17 => 'ep-bereviewer',
18 => 'flow-hide'
] |
Global groups that the user is in (global_user_groups ) | [] |
Whether or not a user is editing through the mobile interface (user_mobile ) | false |
Page ID (page_id ) | 1840351 |
Page namespace (page_namespace ) | 0 |
Page title without namespace (page_title ) | 'Bully algorithm' |
Full page title (page_prefixedtitle ) | 'Bully algorithm' |
Last ten users to contribute to the page (page_recent_contributors ) | [
0 => '37.11.126.80',
1 => 'Soulhack',
2 => '2620:0:1000:2101:6108:EA9E:8F25:86DD',
3 => '2A00:1E48:1000:29:95CA:1198:65FD:ABC9',
4 => 'Masiar88',
5 => '114.79.159.187',
6 => 'AnomieBOT',
7 => '2001:67C:10EC:2A49:8000:0:0:CB',
8 => 'Ryanseys',
9 => '14.139.56.8'
] |
Action (action ) | 'edit' |
Edit summary/reason (summary ) | '' |
Whether or not the edit is marked as minor (no longer in use) (minor_edit ) | false |
Old page wikitext, before the edit (old_wikitext ) | '{{Multiple issues|
{{Confusing|reason=is it unclear what is non-trivial about this algorithm|date=January 2015}}
{{Confusing|reason=is the communication model missing, is it all-to-all communication?|date=January 2015}}
{{Contradict|about=the assumption of being synchronous (having a rounds for all processes) and using timeouts|date=January 2015}}
{{Confusing|reason=is the section about "Election Type" a mix between an algorithm description and a comparison with another algorithm (which one even?) |date=January 2015}}
}}
The '''bully algorithm''' is a programming mechanism that applies a hierachy to nodes on a distributed system making them Coordinator or Slaves.
This is used as a method in [[distributed computing]] for dynamically electing a [[Distributed Computing#Coordinator Election|coordinator]] by process ID number. The process with the highest process ID number is selected as the [[Distributed Computing#Coordinator Election|coordinator]].
==Assumptions==
As this algorithm is part from a distributed system model wich tries to make it fail-free (like the solution shown in[1]), we need some assumptions as the whole point of the model is to make a distributed system, free from arbitrary failures (not from processing ones) while saving some computational costs.
* The system is synchronous and uses timeout for identifying process failure. (so you can have Delta and Cmax in order to calculate timeout as opposed to asynchronous systems where you can't calculate a timeout and then you can't distinguise between an omision fail on a process or a delay)
* Allows processes to crash during execution of algorithm. (To=2*Delta+Cmax so timer knows when omision fails happens)
* Message delivery between processes should be reliable.(Coordinator dilema,¿is it trustworthy; or suplantation,inyection,replication,DoS may happen?)
* Prior information about other process id's must be known. (This works as <ref> Leslie Lamport solution for Byzantine dilema </ref>, where coordinator needs a key and id for each process and where processors hierachy stipulates nodes as Generals, Commanders and Liutenants but without a key and with only coordinator and slaves)
==Component calls==
This are the Bully-algorithm components:
* Election Message: Sent to announce faster election
* Answer Message: Respond to the election message
* Coordinator message: Sent to announce the identity of the elected process
Compare with Ring algorithm:
* Assumes that system is synchronous
* Uses timeout to detect process failure/crash
* Each processor knows which processor has the higher identifier number and communicates with that<ref>Jean Dollimore, Tim Kindberg, George F. Coulouris, "Distributed systems : concepts and design (Third Edition)," in ''Distributed systems : concepts and design (Third Edition)''. Addison-Wesley, 2003.</ref>
==Algorithm structure==
When a process P determines that the current coordinator is down because of message timeouts or failure of the coordinator to initiate a handshake, it performs the following sequence of actions:
# P broadcasts an election message (inquiry) to all other processes with higher process IDs, expecting an "I am alive" response from them if they are alive.
# If P hears from no process with a higher process ID than it, it wins the election and broadcasts victory.
# If P hears from a process with a higher ID, P waits a certain amount of time for any process with a higher ID to broadcast itself as the leader. If it does not receive this message in time, it re-broadcasts the election message.
# If P gets an election message (inquiry) from another process with a lower ID it sends an "I am alive" message back and starts new elections.
Note that if P receives a victory message from a process with a lower ID number, it immediately initiates a new election. This is how the algorithm gets its name - a process with a higher ID number will bully a lower ID process out of the coordinator position as soon as it comes online.
== See also ==
*[[Distributed Computing#Coordinator election]]
*[[Chang and Roberts algorithm]]
==References==
{{reflist}}
* Witchel, Emmett (2005). [http://www.cs.utexas.edu/users/witchel/372/lectures/25.DistributedCoordination.ppt "Distributed Coordination"]. Retrieved May 4, 2005.
* Hector Garcia-Molina, Elections in a Distributed Computing System, IEEE Transactions on Computers, Vol. C-31, No. 1, January (1982) 48-59
* L. Lamport, R. Shostak, and M. Pease, [http://research.microsoft.com/en-us/um/people/lamport/pubs/byz.pdf "The Byzantine Generals Problem"] ACM Transactions on Programming Languages and Systems, Vol. 4, No. 3, July 1982.
[[Category:Distributed algorithms]]' |
New page wikitext, after the edit (new_wikitext ) | '{{Multiple issues|
{{Confusing|reason=is it unclear what is non-trivial about this algorithm|date=January 2015}}
{{Confusing|reason=is the communication model missing, is it all-to-all communication?|date=January 2015}}
{{Contradict|about=the assumption of being synchronous (having a rounds for all processes) and using timeouts|date=January 2015}}
{{Confusing|reason=is the section about "Election Type" a mix between an algorithm description and a comparison with another algorithm (which one even?) |date=January 2015}}
}}
The '''bully algorithm''' is a programming mechanism that applies a hierachy to nodes on a distributed system making them Coordinator or Slaves.
This is used as a method in [[distributed computing]] for dynamically electing a [[Distributed Computing#Coordinator Election|coordinator]] by process ID number. The process with the highest process ID number is selected as the [[Distributed Computing#Coordinator Election|coordinator]].
==Assumptions==
As this algorithm is part from a distributed system model wich tries to make it fail-free (like the solution shown in[1]), we need some assumptions as the whole point of the model is to make a distributed system, free from arbitrary failures (not from processing ones) while saving some computational costs.
* The system is synchronous and uses timeout for identifying process failure. (so you can have Delta and Cmax in order to calculate timeout as opposed to asynchronous systems where you can't calculate a timeout and then you can't distinguise between an omision fail on a process or a delay)
* Allows processes to crash during execution of algorithm. (To=2*Delta+Cmax so timer knows when omision fails happens)
* Message delivery between processes should be reliable.(Coordinator dilema,¿is it trustworthy; or suplantation,inyection,replication,DoS may happen?)
* Prior information about other process id's must be known. (This works as Leslie Lamport solution for Byzantine dilema, where coordinator needs a key and id for each process and where processors hierachy stipulates nodes as Generals, Commanders and Liutenants but without a key and with only coordinator and slaves)
==Component calls==
This are the Bully-algorithm components:
* Election Message: Sent to announce faster election
* Answer Message: Respond to the election message
* Coordinator message: Sent to announce the identity of the elected process
Compare with Ring algorithm:
* Assumes that system is synchronous
* Uses timeout to detect process failure/crash
* Each processor knows which processor has the higher identifier number and communicates with that<ref>Jean Dollimore, Tim Kindberg, George F. Coulouris, "Distributed systems : concepts and design (Third Edition)," in ''Distributed systems : concepts and design (Third Edition)''. Addison-Wesley, 2003.</ref>
==Algorithm structure==
When a process P determines that the current coordinator is down because of message timeouts or failure of the coordinator to initiate a handshake, it performs the following sequence of actions:
# P broadcasts an election message (inquiry) to all other processes with higher process IDs, expecting an "I am alive" response from them if they are alive.
# If P hears from no process with a higher process ID than it, it wins the election and broadcasts victory.
# If P hears from a process with a higher ID, P waits a certain amount of time for any process with a higher ID to broadcast itself as the leader. If it does not receive this message in time, it re-broadcasts the election message.
# If P gets an election message (inquiry) from another process with a lower ID it sends an "I am alive" message back and starts new elections.
Note that if P receives a victory message from a process with a lower ID number, it immediately initiates a new election. This is how the algorithm gets its name - a process with a higher ID number will bully a lower ID process out of the coordinator position as soon as it comes online.
== See also ==
*[[Distributed Computing#Coordinator election]]
*[[Chang and Roberts algorithm]]
==References==
{{reflist}}
* Witchel, Emmett (2005). [http://www.cs.utexas.edu/users/witchel/372/lectures/25.DistributedCoordination.ppt "Distributed Coordination"]. Retrieved May 4, 2005.
* Hector Garcia-Molina, Elections in a Distributed Computing System, IEEE Transactions on Computers, Vol. C-31, No. 1, January (1982) 48-59
* L. Lamport, R. Shostak, and M. Pease, [http://research.microsoft.com/en-us/um/people/lamport/pubs/byz.pdf "The Byzantine Generals Problem"] ACM Transactions on Programming Languages and Systems, Vol. 4, No. 3, July 1982.
[[Category:Distributed algorithms]]' |
Unified diff of changes made by edit (edit_diff ) | '@@ -16,5 +16,5 @@
* Allows processes to crash during execution of algorithm. (To=2*Delta+Cmax so timer knows when omision fails happens)
* Message delivery between processes should be reliable.(Coordinator dilema,¿is it trustworthy; or suplantation,inyection,replication,DoS may happen?)
-* Prior information about other process id's must be known. (This works as <ref> Leslie Lamport solution for Byzantine dilema </ref>, where coordinator needs a key and id for each process and where processors hierachy stipulates nodes as Generals, Commanders and Liutenants but without a key and with only coordinator and slaves)
+* Prior information about other process id's must be known. (This works as Leslie Lamport solution for Byzantine dilema, where coordinator needs a key and id for each process and where processors hierachy stipulates nodes as Generals, Commanders and Liutenants but without a key and with only coordinator and slaves)
==Component calls==
' |
New page size (new_size ) | 4681 |
Old page size (old_size ) | 4694 |
Size change in edit (edit_delta ) | -13 |
Lines added in edit (added_lines ) | [
0 => '* Prior information about other process id's must be known. (This works as Leslie Lamport solution for Byzantine dilema, where coordinator needs a key and id for each process and where processors hierachy stipulates nodes as Generals, Commanders and Liutenants but without a key and with only coordinator and slaves)'
] |
Lines removed in edit (removed_lines ) | [
0 => '* Prior information about other process id's must be known. (This works as <ref> Leslie Lamport solution for Byzantine dilema </ref>, where coordinator needs a key and id for each process and where processors hierachy stipulates nodes as Generals, Commanders and Liutenants but without a key and with only coordinator and slaves)'
] |
Whether or not the change was made through a Tor exit node (tor_exit_node ) | 0 |
Unix timestamp of change (timestamp ) | 1435697606 |