-
Notifications
You must be signed in to change notification settings - Fork 492
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
Upgrade from Glassfish 4.1 #6230
Comments
@scolapasta may I ask you to link to the GH project? We can rename it to be more technology neutral if it is too Payaraish (too much badass 🐟). Looking forward to the next community call on this. 😄 |
Thanks for creating, @scolapasta! I'll put a "Large" on this (any objections? :)) and move it to the team dev column so that we can regularly discuss progress in standup. |
I'm excited to see the following candidates on the list above:
I think we should also consider one more:
My reasoning for including Open Liberty is twofold. First, if you go to https://jakarta.ee and follow the links from the announcement of Jakarta EE 8 to the list of compatible products, Open Liberty is a compatible implementation (Payara is not yet listed but I'm sure will be). Second, the "fast-deployment maven plugin" mentioned in airhacks 47 and lots of other Open Liberty goodies mentioned in airhacks 32 also sounded awesome: http://airhacks.fm Finally, as is my wont, I made a spreadsheet so we can start organizing our thoughts on the various candidates: https://docs.google.com/spreadsheets/d/1TVVErG_zFC6k4Fnjz8rJ9VJxMD_xGJSk7OwVjQOLXaQ/edit?usp=sharing |
Progress on this has been slow to start, mostly because I'm waiting for a new laptop (it didn't make sense to install and work through dev environment issues on my current, old (and very limited HD space), when I'm getting a new one soon. Pre laptop steps are evaluating the current state of the app servers and make sure they support the things we need (Jakarta EE support (though we won't do that immediately, if we don't have to), Config API, etc). Once new laptop has arrived, I'll first experiment with Payara (or possibly Glassfish) as those currently seem like they will be the easiest to upgrade to. |
Hey @scolapasta any news on this? @pdurbin is already pushing people to try things 😄, see #5907... 😉 Just kidding, no need to rush this. A comment on appservers: if we are going to open the discussion on what to use, I'd suggest looking into Payara and Wildfly. Payara because it's very likely to get going fast due to the relationship between Glassfish and badass 🐟. Wildfly because it might be a good option to have a go on Quarkus. Someday. Far future. But cool stuff. |
OK, here's an update on this and a plan for next steps: In determining which app server to concentrate our efforts on, I started first with Glassfish 5 and Payara 5. For each of these, getting the app to deploy was fairly straightforward - download, unzip, replace the domains directory with the one from glassfish 4, copy over the postgres driver - and voila - BUILD SUCCESSFUL! While I haven't yet tried the other app servers, the process for those would be more complex. And I do believe the issues we're seeing are not specific to the app server itself, but to the standard library upgrades they are using. So it makes sense to continue down the Payara / Glassfish path while we solve these. Unfortunately, a successful deployment is not in itself a success. Many things break at that point. I had hoped that their might be one comprehensive solution, and I do still think some of the issues are related, but at this point I think each problem needs to be worked on and solved individually. So the plan going forward will be to create a branch for this upgrade and run it on an instance so we can keep testing and possibly finding new issues. Fork this branch and start solving the individual problems. (this would be a good area we could use some swarming, if devs are available) Here are the current known issues (and as we find more, we can add them to this list): The following are all artifacts of the same underlying issue (#6463) and are solved by using the latest JSF (2.3.14); marking as solved, though we'll still need to decide if we wait for Payara to ship with JSF 2.3.14 or patch:
Fixes incoming / committed to branch (unchecked vs checked):
There was a branch by @poikilotherm (PR #6220) where he changed the dataverse page from storing the id in the id property of a dataverse object to a dedicated property of the page itself. While that allowed me to click save, the changes I made were not stored. (this still could be how to get this to work, with possibly some more work). Doing a similar change to the dataset page seemed to have no effect. As we solve each problem, we can see if the solution is helpful for any of the other problems. |
Some further debugging: In regards to the manage permissions issue, the error is a null pointer. The injected service bean is null. So next step is to understand why - is injection in converters no longer possible? I saw a similar issue in trying to create a dataset, so this figuring this out should solve a class of issues. |
OK, this explains why it worked before and isn't working now: Working on fix next, hopefully as straightforward as it sounds... |
I am still volunteering for help on this issue. It would be great to discuss as a community about some things. Like what we all see as wanted changes from different perspectives, how we proceed regarding breaking changes and what kind of server we are going to use. Is it time to reach out to community gathering technical feedback? |
Thanks @poikilotherm if you want to look at any of these problems, let me know (I'd love it if you or someone could start looking at the upload files issues). We're still in the investigate how to solve problems stage. (as I pointed out, I don't believe these issues are due to Payara (or any other app server) specifically, but rather to using newer versions of standard libraries (for example, the validation issue you found, or the Converter issue due to changes in later versions of JSF). Once we make some more progress on understanding / resolving these issues, we can figure out next steps. |
Update on converters: Bad news / good news. Good news is I have gotten one of the other suggestions to work, namely, remove the @Inject and replace by manually grabbing the bean via CDI utility class: This worked and I can now add role assignments. I am making this change on all the other Converters (there are 10) to see if that helps fix or make progress on some of the other issues. I may still spend some time trying to get the other solution working, but if not, we have this method. |
@scolapasta great! The "you were relying on an unspecified/undocumented feature" comment from BalusC in the Stack Overflow post is exactly what I was trying to say in tech hours this week, though I probably framed it more as using a deprecated feature. I have a lot more hope now! 🎉 |
Some news on upload: I've noticed in other places that clicking on some buttons operate differently the first time, and when you click a 2nd time. Not yet sure if this one is related to those. Other updates: And lastly for now, File edit. After I uploaded the file, I was able to edit the metadata from the file page, but not if I went from the dataset page. The only differences I see are two extra parameters, mode=SINGLE, version=DRAFT. I added mode=SINGLE to the URL and it worked, so for some reason missing that parameter is an issue. Still, some progress. Next week, I'll create the branch and start checking in some of this. |
OH, also, I had to change the dataset page to also not set "id" in the dataset, but to have a dedicated id on the DatasetPage (as we did with DataversePage). Before that I would get a "An instance of a null PK has been incorrectly provided for this find operation." error when clicking edit or when I tried to publish. (The id is getting reset to null from the viewParam; I guess they are not resent and if it's the one from the Dataset object, that is bad). With the change, the error went away. On edit, I still can't (the page is not updating its view), but I was now able to publish. |
Thanks @scolapasta for the list in #6230 (comment). As I mentioned in standup, it will be good to get some swarming on this during the sprint starting Wednesday. I'm thinking of running this sprint until 1/8, so we'll have plenty of time. |
Branch created: 6230-glassfish-upgrade and initial commits (for fixes described above) pushed. |
So, here's the general plan: for this next sprint we will (among some other issues) be swarming on this. In order to make it easier to manage, when a developer chooses to work on a particular problem, they should break it out into a separate issue (as I've done with #6447 and #6448) and assign themselves. It's ok for multiple people to try to investigate on the same problem, just make sure you're assigned so you can communicate effectively about progress. Once there's a proposed solution, make a PR to this branch (6230-glassfish-upgrade) and I can quickly review (I'd like to see things as they come in, in order to keep a comprehensive view of the types of solutions we are finding). External developers are very welcome to also help; please just follow the procedure above so we can easily track where things are at. One note: we prefer solutions to be generic, i.e not tied to any specific app server. In that way, while we will still likely only support one app server, others may experimentally choose to run Dataverse on other app servers. However, we are not as concerned at the time with backward compatibility to Glassfish 4. While it may be nice to have, we will eventually be using features that will definitely not work (i.e. JSF 2.3 features) and require upgrading to one of the modern app servers. |
Should we use https://github.com/orgs/IQSS/projects/16 for tracking/visualisation? |
@poikilotherm as promised, I just mentioned this at standup. My understanding is that you are quite welcome to use that board. |
In reply to the suggestion from @scolapasta in the comment above that current fixes "should work" in Glassfish 4. I can confirm that I have built the |
Found a reference to an issue with Glassfish in this issue, Permissions: Grant access errors for large # of files #2641. We should look into retesting this in Payara/Glassfish 5. @sekmiller commented on Mar 22, 2016
|
Payara 5.201 has been released yesterday. It contains the JSF 2.3.14 update, so no manual patching necessary. |
@poikilotherm @mheppler I started rebuilding payara5.odum.unc.edu with CentOS 8 and Payara-5.201 yesterday but the installer blew up. Picking that up this morning. |
OK, new checklist, as we find new issues:
|
The first issue (and possibly 2nd and 3rd) is due to an ArrayIndexOutofBonds in jsf code. We'll likely have to solve thus was a patch. See this mojarra issue: eclipse-ee4j/mojarra#4647 |
OK! I think we know the cause of the last two now, as well. They're our old friend for which we had other issues earlier in this very issue and for which we created a sub issue: #6448. So I'll make the appropriate changes there and make a patch for jsf (at least for the purpose of testing) and we'll convene testing on Monday. |
The last two were as suspected and have been fixed (for templates changed to o:viewparam; for guestbook, we were able to remove the viewparam for editMode entirely. Next up, figuring out how to make this patch. |
The first three issues are fixed with patching jsf (with an experimental jar I've created). I'll ping Payara folks to see what they think and we'll make decisions from there. |
Keeping open until we decide on the custom jar file that solves the other three items from the recent list. |
One last viewParam issue on editdatafiles.xhtml to fix. |
Dataverse is currently running on a (modified) Glassfish 4.1. This has served us well, but is old and no longer actively supported. Especially in light of the upcoming DataTags integration, we want to upgrade to a new app server for security uogrades, as well as being able to leverage newer features (e.g. Config API) and enable upgrades of other core technology (e.g. Java EE 7 -> Jakarta EE 8).
There are a few options to explore. Some work has already been done for Payara 5, and this tickets will serve for both for the evaluation of that and some other candidates (TomEE, Glassfish 5, Wildfly), and the actual upgrade.
Note that I'm closing this old issue #2628 with a very similar title, as that is several years old now and was originally about upgrading to 4.1.1.
Let's use this issue going forward for comments related to upgrading from glassfish 4.1.
(per request, also adding a link to the GH project that references subtasks related to this upgrade: https://github.com/orgs/IQSS/projects/16)
The text was updated successfully, but these errors were encountered: