tiian / flom

FLoM: Easy to Use Distributed Lock Manager; a tool to synchronize the execution of commands, shell scripts and custom programs.
http://www.tiian.org/flom/
GNU General Public License v2.0
27 stars 6 forks source link

| | | | \/ | FLoM | | | | / | |\/| | Free Lock Manager | _| | || () | | | | a free and open source lock manager || |____\/|| ||

FLoM (Free Lock Manager) is an open source and free lock manager designed to serialize and synchronize shell command execution and custom programs developed in C, C++, Java, Perl, PHP, Python. Official web site is http://www.tiian.org/flom/ Both GitHub https://github.com/tiian/flom and SourceForge https://sourceforge.net/projects/flom/ host FLoM source code. Basic usage examples are in doc/examples directory (default installation path is /usr/local/share/doc/flom/examples/) API documentation is distributed in directory doc/html/ (default installation path is /usr/local/share/doc/flom/html/) and on the web at http://www.tiian.org/flom/API/C/globals_func.html FLoM is implemented using state of the art reactive programming: independent non blocking threads reach unparalleled scalability and C language source code guarantee the best performance. The usage of mutexes is reduced to trifling functions: FLoM can be considered a "lock free lock manager".

A list of implemented use cases is listed at this URL: http://www.tiian.org/flom/FLoM_by_examples/FLoM_by_examples.html This is a brief list of the available features:

FLoM central documentation site is hosted by SourceForge Wiki: http://www.tiian.org/flom/

Download the tarball from SourceForge: https://sourceforge.net/projects/flom/ and install FLoM using standard GNU build chain: tar xvzf flom-X.Y.Z.tar.gz cd flom-X.Y.Z ./configure make sudo make install

Python 3 support: if you want to compile the API for Python 3, use: PYTHON_VERSION=3 ./configure make sudo make install

If you are using a Red Hat derivative you will probably use su make install exit instead of "sudo make install".

Take a look to file INSTALL for more details.

Use man flom to read man page and pick up Internet relevant URLs for FLOM project.

Use make check to perform package automatic tests. NOTE: do NOT run tests on a system that's using flom because some tests need to kill all FLoM running instances and this is not acceptable if you are playing production workloads. DO USE A TEST SYSTEM! NOTE: tests needs the system is NOT overloaded because they stick on timing and timing breaks if the system is overloaded. NOTE: FLoM must be installed with "sudo make install" before tests can proceed (this is a library path issue...)

NOTE: automatic tests require at least one properly configured network interface; if you need to build FLoM in entirely offline systems, use ./configure --disable-testcases to disable all the test cases and to remove the need for a network interface at build time. If you switch from "./configure" to "./configure --disable-testcases" or vice versa, you MUST clean th environment with "make clean" to force a new generation of test files.

NOTE: if you are not interested in C++ API library support, specify "--disable-cpp" at configure time; example: ./configure --disable-cpp NOTE: if you are not interested in Java API library support, specify "--disable-java" at configure time; example: ./configure --disable-java NOTE: if you are not interested in Perl API library support, specify "--disable-perl" at configure time; example: ./configure --disable-php NOTE: if you are not interested in PHP API library support, specify "--disable-php" at configure time; example: ./configure --disable-php NOTE: if you are not interested in Python API library support, specify "--disable-python" at configure time; example: ./configure --disable-python

One of the most frequent issues related to IPv4 multicast and IPv6 features of FLoM depends on Linux firewalling; for the sake of testing, you can try to temporarely disable the firewall in a test environment and to restore it later on, with accurate configuration as required by your security needs. A couple of procedures to disable it, depending on the operating system: systemctl stop firewalld systemctl disable firewalld or alternatively service ipchains stop service iptables stop chkconfig ipchains off chkconfig iptables off After you probed the environment, don't forget to secure it as required by your security policies.

Issues related to FUSE Virtual File System activated with command option "-m" or "--mount-point-vfs": FLoM daemon umount by itself the FUSE VFS, but under some conditions the daemon is not able to umount it, for example if the FUSE filesystem is used by some users. In that case the daemon will generate a syslog message FLM024W to warn about the need of manual unmount with one of the following commands: fusermount -u sudo umount -l Note: if you are using FUSE3, there's the chance you have to use the command "fusermount3" instead of "fusermount".

If you need some help (usage tricks, hints, etc...) please post a message in the forum: http://sourceforge.net/p/flom/discussion/ If you think you have discovered a bug, please open an issue here: https://github.com/tiian/flom/issues

Dependencies report: O.S. Feature Packages Ubuntu Basic make gcc libglib2.0-dev dbus libdbus-1-dev libssl-dev pkg-config automake Ubuntu 14.04 FUSE fuse libfuse-dev Ubuntu 16.04 FUSE fuse libfuse-dev Ubuntu 18.04 FUSE fuse libfuse-dev Ubuntu 20.04 FUSE fuse libfuse-dev Ubuntu 22.04 FUSE3 fuse3 libfuse3-dev <-- use either FUSE or FUSE3 Ubuntu C++ API g++ Ubuntu Perl API swig libperl-dev Ubuntu PHP API swig php5-cli php5-dev Ubuntu 16.04 PHP API swig php-cli php-dev* Ubuntu 18.04 PHP API swig php-cli php-dev Ubuntu 20.04 PHP API swig php-cli php-dev Ubuntu 22.04 PHP API swig php-cli php-dev Ubuntu Python API swig python-dev Ubuntu 22.04 Python API swig python3-dev Ubuntu 12.04 Java API default-jdk (openjdk 6) Ubuntu 14.04 Java API default-jdk (openjdk 7) Ubuntu 16.04 Java API default-jdk (openjdk 8) Ubuntu 18.04 Java API default-jdk (openjdk 10) Ubuntu 20.04 Java API default-jdk (openjdk 11) Ubuntu 22.04 Java API default-jdk (openjdk 11)

CentOS Basic gcc glib2-devel dbus dbus-devel autoconf openssl-devel make CentOS 7.x FUSE fuse fuse-devel CentOS 8.x FUSE3 fuse3 fuse3-devel CentOS C++ API gcc-c++ CentOS Perl API swig perl-devel CentOS PHP API swig php-devel CentOS 6.x Python API swig python-devel CentOS 7.x Python 2 API swig python-devel CentOS 7.x Python 3 API swig python3-devel CentOS 8.x Python 3 API swig python3-devel CentOS 6.x Java API java-1.6.0-openjdk or java-1.7.0-openjdk CentOS 7.x Java API java-1.8.0-openjdk-devel or java-11-openjdk-devel CentOS 8.x Java API java-11-openjdk

Rocky 9 Basic gcc glib2-devel dbus dbus-devel autoconf openssl-devel make dbus-tools Rocky 9 FUSE3 fuse3 fuse3-devel Rocky 9 C++ API gcc-c++ Rocky 9 Perl API swig perl-devel Rocky 9 PHP API swig php-devel Rocky 9 Python 3 API swig python3-devel Rocky 9 Java API java-21-openjdk

Debian 12 Basic make gcc libglib2.0-dev dbus libdbus-1-dev libssl-dev pkg-config automake Debian 12 FUSE3 fuse3 libfuse3-dev <-- use either FUSE or FUSE3 Debian 12 c++ API g++ Debian 12 Perl API swig libperl-dev Debian 12 PHP API swig php-cli php-dev Debian 12 Python API swig python3-dev Debian 12 Java API default-jdk (openjdk 11)

Enjoy FLoM! Ch.F.