uclibs / scholar_uc_legacy

Source code for Scholar@UC up to version 3.x. Replaced by ucrate
Other
5 stars 1 forks source link

Upgrade to Fedora 3.8.x #643

Closed newmanld closed 8 years ago

newmanld commented 8 years ago

Per this thread in Hydra-Tech. https://groups.google.com/forum/#!topic/hydra-tech/RuFv96JJX3I

The thread reports the possibility of data loss in 3.7. Ben sums it up: Forgive the soapboxing, but I really cannot stress enough the importance of getting onto 3.8.1. It requires JDK 8, that's probably your biggest hurdle.

Description of the 3.7.x bug: This is might be due to running parallel updates to objects on Fedora < 3.8.1, where an object locking flaw could lead to phantom DS updates when multiple updates to the same datastream were being processed simultaneously.

For more detail see: https://jira.duraspace.org/browse/FCREPO-1284

newmanld commented 8 years ago

Script available for checking all objects and verifying whether there are any missing datastreams - datastreams Fedora claims it has but are not found (due to this bug)

Quoting from J. Echols on same thread on hydra-tech:

https://gist.github.com/jechols/c85efdca21e06d54a1f1

not production-quality code, but it does the job.

A few caveats:

  • This is VERY brute-force. And very slow. I didn't even attempt to figure out Fedora's bucketing algorithm, so I just scan all files. This is fine for doing a full scan, but terrible if you need to just quickly check a single asset.
  • For us, this is all run on an rsync of the data. If you run this live, I have no idea how it'll affect your app's performance.
  • I made the system cache the lists of files when I built the script so I didn't have to keep re-scanning the filesystem. Obviously that's terrible for an ongoing process, so if you used it weekly or something, you'd want to fry the "objectrefs.txt" and "fedora-data-files.txt" files first.
  • For some reason I spew "." for every datastream being scanned, as if anybody wants a couple million dots filling up their screen. It's best to redirect stdout to /dev/null and only pay attention to stderr. I am trying to re-run it now, but I'm pretty sure the final echo on line 25 ensures you'll get all the info you need if you just capture stderr.
hortongn commented 8 years ago

This gets kinda confusing. In our local environments we have our app's Gemfile pinned to jettywrapper 1.8.3. Jettywrapper 1.8.3 locks us to hydra-jetty 7.0.0. Hydra-jetty 7.0.0 uses Fedora 3.7.0. So that's what we are running locally (and on Larry).

If we move to the next version of Jettywrapper (2.0.0) that throws us to a hydra-jetty that has Fedora 4. So we don't want to do that. There doesn't seem to be an easy way for us to use Fedora 3.8.1 in our local environments. However, I don't think we need to worry about this bug in our local environments.

None of the above applies in our server environments where we are using Tomcat instead of Jetty. We should be able to upgrade Fedora to 3.8.1 and upgrade to Java 8 without much of an issue, but it needs to be tested, of course. Ideally these updates should all be integrated into our Puppet scripts and we should start with scholar-dev and run all automated and manual tests.

hortongn commented 8 years ago

Local vagrant environment our web and data servers is up and running. Next steps:

hortongn commented 8 years ago

Using Vagrant I've verified that the Puppet changes I made properly recreate our Fedora environment with Java 8 and Fedora 3.8.1. I ran our app and gem tests and all of them pass under 3.8.1. So no other changes appear to be needed for this upgrade.

Next step is to do the fedora upgrade on scholar-dev and test.

hortongn commented 8 years ago

When Fedora is upgraded on dev/qa/production, care needs to be taken to preserve config files, logs, XAMCL policies, and data. We need an inventory of files we don't want to overwrite.

hortongn commented 8 years ago

The Fedora 3.8.1 upgrade is complete on scholar-dev. I’ll do some testing and will move on to upgrading scholar-qa. We will need to schedule a time and change request to do the Java upgrade and Fedora upgrade on production.

hortongn commented 8 years ago

The Fedora 3.8.1 upgrade on scholar-qa is complete.

hortongn commented 8 years ago

I've Asked Andy to find time the week of May 9 to do the Java 8 upgrade on production Fedora. We can then handle the actual Fedora upgrade ourselves.

hortongn commented 8 years ago

Steps to upgrade java prior to Fedora upgrade:

hortongn commented 8 years ago

I've verified that Java has been upgraded to version 8 on the production Fedora server. Next step is for us to do the actual Fedora 3.8.1 upgrade (change request needed). The steps for the upgrade are below (verified on QA).

Prep

Backup 3.7.1 stuff

Copy new fedora files

Copy new tomcat files

Copy config and log files

Edit fedora.fcfg and change the following value

<param name="XACML-COMBINING-ALGORITHM" value="org.jboss.security.xacml.sunxacml.combine.OrderedDenyOverridesPolicyAlg"/>

Finish

hortongn commented 8 years ago

The upgrade is complete