Monday, November 11, 2019

OCT2019CPU WebLogic "3L3H" Breaks Jython?

In a recent post, I listed the patches included in Oracle's October 2019 "Critical Patch Update".  Among them is a patch for Oracle WebLogic 10.3.6, which is part of the Oracle Middleware infrastructure that supports Hyperion 11.1.2.3/11.1.2.4.

Customers who use Jython scripting within FDMEE may want to do extra regression testing before promoting this patch into Production.

A little background:

My team uses custom scripts to maintain 7 rolling days of Hyperion LCM backups.  One stumbling block with this is: when rolling off the 7th folder so it may be replaced, traditional MS-DOS "rmdir" doesn't work for certain subfolders in Windows Server 2012 R2 (usually Reporting Analysis Framework and Financial Close / ARM).  This is due to the famous "directory path too deep" error.

To work around this, we created a very simple Jython script.  Jython bypasses the Microsoft API, allowing us to delete folders containing paths which exceed the Microsoft limitation.

You do this:

SET CLASSPATH=%CLASSPATH%;%HYPDRIVE%\Oracle\Middleware\oracle_common\modules\oracle.jrf_11.1.1\jrf-wlstman.jar
%JAVA_HOME%\bin\java weblogic.WLST %SCRIPTDIR%/rmRotation7.py


And the Jython script looks like this:

# rmRotation7.py
#
# This Python/Jython script removes the oldest LCM backup folder.
# We use this technique to work around the Windows Server 2012
# limitation concerning directories containing pathnames exceeding
# 260 characters.
#
#  Written on 11/02/2016 by Dave Shay (Datavail)
# Modified on MM/DD/YYYY by Your Name - Briefly list changes

import shutil

shutil.rmtree('D:/Backup/LCM/Rotation7')



I like simple solutions like this.  It uses technology that is already baked into the EPM infrastructure.  Now, a new challenger appears: WebLogic OCT2019CPU patch ID "3L3H".  This is what happens when trying to run our Jython script after applying the patch.

Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands


Problem invoking WLST - Traceback (innermost last):
  File "D:\Scripts\rmRotation7.py", line 13, in ?
  File "D:\Oracle\Middleware\wlserver_10.3\common\wlst\modules\jython-modules.jar\Lib/shutil$py.class", line 117, in rmtree
  File "D:\Oracle\Middleware\wlserver_10.3\common\wlst\modules\jython-modules.jar\Lib/shutil$py.class", line 132, in _build_cmdtuple
  File "D:\Oracle\Middleware\wlserver_10.3\common\wlst\modules\jython-modules.jar\Lib/javaos$py.class", line 135, in listdir


The Rotation7 folder remains and now we essentially have 6 rolling days of backups instead of 7.

When I look at the "jython-modules.jar" file, I can see the timestamp changed to when it was patched.  It would appear Oracle accidentally broke something?

My team will open an SR with Oracle and try to get to the bottom of this.  In the meantime, I would tend to shy away from this specific patch.

1 comment:

  1. Following up. My team has observed inconsistent results across our customer portfolio with this WebLogic patch. I still feel gun-shy about this patch, but I would encourage regression testing in one of your non-Production environments.

    ReplyDelete