File: FILE_PING.txt

package info (click to toggle)
libjgroups-java 2.12.2.Final-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,712 kB
  • sloc: java: 109,098; xml: 9,423; sh: 149; makefile: 2
file content (41 lines) | stat: -rw-r--r-- 1,553 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41


Design of FILE_PING
===================

Author: Bela Ban


Goal
----

FILE_PING is a shared storage based discovery; during the discovery process,
new nodes read the addresses of existing members from a shared store.

Members write their addresses to the store and remove them on leaving the cluster.


Design
------

FILE_PING takes as property a 'location' which is the location of a directory in a shared store, e.g. /share/jgroups.
Each cluster X creates a subdirectory X, where all files for cluster X reside.

A member writes its local address (plus physical address mappings) to a file which is named after the local address.
Example: /share/jgroups/DemoCluster/linux-433234.dat. (Maybe we should use the UUID !)

A new member reads all files in DemoCluster and sends the discovery request to all addresses resulting from this.

When a member leaves, it removes its file from DemoCluster. We could use File.removeOnExit() to do this automatically.
(However, kill -9 doesn't remove the file).

We still need to periodically clean up members who crashed (kill -9). This could be done via an age out cache.


Notes
-----

In 2.6.x, we don't have logical addresses, therefore we don't need the discovery messages to ship logical-physical
address mappings around. As an optimization, we could read all files and see if we have an element tagged as
coordinator. If so, we could directly send a JOIN request to the coord, rather than sending discovery messages.
If there is no coordinator, we go through the regular discovery message sending process.