Strategy to upgrade the omero server from 5.4.3 to 5.6.1

Hello everyone,

I’m new to omero server administration (not new to linux administration) and was asked to take care of the upgrade from version 5.4.3 to the latest 5.6.1. I’ve been reading a lot in the official documentation to get familiar with the application structure and necessary steps during the upgrade. Unfortunately I don’t think I have yet a clear picture of all necessary tasks and hope you can give me some hints how to proceed the smoothest way.

What’s clear so far is that I need to upgrade a lot of other packages before touching omero (especially java, postgresql, python). Since the release gap is really huge, I doubt, that I can only unzip the OMERO.server zip, replace the softlink to the OMERO.server directory and copy the etc/grid/config.xml from the former installation. So what could be a safe way to get the installation upgraded and keeping the existing custom configuration? In addition I was thinking if there are changes to the DB schema necessary. Are there any separate scripts to be executed or is it sufficient to dump the DB and restore it after the upgrade? Is there anything else I need to think of?

Thanks a lot in advance
Anna

Hi @ahamacher,

When upgrading from 5.4, there are no database changes needed. cf:

We suggest taking a database upgrade anyway during updates (after shutting down 5.4 and before starting up OMERO 5.5 or OMERO 5.6), but if you are changing major PostgreSQL versions, you will need to dump and restore the database.

I think the primary step from 5.4 that you may additionally need to run is the correction of corrupted pyramids, if that applies to your users.

The other major change to plan for is the new recommendation to install OMERO.server and OMERO.web separately.

Though there are several ways to handle the upgrade, I’d generally suggest installing the new Python, Java, and PostgreSQL packages first. They can typically live on the same system safely, though the second PostgreSQL instance will require a new port if you are using the same host. Then I’d test starting up a blank OMERO 5.6 so you are safe to try out various administrative operations (creating users, etc) without modifying your production database. Then you can migrate the data layer.

Let us know if you have any problems or questions.
~Josh

Hi @joshmoore,

thanks a lot for your quick and helpful response. After rethinking all necessary changes, I think I’m going to proceed in two steps:

  1. Upgrading the omero prod server from 5.4.3 to 5.5.1 (incl. the pyramids issue). This should be easily possible since 5.5.1 supports python 2.7 and postgresql 9.4, right? This would be a quickwin to get several application improvements into the production system asap.

  2. Install Omero 5.6.0 on a test server (clone from production, but with newer java, python and postgresql) to test the splitting of omero.server and omero.web in detail before changing the production environment. Roll-out in the prod environment afterwards.

Please let me know, if you have any doubts about it.
Thx, Anna

That’s correct. Makes sense.

None. But good luck nonetheless :wink:
~Josh

Hi @joshmoore,

now I know, why you wished me good luck :wink:
After some struggle I managed to update almost anything to server 5.5.1, but the PDF fails in Omero.figure.
I followed the instructions from https://pypi.org/project/omero-figure/ but keep getting error messages when doing the PDF Export.

Traceback (most recent call last):
  File "./script", line 2327, in <module>
    run_script()
  File "./script", line 2313, in run_script
    file_annotation = export_figure(conn, script_params)
  File "./script", line 2269, in export_figure
    return fig_export.build_figure()
  File "./script", line 964, in build_figure
    self.add_panels_to_page(panels_json, image_ids, page)
  File "./script", line 1769, in add_panels_to_page
    image, pil_img = self.draw_panel(panel, page, i)
  File "./script", line 1600, in draw_panel
    self.paste_image(pil_img, img_name, panel, page, dpi)
  File "./script", line 1923, in paste_image
    self.figure_canvas.drawImage(img_name, x, y, width, height)
  File "/usr/lib64/python2.7/site-packages/reportlab/pdfgen/canvas.py", line 857, in drawImage
    imgObj = pdfdoc.PDFImageXObject(name, image, mask=mask)
  File "/usr/lib64/python2.7/site-packages/reportlab/pdfbase/pdfdoc.py", line 2094, in __init__
    self.loadImageFromA85(src)
  File "/usr/lib64/python2.7/site-packages/reportlab/pdfbase/pdfdoc.py", line 2100, in loadImageFromA85
    imagedata = map(string.strip,pdfutils.makeA85Image(source,IMG=IMG))
  File "/usr/lib64/python2.7/site-packages/reportlab/pdfbase/pdfutils.py", line 34, in makeA85Image
    raw = img.getRGBData()
  File "/usr/lib64/python2.7/site-packages/reportlab/lib/utils.py", line 658, in getRGBData
    annotateException('\nidentity=%s'%self.identity())
  File "/usr/lib64/python2.7/site-packages/reportlab/lib/utils.py", line 648, in getRGBData
    if Image.VERSION.startswith('1.1.7'): im.load()
AttributeError: 'module' object has no attribute 'VERSION'
identity=[ImageReader@0x4f6ecd0 filename='0_Nup153StarGREEN_Nup133StarRED_Z-Stack_Structured Illumination_Maximum intensity projection.czi.tiff']

I believe this is caused by outdated Markdown and reportlab packages, since pip wasn’t able to update them (“ERROR: Cannot uninstall ‘reportlab’. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.”)
Can I force the update with pip with those packages? I was unsure to do so, in case I could completely break the installation :slight_smile:

Any hints are much appreciated.
Anna

Hi @ahamacher,

:wink: but this doesn’t sound too worrisome. You’re dealing with the fact that almost all packages have dropped support for Python 2 which is why we’re pushing everyone to upgrade. @will-moore may be able to help you pin your packages to older versions that work on Python 2. But even if that’s not feasible, I wouldn’t consider this a blocker to continuing your migration to 5.6 since we know they work with Python 3.

All the best,
~Josh

I haven’t tested myself but found https://github.com/biopython/biopython/issues/1995
which suggests that the issue is incompatible versions of Pillow and ReportLab:

“Forcing pillow==5.4.1 rather than using pillow version 6 seemed to work for us.”

So, depending on your current version of Pillow, if that is a possible option for you then it should be easy to try it.

Will.

2 Likes

Thank you very much @will-moore! For us Pillow 5.4.1 was still too new somehow, but downgrading even more made the PDF export work!

1 Like

Hi all,

one more post related to this topic. We managed to get the omero server version 5.6.1 running yey but for some config parameters it is a bit unclear which one needs to be in the config for omero-server and which one for omero-web. For some parameters it is pretty clear, but at the moment we have some redundancy amongst both config files and would like to clean this up. Is there an overview of parameters and their respective config file after the server/web split or somethin similarg in the official documentation, that I’ve overseen?

Thanks in advance,
Anna

Hi Anna,

Apologies, our documentation hasn’t kept up with the full separation of web and server.

All those omero.web. settings are only for web: https://docs.openmicroscopy.org/latest/omero/sysadmins/config.html#web

All the omero.client settings https://docs.openmicroscopy.org/latest/omero/sysadmins/config.html#client are used by Insight and Web and web will read those from the server.
I believe that you can also override those in omero-web (to allow different web installs to use different settings), although I haven’t found the docs/code or tested this recently.

Everything else should be in the server settings.

Hope that helps,

Will.

Hi Will,

thanks and one last question, does “everything else” also include the omero.ldap and omero.mail settings?

Cheers, Anna

Hi Anna,

Yes, those functionalities are handled by the server so the settings belong there.

Cheers,
Will.