openlvc / portico

Portico is an open source, cross-platform, fully supported HLA RTI implementation. Designed with modularity and flexibility in mind, Portico is a production-grade RTI for the Simulation and Training Community, so come say hi!
http://www.porticoproject.org
151 stars 81 forks source link

Update JGroups to current version (v4.x) #200

Closed yogeshVU closed 6 years ago

yogeshVU commented 7 years ago

Since the jgroups dependency is still using 3.2-beta, which is 4 year old , can we upgrade the dependency to latest version 4X.

timpokorny commented 7 years ago

G'day @yogeshVU,

We can certainly look at it, but I'll forewarn - the last update was not trivial and took a considerable amount of effort due to the way that some things had changed. There is a little bit of "if it ain't broke" in the thinking there after being burnt last time, but you never know, karma might mean it is smoother this time.

yogeshVU commented 7 years ago

Thanks @timpokorny , I think even the other dependency packages like the log4j, will be good

timpokorny commented 7 years ago

Concur log4j in sore need. Been putting that one off as well as the 1.x -> 2.x jump was also not friendly when we did it for some other projects.

/me shakes fist!

Nothing is easy! I feel like an old man now.

timpokorny commented 6 years ago

Currently working through this.

Log4j >> Log4j 2 Not simple. Lots of structure updates to the way logging is defined and loaded. Have put it aside for the moment. It won't play nicely with the one-jar approach for Portico.

JGroups 4.0.8 Update Completed initial port and now getting it to work. Noting down things I need to loop back on:

timpokorny commented 6 years ago

Restarted this with a fresh environment. The API changes between JGroups versions combined with the Logj42 updates (and its non-trivial programmatic configuration) makes this far more difficult than it should be. About to open PR.

timpokorny commented 6 years ago

A quick note on the JGroups version.

The new library is based on a fork from the JGroups Github repo. Fork can be found below. There are no changes to the code here, the only reason for the fork is to add additional elements that make it easier to edit, play and debug with JGroups and Portico together in Eclipse.

As part of this work I spent a bit of time delving into JGroups code trying to figure out why things were not working. To do that I just temporarily removed the JGroups Eclipse jar file dependency in Portico and added a project dependency. I then created a small JGroups eclipse project in the forked repo that just had the bits that were minimally required build inspect and run (and turned off a bunch of warning that were triggering my OCD). Being able to debug Portico code and step into/change JGroups code as an exploratory activity was very helpful.

https://github.com/timpokorny/JGroups