Nash!Com Trace & Lowercase Conversion Extension
Problem Description/Business Case
The approach "If the platform is case sensitive, Domino is also case sensitive." is not a solution for enterprise customers. In larger environments you cannot control if databases are generated or accessed in mixed case by programs and/or end-users. Telling a customer to create databases and directories with lower-case ASCII characters is a good best practice but specially in larger infrastructures with multiple platforms it can be very difficult to control.
In addition specially when moving from Windows to UNIX customers might run into huge problems with mixed cased databases. Most problems occur in the following areas
- agents try to open databases
- server replication
- mail delivery (when the person document contains wrong casing)
- opening mail-files (when the location document contains wrong casing)
- opening databases from the workspace (when the icon has been added with different casing when the database was already in the cache)
- when opened via HTTP, ...
The main problem is that this behavior is not controllable/supportable in day to day operation. You cannot be 100% sure that you find all places to correct the casing and specially migrating from another platform where casing is ignored. And in some cases you also run external/3rd-party applications which you cannot control at all.
We have enterprise customers who rate this problem as a show-stopper for a enterprise wide migration from Windows 2000 to AIX/Regatta and large Solaris Servers. For other customers this is a latent problem causing support issues from time to time.
In addition the behavior of two databases with different casing would be still inconsistent because once one of the databases has been opened, further requests (also for the database with other casing) would hit the open database in cache and ignore casing. So you could never open both databases.
Purpose of this program
a.) Fix a problem with mixed case filenames
UNIX file systems are case sensitive. There is a not yet fixed SPR #GFLY5BHKFV which should address this issue. The main problem is that Domino tries to open a database with the casing the process or user has specified. If the database is not yet opened in cache and the casing is different, the call will fail.
This solution addresses this problem by translating all calls to create and open databases to lower-case. After you have converted all files and directories to lower-case on the file-systems the routine will prevent this problem by translating all incoming open or create requests to lower-case.
In normal cases the only option you should enable is nshextloOptions=4. All other options are for troubleshooting only!
Please note that the options are a BINARY flags!!!
Special Case iNotes/DWA
For iNotes/DWA the directory name iNotes and the files inside the folder have to stay in proper-case because the HTTP task expects the files to be mixed case.
The current version of the solution does properly skip translation for those files.
b.) To trace and troubleshoot problems in the area of opening database
In case of an error opening a database most servertasks and also server core services do not report their process name and which database they tried to open. Mostly you see only the message like "File not found" on the server-console which is not really helpful to narrow the problem. This option helps to find problems and also to trace open of all databases.
Copyright, License and Available Platforms
The solution for Linux is available free of charge. Implementations on commercial level for Solaris and AIX are available from email@example.com
This solution is provided on an "as is" basis. NashCom makes no warranty, representation, promise or guarantee, either express or implied, statutory or otherwise, with respect to the Software, the user documentation or any related technical support, including their quality, performance, merchantability or fitness for a particular purpose.
The work-around is implemented via Notes C-API Extension Manager technology and monitors the following Extension Manager Events
All three calls are monitored with the EM_BEFORE for translation. The open event also is monitored in the EM_AFTER step to trace error messages of database open requests. This routine uses the internal LMBCS routine and therefore also supports international characters.
Bit flag which can be used to enable/disable different functions:
Log all database requests returning an error with
- calling process/task
- status / error
- open options
NshExtLo: DBOpen: (adminp) : '/local/notesdata/names.nsf' OPT:0x0 ST:0 USER: 'nsh-dus-aix-01/Srv/NashCom/DE'
Same as Option 1 but log all databases not just databases with error codes.
Translate Upper case to Lower case filenames. The translation will be logged on the console/ in log.nsf.
enables verbose logging. In most cases verbose logging is not needed and could cause a high number of additional log messages.
NshExtLo: translating to lowercase '/local/notesdata/DB.nsf'
- Copy into binary directory and modify notes.ini
Example for Linux:
plus the following notes.ini parameter per platform
(standard target directory: /opt/ibm/lotus/notes/latest/ibmpow)
(standard target directory: /opt/ibm/lotus/notes/latest/sunspa)
(standard target directory: /opt/ibm/lotus/notes/latest/linux)
You have to change the rights for the binary to be executeable.
Example for Linux:
cp libnshextlo.so /opt/ibm/lotus/notes/latest/linux
chmod 755 /opt/ibm/lotus/notes/latest/linux/libnshextlo.so
- If you already have an entry add this Extension Manager before any other lib (use commas to separate multiple entries)
- Restart your Domino Server