Javelin is Running out of tmp file names - what are the limits?

Document ID : KB000101472
Last Modified Date : 14/06/2018
Show Technical Document Details
Question:
When using SetVariable -> CallJavelin activities to call a sub-flow, Javelin will create the variable CSV file automatically in a "tmp" file name as %TMP%\tmpXXXX.tmp.

What are the exact naming convention/rules? What is the defined maximum number of files to be generated before running out if the files aren't deleted?
Answer:
Javelin uses the Path.GetTempFileName Method for generating temp files. This in turn calls Path.GetTempPath.

Therefore, Javelin's tmp CSV files can exist in:
  1. The path specified by the TMP environment variable.
  2. The path specified by the TEMP environment variable.
  3. The path specified by the USERPROFILE environment variable.
  4. The Windows directory.

It's highly unlikely that this method would get to option 3 or 4, but know that it is possible depending on the environment.

Path.GetTempFileName doesn't provide the file name/pattern used, but it does tell note that it's limited to 65,535 files and the known format when using Javelin is tmpXXXX.tmp where XXXX appears to be hexadecimal or numeric values.

65,535 is FFFF in hexadecimal. Other valid characters in hexadecimal are the letters A-F and numbers 0-9. So the following regex should match the file pattern generated by the Path.GetTempFileName Method:
tmp[A-F0-9]{4}\.tmp

Windows being case-insensitive, the above patter should match, but should a script/program be created to find these files adding the lowercase a-f to the pattern would be safer (or set the regsex to a case-insensitive match):
tmp[A-Fa-f0-9]{4}\.tmp