EVL – ETL Tool

Products, services and company names referenced in this document may be either trademarks or registered trademarks of their respective owners.

Copyright © 2017–2023 EVL Tool, s.r.o.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.

Table of Contents


(since EVL 2.0)

Let’s have defined variable EVL_RUN_ID_FILE with the path to the file which contains the high watermark of some incremental ID. (Let’s call such value RUN_ID as the purpose is usually having unique ID of each job.)

The invocation of the command ‘evl_increment_run_id’ takes the value from the file defined by EVL_RUN_ID_FILE, increase it by one and write it back to file and also to ‘stdout’.

So one can use it this way:

In each job, there would be

export EVL_RUN_ID=$(evl_increment_run_id)

and then the value can be used in the mapping for example:

static long run_id = atol(std::getenv("EVL_RUN_ID"));

Data type of RUN_ID is ‘long’.

If EVL_RUN_ID_FILE is not defined, then ‘evl_increment_run_id’ command fail. If it is defined, but the file doesn’t exist or is empty, then the file is created with the initial value~0.

When the file EVL_RUN_ID_FILE is locked by other process, ‘evl_increment_run_id’ will try every 300\,ms to get access. It will wait at most EVL_RUN_ID_FILE_LOCK_WAIT seconds before fail. Default is 30 seconds.