Closed newmanld closed 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.
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.
Local vagrant environment our web and data servers is up and running. Next steps:
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.
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.
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.
The Fedora 3.8.1 upgrade on scholar-qa is complete.
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.
Steps to upgrade java prior to Fedora upgrade:
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).
<param name="XACML-COMBINING-ALGORITHM" value="org.jboss.security.xacml.sunxacml.combine.OrderedDenyOverridesPolicyAlg"/>
The upgrade is complete
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