cameo issueshttps://code.ill.fr/cameo/cameo/-/issues2020-10-01T14:54:35+02:00https://code.ill.fr/cameo/cameo/-/issues/51API improvements2020-10-01T14:54:35+02:00yannick legocAPI improvementsFollowing suggestions:
- Add getState in Instance.
- Add asynchronous callbacks for the states (C++ Instance must receive the states in a thread)Following suggestions:
- Add getState in Instance.
- Add asynchronous callbacks for the states (C++ Instance must receive the states in a thread)https://code.ill.fr/cameo/cameo/-/issues/41Check waitForStop() execution2020-10-01T14:45:12+02:00yannick legocCheck waitForStop() executionWhat happens if waitForStop occurs between hasToBeKilled and other subsequent calls?What happens if waitForStop occurs between hasToBeKilled and other subsequent calls?Mischttps://code.ill.fr/cameo/cameo/-/issues/19Refactor use of ZeroMQ2020-10-01T14:17:32+02:00yannick legocRefactor use of ZeroMQGather code: Socket calls.
Manage exceptions from ZeroMQ (ex: invalid host generates an exception).Gather code: Socket calls.
Manage exceptions from ZeroMQ (ex: invalid host generates an exception).https://code.ill.fr/cameo/cameo/-/issues/16Deployment of a new version of a managed application2020-10-01T14:14:32+02:00yannick legocDeployment of a new version of a managed application* Solution
* new set of states for an Application that are independent from the current states: UP_TO_DATE, WAITING_FOR_UPDATE (version is waiting to be installed), UPDATING, ERROR (blocking the application?). We call it the update stat...* Solution
* new set of states for an Application that are independent from the current states: UP_TO_DATE, WAITING_FOR_UPDATE (version is waiting to be installed), UPDATING, ERROR (blocking the application?). We call it the update state.
* push a new version on a Cameo server. It is a request when processed:
* application becomes WAITING_FOR_UPDATE immediately
* the new version data is saved locally and replaces the previous new version if it is not installed yet
* the server installs it when the application is stopped (option: stop the application immediately)
* the application has the state UPDATING (new state in the current list)
* the config file is modified after each installation (to memorize the version number)
* the server shall not be brutally stopped
* enable to stop nicely the server
* default installation: copy file (jar) to install_directory, untar a tar to install_directory
* or an installation script
* command line: cmo app1 update app1.jar 1.2.3
* monitoring notifications:
* the Cameo server publishes a new status when the version is installed
* status VERSION value
* version in the application info
* class This can access versionhttps://code.ill.fr/cameo/cameo/-/issues/15Communication classes refactoring2020-10-01T14:13:30+02:00yannick legocCommunication classes refactoringPublisher and Subscribers can be implemented outside the static Application class (com package).
We have to extract the services from Application (and Impl) required to implement them as external (the idea is to have an example of how to...Publisher and Subscribers can be implemented outside the static Application class (com package).
We have to extract the services from Application (and Impl) required to implement them as external (the idea is to have an example of how to create a communication service).
So that the communication becomes extensible and other communication patterns can be implemented.
This requires to have access to the map of custom data in server.https://code.ill.fr/cameo/cameo/-/issues/13Fixed publisher port2020-10-01T14:11:08+02:00yannick legocFixed publisher portIt can be interesting to fix the socket port for a publisher so that subscribers are still valid after the termination of the publisher e.g. after unintended crash.
Is it possible? How to ensure the port won't be used by a tier program?
...It can be interesting to fix the socket port for a publisher so that subscribers are still valid after the termination of the publisher e.g. after unintended crash.
Is it possible? How to ensure the port won't be used by a tier program?
We can add a flag:
```xml
<application ...>
<publisher name=""/>
```
Reserves fixed ports in case the application is single instance.https://code.ill.fr/cameo/cameo/-/issues/5Add/remove applications to the server with the client API2020-10-01T13:19:06+02:00yannick legocAdd/remove applications to the server with the client APIAdd functions/methods to the client API to update the server configuration.Add functions/methods to the client API to update the server configuration.https://code.ill.fr/cameo/cameo/-/issues/63Thread-safety to be checked2020-02-14T08:27:26+01:00yannick legocThread-safety to be checkedCheck the classes: Server, etc. See if they can be thread-safe: unique_ptr is used to limit the risk of using in parallel.Check the classes: Server, etc. See if they can be thread-safe: unique_ptr is used to limit the risk of using in parallel.https://code.ill.fr/cameo/cameo/-/issues/50Review the unique_ptr usage in C++ API2020-01-22T10:24:56+01:00yannick legocReview the unique_ptr usage in C++ APIHow objects are moved.How objects are moved.https://code.ill.fr/cameo/cameo/-/issues/12Array transfer optimization2018-01-09T10:24:35+01:00yannick legocArray transfer optimizationOptimize by providing array optimization implementation by Xavier Pacalet.Optimize by providing array optimization implementation by Xavier Pacalet.https://code.ill.fr/cameo/cameo/-/issues/9Create a peer to peer network of Cameo servers2017-04-10T14:45:40+02:00yannick legocCreate a peer to peer network of Cameo serversWith the existence of Cameo servers running on different computers, it becomes easy to create a peer to peer network of Cameo servers.
The first thing is to create the links between Cameo servers. It will be done in the configuration ...With the existence of Cameo servers running on different computers, it becomes easy to create a peer to peer network of Cameo servers.
The first thing is to create the links between Cameo servers. It will be done in the configuration file or programmatically for a more dynamic way.
The link is twoway so that when a server attaches another one, both become available for the other one.
A simple API update can provides interesting features:
+ Server.getLinkedServerList(): ServerList
ServerList:
+ start(...): same interface than Server (add a special interface for common Server and ServerList?)
+ connect(...): same interface than Server
+ ...
+ iterator(): ServersIterator.
The ServersIterator class provides a dynamic iteration from the closest to the furthest (for node distance).
Load balancing is not implemented in the API: a simple start can be used: if it fails then try another server. The failure can happen if the application can only run once and is already running. Generalize the attribute multiple to have a maximum fixed number of instances?
Provide a load factor or simply let the client code do it?
Features must be simple. Complexity shoud be implemented in the client code.