These are chat archives for HotswapProjects/user

21st
Apr 2016
the following table summarizes what the fastswap can do:
I checked and they don't seem to have an alternate jvm.. pure java?
Vladimir Dvorak
@skybber
Apr 21 2016 08:47
It looks good, but it has more limitation than DCEVM:
https://docs.oracle.com/middleware/1221/wls/DEPGD/deployunits.htm#DEPGD162
BTW enum redefinition is very easy to in DCEVM, just add ~5 lines of code. But Ivan did not like the idea to recreate all enum since old instances could exists.
Vladimir Dvorak
@skybber
Apr 21 2016 08:53
Another issue is with new static member definition. I think that it could be done by <clinit> instrumentation. May be HA could create new method __clinit that can be called from DCEVM or HA after hotswap.
alpapad
@alpapad
Apr 21 2016 10:37
I have been working on adding versioning support to plugins. Code is committed in this branch: https://github.com/alpapad/HotswapAgent/tree/versioning/
The configuration can be seen in these classes:
and
It is working in my testbed. There is code added in core, some parts come directly from maven sources (parsing and matching versions and ranges) some come from spring (searching for files in the classpath, Jboss VFS etc) and there is also the glue code to make this work.
The whole thing works by adding annotations at the plugin level (and optionally) at the method level.
The code gets triggered when a static plugin method is called.
Vladimir Dvorak
@skybber
Apr 21 2016 10:41
I consider it as important feature in the core to resolve the version since. It will be unmaitanable to resolve dependencies on multiple framework versions of framework in the future.
It looks great
alpapad
@alpapad
Apr 21 2016 10:43
Ok... Please review, the branch needs some work before it can be merged to HS/master . I was hopping for something simpler, less code but it seems it needs all this..
I will try and clean it up as a PR for master
Vladimir Dvorak
@skybber
Apr 21 2016 10:45
OK, I'll check it. I would like to merge another code from your branch as I wrote you in the past - RestEasy, NioWater in the core ...
alpapad
@alpapad
Apr 21 2016 10:45
resteasy is there allready
nio will be next
and there is also a plugin for jboss-el3 which is needed for newer versions of jboss-as
Vladimir Dvorak
@skybber
Apr 21 2016 10:46
May be we can merge your jboss EL into ElResolverPlugin as well.
:)
alpapad
@alpapad
Apr 21 2016 10:46
The "versions" branch has this configured with versions
so, it is ready...
Vladimir Dvorak
@skybber
Apr 21 2016 10:46
OK
I see
alpapad
@alpapad
Apr 21 2016 10:47
My idea is, keep old working code as is and add methods with versions.. so we don't have to check again what was already working...
try to minimize maintenance...
Vladimir Dvorak
@skybber
Apr 21 2016 10:48
Have you some performance problems with startup time with HA on Wildfly?
alpapad
@alpapad
Apr 21 2016 10:48
no, not really...
our projects are HUGE so deployment is slow...
runtime is ok nothing noticable
Vladimir Dvorak
@skybber
Apr 21 2016 10:49
I've seen that startup time on wildfly was 2x longer with HA in the past.
alpapad
@alpapad
Apr 21 2016 10:49
well.. no, I haven't noticed such a change, even with HA is debug mode...
we are using here xeons for development
and lots of memory... so...
Vladimir Dvorak
@skybber
Apr 21 2016 10:50
We had some idea with Jiri Bubnik how improve startup performance with HA, but it looks he has no free time for HA now
alpapad
@alpapad
Apr 21 2016 10:51
well for me, the important thing is for it to work and be stable!
in our projects startup (without ha) takes 2-3 minutes
build and re-deploy 4+
so we want to avoid restarts
Vladimir Dvorak
@skybber
Apr 21 2016 10:52
too much, we have project running on Tomcat, startup time is 40s on my i5 here
alpapad
@alpapad
Apr 21 2016 10:52
this is a 300k+ lines of code ~1000 EJBS +1000+ cdi beans
Vladimir Dvorak
@skybber
Apr 21 2016 10:52
but is quite large , ~1.2M LOC
alpapad
@alpapad
Apr 21 2016 10:52
huge...
!
1.2m? you are re-writting linux in java?
Vladimir Dvorak
@skybber
Apr 21 2016 10:53
but we use old Seam, no EJB/CDI
alpapad
@alpapad
Apr 21 2016 10:53
..
interesting
Vladimir Dvorak
@skybber
Apr 21 2016 10:54
:) No, it is email-marketing system
alpapad
@alpapad
Apr 21 2016 10:54
ahhh... ok
Vladimir Dvorak
@skybber
Apr 21 2016 10:54
Hibernate/Seam/JSF (Primefaces) + JSP
alpapad
@alpapad
Apr 21 2016 10:54
good biznes if you can get the customers coming
Vladimir Dvorak
@skybber
Apr 21 2016 10:55
it is for Switzerland/DE market
alpapad
@alpapad
Apr 21 2016 10:55
i developed this for my previous company http://www.segmatix.com/
Vladimir Dvorak
@skybber
Apr 21 2016 10:55
may be u will be interested in my old DCEVM patch:
https://groups.google.com/forum/#!topic/hotswapagent/GhTrJ6eCqLQ
alpapad
@alpapad
Apr 21 2016 10:56
what is that?
well our problem seems to be the time it takes for jboss to parse, load and configure the application
Vladimir Dvorak
@skybber
Apr 21 2016 10:58
DCEVM flushes code cache on redefinition and this patch try to leave framework code in code cache, flush only application code
alpapad
@alpapad
Apr 21 2016 10:58
when it is up, it works ok
while loading, cpu is 100%
this is with or without HA
Vladimir Dvorak
@skybber
Apr 21 2016 10:58
I've read many complains on EJB performance
alpapad
@alpapad
Apr 21 2016 10:58
runtime it is ok... startup... f!!!^^#$%
Vladimir Dvorak
@skybber
Apr 21 2016 10:59
I do understand :) 2-3min is too much
alpapad
@alpapad
Apr 21 2016 11:00
yup.. just to test a change in an xhtml! :-)
anyway, i have a presentstion, talk later
:)
Vladimir Dvorak
@skybber
Apr 21 2016 15:07
Back to your Idea with versioning. There is performance drawback if we have many plugins for single framework for each version. HA currently copies all plugins to each classloaders that was found. I would suggest to use versioning if it is NECESSARY - for example in case of Hibernate 3/4. We should keep the number of framework to be minimal.
Vladimir Dvorak
@skybber
Apr 21 2016 15:19
correction : not number of framework but plugins
Vladimir Dvorak
@skybber
Apr 21 2016 19:04
I look on you changes in core + versioning. The versioning from plugin side looks very good! From core side it looks that there are plenty of new classes, are all that stuff necessary? Is there some possibility to minimize it? Another issue is Apache Licence, but it looks it is compatible with GPL http://www.apache.org/licenses/GPL-compatibility.html .
Vladimir Dvorak
@skybber
Apr 21 2016 19:16
I've compare new code with the old one, there are a lot of changes that can be splitted to:
  1. Formal changes:
    We should keep original code in theses points:
    • indentation - should be 4 spaces, not TAB
    • line splitting in comments etc - all formal changes in comment should be removed
      I would suggest to merge following formal changes :
    • adding missing block { ... } parenthesis
  2. Functional changes - I'll review it carefuly after the fix of formal changes, the code looks good on the first sight.
OK, I see u fixed many issues
Vladimir Dvorak
@skybber
Apr 21 2016 19:32
I've asked J.Bubnik to check your pull r. May be he will have some time to check it, if not I'll merge it tomorrow.