[ 
https://issues.apache.org/jira/browse/AIRFLOW-1252?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Fokko Driesprong resolved AIRFLOW-1252.
---------------------------------------
       Resolution: Fixed
    Fix Version/s: 2.0.0

> Experimental API - exception when conf is present in JSON body
> --------------------------------------------------------------
>
>                 Key: AIRFLOW-1252
>                 URL: https://issues.apache.org/jira/browse/AIRFLOW-1252
>             Project: Apache Airflow
>          Issue Type: Bug
>          Components: api
>    Affects Versions: 1.8.0, 1.8.1, 1.9.0, 1.10.0, 2.0.0
>            Reporter: Sergio Herrera
>            Assignee: Sergio Herrera
>            Priority: Major
>              Labels: api
>             Fix For: 2.0.0
>
>
> When someones calls to the endpoint _POST 
> <host>:<port>/api/experimental/dags/<dag_id>/dag_runs {}_, Airflow never run 
> that request if the body of that contains _conf_.
>  This occurs due to a mismatch between types when calling function 
> _trigger_dag()_, which is also used by *CLI*. That function perform a 
> _json.loads(conf)_ because from CLI the type of conf is _string_, but, in the 
> other side, from *experimental API*, that type is _dict_ (because _Json_ is 
> processed before to get all data, such as execution_date).
> There are two possibilities:
>  1. Look for every use of _trigger_dag()_ function and put _Json_ formatting 
> from outside the function.
>  2. In the *experimental API*, put the conf in a string (with _json.dumps()_) 
> to allow _trigger_dag()_ transform into _dict_.
> I have implemented the second option, so I can make a PR with that if you 
> want.
> Thank you a lot
> EDIT: Also, there are no tests which uses conf in the Json passed through 
> request currently.
> Examples:
>  - Before fix (escaped json):
> {noformat}
> POST /api/experimental/dags/test_conf/dag_runs HTTP/1.1
> Content-Type: application/json
> {
>   "conf": "{
>     \"k1\": \"v1\",
>     \"k2\": \"v2\",
>     \"k3\": [\"av1\", \"av2\", \"av3\"],
>     \"k4\": {
>       \"sk1\": \"sv1\",
>       \"sk2\": \"sv2\"
>     }
>   }"  
> }
> {noformat}
>  - After fix (pure json):
> {noformat}
> POST /api/experimental/dags/test_conf/dag_runs HTTP/1.1
> Content-Type: application/json
> {
>   "conf": {
>     "k1": "v1",
>     "k2": "v2",
>     "k3": ["av1", "av2", "av3"],
>     "k4": {
>       "sk1": "sv1",
>       "sk2": "sv2"
>     }
>   }
> }
> {noformat}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to