Does this site look plain?

This site uses advanced css techniques

This Evo Tip is how to work around one particular error with the Evolution RW Engine, and it occurs in both Peru and Plymouth.

Note: there are a number of errors that look similar, but this one is regarding cannot create a temporary file because a folder does not exist:

Check Pressure Seal Legal (New) (S1602): Error reading TrwlCustomPrCheck._LibComponent: Error reading Library Component "TrwlCustomPrCheck"
Cannot create file "D:\EvoTemp\RWTMP\Cache19837548B62446E390EA1A1758C6F0B0\b1.sbt". The system cannot find the path specified
. Additional information: File not exists. Folder not exists.

Background

When Evolution wants to run a report, the Request Broker and/or the Request Processor launch the isRWEngine.exe process with some parameters that allow the two to communicate. The RW Engine creates a temporary folder with a long unique filename so it has a place to do its work:

D:\EvoTemp\RWTMP\Cache19837548B62446E390EA1A1758C6F0B0\

Once it's gotten itself situated, it enters a work loop where it accepts a task request, processes it, and hands the results back to Evo, then waits for another. All the while it's using this temporary directory as a work area.

But: for reasons we don't understand, something or somebody is sporadically deleting that cache folder, so that when the isRWEngine attempts to work on its next task, the cache folder disappeared out from under it and it's unable to create the file. Hence the error.

You can't tell from this message exactly which folder is missing, but in almost every case we've looked at it's the Cache folder and not one of the parents that's missing.

The root cause is still under investigation, but there's a second bug going on here. Once that folder disappears, it won't ever come back, but the isRWEngine keeps going. It continues to accept work that will surely fail every time, and this is why once this error starts, it keeps happening.

It may not happen to every job, because there might be multiple middle tiers, each woth multiple isRWEngines, so there's an apparent random component here.

This bug has been reported repeatedly to iSystems with increasing levels of vociferation.

Workaround

I'm not sure that restarting services fixes this - maybe - and rebooting certainly will, but this is overkill. The more precise fix is to kill the errant isRWEngine that's luring report tasks to their deaths.

We have to look at several parts of the call stack to find out how to do this:

date/time         : 2013-09-19, 11:27:56, 78ms
computer name     : EVO1
user name         : SYSTEM 
operating system  : Windows NT New Service Pack 1 build 7601
system language   : English
system up time    : 11 hours 23 minutes
program up time   : 1 hour 10 minutes
processors        : 16x Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz
physical memory   : 13873/16306 MB (free/total)
free disk space   : (C:) 46.82 GB
display mode      : 1024x768, 32 bit
process id        : $178c
allocated memory  : 52.14 MB
command line      : "C:\Program Files (x86)\Evolution\DeploymentManager\Applications\Evolution\isRWEngine.exe"
              /server "D:\EvoTemp\011F15A493204A648EAEDA2125563710.tmp" /owner 24116A29F06B46059629221128B3C22A
executable        : isRWEngine.exe
exec. date/time   : 2013-09-18 10:58
version           : 12.9.0.3
madExcept version : 3.0b
callstack crc     : $867cac02, $5e390f78, $5e390f78
exception number  : 3
exception class   : EReadError
exception message : Error reading TrwlCustomPrCheck._LibComponent: Error reading Library Component "TrwlCustomPrCheck"
   Cannot create file "D:\EvoTemp\RWTMP\Cache19837548B62446E390EA1A1758C6F0B0\b1.sbt".
   The system cannot find the path specified . Additional information: File not exists. Folder not exists.

The problem with the process ID is that it's in hexadecimal (base 16), but the Windows task manager shows process IDs in decimal (base 10). You'll need to convert one to the other (e.g., 178c hex is 6028 decimal).

I found a helpful online website that allows for doing this kind of conversion easily, and they permit embedding into this web page:

Thanks to Easycalculation.com for a helpful tool.

Just enter the hex value without the dollar sign in to the first box, and it will show the value in Decimal (ignore the Binary part). This decimal value is the process ID we're looking for.

Next we must locate the task in Task Manager. Each version of Windows presents the Task Manager in a somewhat different manner, but by default it does not show the process ID, so we must enable it.

Launch the Task Manager, select the "Processes" tab, then look for a column "PID". If missing, click View : Select Columns in the top menu, then check the "PID (Process Identifier)" checkbox. This will show that additional bit of information for each process:

Enabling PID column in Task Manager

Once you set this value, Task Manager remembers it in the future for that user.

When launching Task Manager, be sure to select the option For all users (which is sometimes a checkbox, sometimes a button). Because isRWEngine runs as SYSTEM and not you, failing to check this will effectively hide the Evo processes.

Here we see the isRWEngine, and it's common to see more than one on a system. You must locate it by process ID, in this case 6028.

Task Manager showing isRWEngine

Right-click on that task and select End Process. This kills the process and should stop future errors from happening with that process ID. But if other RW Engines have the same problem, you'll have to kill them in the same manner.

I do not recommend just killing all RW Engine processes; find the bad one and leave the rest alone.


First published: 2013/09/19