Skip to content
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

March release #657

Merged
merged 941 commits into from Mar 17, 2017
Merged

March release #657

merged 941 commits into from Mar 17, 2017

Conversation

marktriggs
Copy link
Contributor

2.0 Release Notes

Rails/JRuby Upgrade

The 2.0 release of ArchivesSpace incorporates the newest releases of JRuby and the Rails web framework. Although the user-visible effect of these upgrades is negligible, the newer versions bring performance improvements, large numbers of bug fixes, and support the long-term maintainability of the ArchivesSpace code base.

Large Trees

Support for large record trees has been vastly improved in this release.

The original tree implementation was designed with large trees in mind, but assumed that records would be spread somewhat evenly across several parent records. In practice, some people's trees are more like sticks, with a single parent record containing tens of thousands of children.

The new tree implementation is lazier than ever (in a good way). We have tested it against trees containing over 100,000 records at a single level and they still load quickly and scroll responsively. Features like drag and drop and the various reordering methods have also been reimplemented to work at much larger scales.

Reports Remediation

The reports functionality in ArchivesSpace had fallen into disrepair. This release includes a reworking of the existing reports. The goal was to make the existing reports run successfully, not to add new reports or improve existing reports. Work is well advanced on a specification for an overhaul of reports in ArchivesSpace - this will be implemented in a future release.

As part of this work, Jasper was removed from ArchivesSpace. Any reports that were using Jasper have been reimplemented using the internal report framework. The reasons for this include that the Jasper implementation had not achieved its goals (for example, allowing users to define their own reports), and that the Jasper license does not permit it to be shipped with ArchivesSpace.

Background Jobs

The handling of background jobs has been reworked. The key changes are:

  • Added support for multiple threads. This handles the case where one very long running job clogs up the queue.
  • Tidied up permissions. Previously a user had to have import_records to run any kind of job. Now there is a generic create_job permission, and additional permissions can be defined for particular job types.
  • Improved plugability. It is now fairly straightforward to add a new type of job from a plugin.
  • Tweaked the staff UI for creating jobs. Now it shows available job types in a submenu under the Background Job option in the Create menu.
  • Some refactoring to better resolve the abstraction from import jobs.

The distribution now includes a README for background jobs, and an example plugin that adds a job type.

Search for Empty Values

The staff interface advanced search and corresponding search API have been extended to support searching for empty string, date and controlled value fields.

This work was funded by Yale University.

New Public User Interface Beta

This release includes a Beta release of the new Public User Interface application. A production release is planned for inclusion in the next major release of ArchivesSpace -- currently scheduled for June 2017.

By default ArchivesSpace will use the existing, production public user application. In order to enable the new public application set an environment variable ASPACE_PUBLIC_NEW to true when starting ArchivesSpace. This is not recommended for production use.

As part of this work, the indexer application has been overhauled. This was necessary because the new public application only interacts with the ArchivesSpace data via Solr, and it has different and quite demanding requirements. Now there are two separate indexers - one for search and browse in the staff application (frontend), and one for the new public application (public-new).

The reworked indexer also includes some stability and performance improvements.

Performance Improvements

Some of the things that were slow are slow no longer. Specifically, records with linked containers would sometimes take a while to load in the staff interface — particularly when they were linked to a container that itself linked to a large number of other records. We've done some work to optimize the containers code, and Resource and Archival Object records load noticeably more quickly as a result.

For the folks who enjoy watching log files, you'll notice that these changes flow-on to indexing performance too. Top Container records index much more quickly now.

Replaced Puma with Mizuno/Jetty

Easily the least interesting item on this list: we've switched the ArchivesSpace devservers from using Puma to using Mizuno. If you're a developer who runs build/run *:devserver, you'll notice Puma has vanished.

Mizuno runs Jetty under the hood, which has the advantage of being what we run in the ArchivesSpace distribution too. Over the years we've hit irritating cases where Puma and Jetty didn't quite behave the same way, so unifying them means fewer surprises when running from the ArchivesSpace distribution.

A note on plugins

This release introduces a small change to the way plugins register their custom Rails routes. If you have implemented a plugin that defines new Rails routes, please take note.

For a plugin to define its own routes, a common pattern was to do something like this:

 my_routes = [File.join(File.dirname(__FILE__), "routes.rb")]
 ArchivesSpace::Application.config.paths['config/routes'].concat(my_routes)

The syntax for this changed slightly in Rails 5, so to prevent similar surprises in the future, we've added a standard syntax for loading your routes:

 ArchivesSpace::Application.extend_aspace_routes(File.join(File.dirname(__FILE__), "routes.rb"))

That is, just pass extend_aspace_routes the path to your custom routes file and we'll do the rest for you.

JIRAs Delivered in this release

marktriggs and others added 30 commits March 16, 2017 13:42
…e-new-tree

I18n the tree summary text and pull back all containers for these summaries
AR-1647 add container inventory and top container pages to show what's in a container
Refactor DB module to let us create multiple pools.  Modify sequences…
jambun and others added 27 commits March 16, 2017 14:38
…ced search and a new AdvancedQueryString.rb model in the backend to build the solr search string for a query
We index dates as UTC, so this ensures that date ranges work as expected.
Also remove some of the log chattiness from Travis
@lmcglohon lmcglohon merged commit 14dac8f into master Mar 17, 2017
@lmcglohon
Copy link
Contributor

Waiting until Monday 3/20/2017 to delete this branch.

lmcglohon added a commit that referenced this pull request Apr 13, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants