Skip to content
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

Dev 0.17 #115

Merged
merged 78 commits into from
Aug 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
7e3a250
remove tests on non thread-safe events
julien6387 Mar 16, 2023
316b04a
highlight the process line on hover
julien6387 Mar 16, 2023
0a96171
fix typo for zmq install option
julien6387 Mar 27, 2023
6fe3ea8
intermediate push for multicast support (not stable)
julien6387 Mar 31, 2023
11e54e3
multicast support (not stable)
julien6387 May 29, 2023
6f410a5
multicast support (not stable)
julien6387 May 29, 2023
ba3b572
Closes #112
julien6387 Jun 4, 2023
fa70b6b
fix invalid syntax in logs for python 3.6 and 3.7
julien6387 Jun 4, 2023
fcc217d
fix websockets import when testing with python 3.6
julien6387 Jun 4, 2023
3bc4495
fix websockets import when testing with python 3.6
julien6387 Jun 4, 2023
73c4c0f
fix websockets import when testing with python 3.6
julien6387 Jun 4, 2023
cc5a737
fix restriction on flask
julien6387 Jun 4, 2023
c41226c
fix restriction on flask
julien6387 Jun 4, 2023
355c739
use SupvisorsPubSub as a fallback com if no multicast configuration a…
julien6387 Jun 5, 2023
2b0158f
remove figures when matplotlib is not installed
julien6387 Jul 2, 2023
4ab7df5
add multicast configuration
julien6387 Jul 2, 2023
b899c3b
fix test config
julien6387 Jul 9, 2023
e309ba3
fix exception when periodic_check is performed in a Slave FSM that ha…
julien6387 Jul 9, 2023
359c1f5
handle OSError exceptions due to many open files in /proc/stat (reaso…
julien6387 Jul 9, 2023
02c6c43
make Supervisor logger thread-safe
julien6387 Jul 22, 2023
f7c39ea
improve robustness against network failures
julien6387 Jul 22, 2023
75b2ad6
improve robustness against network failures
julien6387 Jul 22, 2023
c96ddca
update multicast group settings
julien6387 Jul 22, 2023
3f71bad
update multicast group settings
julien6387 Jul 22, 2023
ea1ee68
fix flask-restx dependency iaw python version
julien6387 Jul 22, 2023
7687cb8
update multicast group settings
julien6387 Jul 22, 2023
6a25483
consider host aliases when searching for the local supvisors instance
julien6387 Jul 23, 2023
7d1df46
do not capture XmlRpcException in JAVA client
julien6387 Jul 23, 2023
2643acc
add discovery_mode attribute to get_state and get_instance_info XML-RPCs
julien6387 Jul 23, 2023
c5d5e76
fix conversion not used in JAVA client / SupvisorsProcessStatistics
julien6387 Jul 23, 2023
efcaea1
add discovery_mode attribute to get_state and get_instance_info XML-RPCs
julien6387 Jul 23, 2023
bad3041
adjudicate on the need to manage hearbeat and disconnection in discov…
julien6387 Jul 23, 2023
e13e072
add multicast_interface option
julien6387 Jul 25, 2023
8435d73
add new option '@' in addition to '#' and make them compatible with t…
julien6387 Jul 27, 2023
9c4768f
Monkeypatch fix of Supervisor Issue #1596
julien6387 Jul 28, 2023
66fe1ef
add multicast configuration to use case scenario 1
julien6387 Jul 28, 2023
68ca3d7
fix HomogeneousGroup.add_process for at_identifiers
julien6387 Jul 28, 2023
3333bc2
add @ support for identifiers rules
julien6387 Jul 30, 2023
0d83976
refactor InternalPublisher
julien6387 Jul 30, 2023
c2d5557
refactor InternalPublisher
julien6387 Jul 30, 2023
9c74e62
fix sphinx doc
julien6387 Jul 30, 2023
01ca678
unblock Starter if unexpected RUNNING process when checking
julien6387 Aug 2, 2023
1709a79
add CHECKED state to SupvisorsInstanceStates
julien6387 Aug 2, 2023
7dba84e
add CHECKED state to SupvisorsInstanceStates
julien6387 Aug 2, 2023
15cd307
remove useless part about callable result not returned by restart and…
julien6387 Aug 3, 2023
4f0ed37
add changeLogLevel RPC
julien6387 Aug 6, 2023
01563d0
add end of synchronization options
julien6387 Aug 6, 2023
14d6c21
fix some code quality issues
julien6387 Aug 6, 2023
53e5b92
rewrite sync part in doc
julien6387 Aug 6, 2023
b9f788d
add end of synchronization options
julien6387 Aug 7, 2023
21de75e
add master_identifier to supervisorctl sstate and instance_status
julien6387 Aug 7, 2023
278fdb3
add end of synchronization options
julien6387 Aug 7, 2023
28ae1c5
sort Supvisors instances in Web UI when discovery mode is enabled
julien6387 Aug 7, 2023
41cd9ba
add end of synchronization options
julien6387 Aug 7, 2023
d1eca52
add end of synchronization options
julien6387 Aug 7, 2023
5698a90
add end of synchronization options
julien6387 Aug 7, 2023
d483287
apply events locally before publication
julien6387 Aug 9, 2023
be1c6a0
refactoring SupvisorsPubSub
julien6387 Aug 9, 2023
f73f125
simplify FSM
julien6387 Aug 9, 2023
ca2eb7a
update forced state consideration
julien6387 Aug 11, 2023
3fceb87
internal com refactoring
julien6387 Aug 13, 2023
a2f8c99
internal com refactoring
julien6387 Aug 13, 2023
1880dfe
finalize discovery mode
julien6387 Aug 14, 2023
24b9871
finalize discovery mode
julien6387 Aug 14, 2023
8c36432
get rid of asyncio warnings in unit tests
julien6387 Aug 14, 2023
fc84fb6
fix regression in forced state consideration
julien6387 Aug 14, 2023
fa66352
non-regression updates
julien6387 Aug 14, 2023
1e252ca
uncaught exception in Commander next
julien6387 Aug 14, 2023
cdc2e08
add stereotypes in support of the discovery mode
julien6387 Aug 15, 2023
0d75377
add stereotypes in support of the discovery mode
julien6387 Aug 15, 2023
738e583
add stereotypes in support of the discovery mode
julien6387 Aug 15, 2023
c04c513
Merge remote-tracking branch 'origin/master' into dev-0.17
julien6387 Aug 16, 2023
eec9789
add stereotypes in support of the discovery mode
julien6387 Aug 16, 2023
f8fc8ad
fix regression in compiling statistics
julien6387 Aug 16, 2023
e89a1df
update doc before releasing version 0.17
julien6387 Aug 16, 2023
d9f3825
fix LoggerLevels in JAVA client
julien6387 Aug 16, 2023
cf9f6ef
fix LoggerLevels in JAVA client
julien6387 Aug 16, 2023
c4379cc
update release date of Supvisors 0.17
julien6387 Aug 16, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
79 changes: 76 additions & 3 deletions CHANGES.md
@@ -1,5 +1,78 @@
# Change Log

## 0.17 (2023-08-17)

* Fix [Issue #112](https://github.com/julien6387/supvisors/issues/112).
Write the disabilities file even if no call to `disable` and `enable` XML-RPCs have been done.
Try to create the folder at startup if it does not exist.

* Fix a case where the `Starter` would block if the process reaches the expected state without reception
of the corresponding event.

* Fix typo for `zmq` requirement when installing **Supvisors** from `pypi`.

* Fix `flask-restx` dependency in setup according to Python version.

* Fix uncaught exception the request to start a process is rejected due to a lack of resources.
The exception was dependent from the Python version (absent in 3.6 but raised in 3.9).

* Monkeypatch fix of [Supervisor Issue #1596](https://github.com/Supervisor/supervisor/issues/1596).
Shutdown of the asyncore socket before it is closed.

* Improve robustness against network failures. All Supervisor events are applied to the local **Supvisors** instance
before they are published, so that it remains functional despite a network failure.
The internal TCP sockets are rebound when a network interface becomes up (requires `psutil`).

* Provide a discovery mode where the **Supvisors** instances are added on-the-fly without declaring them in
the `supvisors_list` option. The function relies on a Multicast Group definition (options `multicast_group`,
`multicast_interface` and `multicast_ttl` added to that purpose).
The attribute `discovery_mode` is added to the `get_state` and `get_instance_info` XML-RPCs.

* Add a new option `stereotypes` to support the discovery mode. The `identifiers` of the Application and Program rules
can now reference a **Supvisors** stereotype in addition to identifiers and aliases.
By extension, it is made available to the non-discovery mode.

* Add a new option `syncho_options` to enable the user to choose the conditions putting an end to the **Supvisors**
synchronization phase.
More particularly when using the new `USER` condition, the **Supvisors** Web UI provides a means to end the
`INITIALIZATION` state, with optional *Master* selection. The command is also available as an XML-RPC `end_synchro`
and has been added to `supervisorctl`.

* The new item `@` in the `identifiers` of the Program rules takes the behavior of the item `#` as it was
before **Supvisors** version 0.13, i.e. the assignment is strictly limited by the length of the `identifiers` list,
without roll-over.
NOTE: This is not available for Application rules.

* Use host aliases when looking for the local **Supvisors** instance.

* Use IP address rather than host identification when dealing with `SINGLE_NODE` starting strategy.

* To prevent the situation that led the `Starter` to block, a new state `CHECKED` is added to `SupvisorsInstanceStates`,
which is actually a pre-`RUNNING` state.
Such a **Supvisors** instance is considered active and is updated with received events but cannot be part of any
starting sequence until all starting jobs in progress are completed.

* Limit the consideration of the process forced state to display in the Application page of the **Supvisors** Web UI,
so that it does not interfere with the real process state.

* Add `master_identifier` to the output of the XML-RPCs `get_supvisors_state` and `get_instances_info`.
The `supervisorctl` commands `sstate` and `instance_status` have also been updated.

* Monkeypatch **Supervisor** on-the-fly so that its logger is thread-safe and add log traces in **Supvisors** threads.

* Simplify the **Supvisors** state machine and replace the states `RESTART` and `SHUTDOWN` by a single state `FINAL`.

* Highlight the process line hovered by the cursor in the **Supvisors** Web UI.

* Remove the figures from the **Supvisors** Web UI when `matplotlib` is not installed.

* Add RPC `changeLogLevel` to the JAVA client.

* Do not catch XmlRpc exceptions in the JAVA client.

* Refactoring of the **Supvisors** internal communications.


## 0.16 (2023-03-12)

* Add `websockets` as an option to the **Supvisors** event listener (Python 3.7+ only).
Expand All @@ -22,11 +95,11 @@

* Fix Solaris mode not taken into account for the process mean CPU value in the **Supvisors** Web UI.

* Fix Flask `start_args` to pass the extra arguments in the URL attributes rather than in the route.

* Only one **Supvisors** instance is running when both `unix_http_server` and `inet_http_server` sections are defined
in the supervisor configuration file.

* Fix Flask `start_args` to pass the extra arguments in the URL attributes rather than in the route.

* The local **Supvisors** instance is identified as the item having the same fully qualified domain name
(as returned by `socket.gethostaddr` and `socket.getfqdn`) among the items of the `supvisors_list` option.

Expand Down Expand Up @@ -128,7 +201,7 @@
points out the **Supvisors** instances where the modes are activated, and the applications involved in its own
`Starter` or `Stopper`.

* When using `#` in the `identifiers` of the Application or Program rules and with a number of candidate
* When using the item `#` in the `identifiers` of the Application or Program rules and with a number of candidate
applications or processes greater than the candidate `identifiers`, the assignment is performed by rolling over
the `identifiers` list.

Expand Down
18 changes: 9 additions & 9 deletions README.md
Expand Up @@ -65,15 +65,15 @@ but is not maintained anymore.

**Supvisors** has dependencies on:

| Package | Release | Optional |
|---------------------------------------------------|---------|----------|
| [Supervisor](http://supervisord.org) | 4.2.4 | |
| [psutil](https://pypi.python.org/pypi/psutil) | 5.7.3 | X |
| [matplotlib](http://matplotlib.org) | 3.3.3 | X |
| [lxml](http://lxml.de) | 4.6.2 | X |
| [Flask-RESTX](https://flask-restx.readthedocs.io) | 0.5.1 | X |
| [PyZMQ](http://pyzmq.readthedocs.io) | 20.0.0 | X |
| [websockets](https://websockets.readthedocs.io) | 10.4 | X |
| Package | Optional | Minimal release |
|---------------------------------------------------|----------|-----------------------------|
| [Supervisor](http://supervisord.org) | | 4.2.4 |
| [psutil](https://pypi.python.org/pypi/psutil) | X | 5.7.3 |
| [matplotlib](http://matplotlib.org) | X | 3.3.3 |
| [lxml](http://lxml.de) | X | 4.6.2 |
| [Flask-RESTX](https://flask-restx.readthedocs.io) | X | 0.5.1 (py36), 1.1.0 (py37+) |
| [PyZMQ](http://pyzmq.readthedocs.io) | X | 20.0.0 |
| [websockets](https://websockets.readthedocs.io) | X | 10.2 |

Please note that some of these dependencies may have their own dependencies.

Expand Down
7 changes: 7 additions & 0 deletions docs/common.rst
Expand Up @@ -26,6 +26,13 @@
.. |autorefresh| image:: images/autorefresh_button.png
:alt: Refresh button

.. |star| image:: images/star_button.png
:alt: Star button

.. |br| raw:: html

<br/>

.. _Supervisor: http://supervisord.org
.. _psutil: https://pypi.python.org/pypi/psutil
.. _matplotlib: https://matplotlib.org
Expand Down
2 changes: 1 addition & 1 deletion docs/conf.py
Expand Up @@ -60,7 +60,7 @@

# -- Options for HTML output ----------------------------------------------

#html_theme = 'sphinx_rtd_theme'
# html_theme = 'sphinx_rtd_theme'
html_theme = 'renku'

html_static_path = []