This topic explains why startup errors occur in the data transformation engine and how to troubleshoot them.
The first step in a data transformation task is to start the data transformation engine. Startup errors occur when the SLS DSL rules you write fail the engine’s internal security check. 
Error log
If the engine detects invalid SLS DSL rules during startup, it returns an error like this:
{
"errorMessage": "ETL config doesn't pass security check, detail: XXXXXX"
}You can view error logs in the exception details of the data transformation diagnostic report or in the internal-etl-log LogStore.
If an error occurs during engine startup, the data transformation task retries automatically until it succeeds or you stop it manually.
After you fix the transformation rule and a retry succeeds, the task resumes normal operation. No logs are lost or duplicated.
Troubleshoot common errors
Basic syntax errors
Your SLS DSL rules violate syntax rules. For example, you use mismatched parentheses or write commas (,) as colons (:).
Error logs
{ "errorMessage": "ETL config doesn't pass security check, detail: invalid syntax" } { "errorMessage": "ETL config doesn't pass security check, detail: unexpected EOF while parsing" } ...Troubleshooting method
Use the
tracebackinformation in the error log to locate the exact syntax error. For example, you wrotee_set("test", v("status"))ase_set("test": v("status")), as shown in the following figure.
Invalid use of operators
All operations in SLS DSL must use built-in functions. Use op_* functions for arithmetic and comparisons. Do not use raw operators.
Error log
{ "errorMessage": "ETL config doesn't pass security check, detail: invalid type detected: <class `_ast.BinOp`> " }Troubleshooting method
Review your SLS DSL rules. Make sure all operations—including arithmetic and comparisons—use SLS DSL functions.
Examples
e_set("b", v("a") - 10) # Invalid e_set("b", op_sub(v("a"), 10)) # Valid e_set("b", v("a") >= v("c")) # Invalid e_set("b", op_ge(v("a"), v("c"))) # Valid
Incorrect function parameter types or calls to undefined functions
An error occurs if you pass a parameter with the wrong type to a function or call a function that does not exist.
Error log
{ "errorMessage": "ETL config doesn't pass security check, detail: invalid call in detected: function_name" }Troubleshooting method
First, verify that the function exists and its name is spelled correctly. If the function exists and the name is correct, confirm that you passed parameters of the right type.
Use the
tracebackinformation in the error log to find the failing function. For example, if dt_totimestamp fails, confirm the function exists, then check whether you passed the correct parameter type to it.
Examples
The dt_totimestamp function expects a datetime object. Here,
v("time1")is a string. Passing a string causes the error.Fix it by converting the string to a datetime object using dt_parse before calling dt_totimestamp. Or use dt_parsetimestamp instead—it accepts strings directly.
# Invalid e_set("time1", "2019-06-03 2:41:26") e_set("time2", dt_totimestamp(v("time1"))) # Valid e_set("time1", "2019-06-03 2:41:26") e_set("time2", dt_totimestamp(dt_parse(v("time1")))) # Valid e_set("time1", "2019-06-03 2:41:26") e_set("time2", dt_parsetimestamp(v("time1")))
Calls to expression functions in global operations
SLS DSL supports two function types: global operation functions and expression functions. Only global operation functions can be used as standalone steps in a transformation rule. Calling an expression function directly causes an error.
Error log
{ "errorMessage": "ETL config doesn't pass security check, detail: invalid type detected: <class '_ast.Expr'>" }Troubleshooting method
Check whether you called an expression function directly as a transformation step.
Examples
# Invalid op_add(v("a"), v("b")) str_lower(v("name")) # Valid e_set("add", op_add(v("a"), v("b"))) e_set("lower", str_lower(v("name")))
Invalid variable assignment.
SLS DSL does not support variable assignment. Pass values statelessly instead.
Error log
{ "errorMessage": "ETL config doesn't pass security check, detail: invalid assign detected: variable_name" }Troubleshooting method
Check your SLS DSL rule for variable assignments.
Locate the source of the error from the
tracebackin the error log.
Examples
# Invalid sum_value = op_add(v("a"), v("b")) e_set("sum", sum_value) # Valid e_set("sum", op_add(v("a"), v("b")))