nifi-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vitaly Krivoy <Vitaly_Kri...@jhancock.com>
Subject RE: Error when executing NiFi REST API PUT /processors/{id} call
Date Thu, 15 Mar 2018 13:52:00 GMT
Thank you Matt. As you correctly have guessed, I was previously calling the API with original
ProcessorEntity, updated in place. Switching to creating a new ProcessorEntity and only populating
relevant fields fixed the issue.

From: Matt Gilman [mailto:matt.c.gilman@gmail.com]
Sent: Tuesday, March 13, 2018 3:09 PM
To: users@nifi.apache.org
Subject: Re: Error when executing NiFi REST API PUT /processors/{id} call

Vitaly,

I believe that error is being generated by Jackson which handles the JSON (de)serialization.
Often times there is additional information that gets logged to your logs/nifi-user.log. Check
there to see if there is anything helpful.

By any chance, are you attempting to pass the status back into the update call? The entity
object holds information about the component (the configuration, the revision, status, permissions,
etc). When performing an update request you only need to pass in the revision (RevisionDTO)
and the configuration (ProcessorDTO). Check out the Developer Tools in your browser to see
various requests in action.

Hope this helps.

Matt

On Tue, Mar 13, 2018 at 2:45 PM, Vitaly Krivoy <Vitaly_Krivoy@jhancock.com<mailto:Vitaly_Krivoy@jhancock.com>>
wrote:



I am trying to update processors for a workflow, which was previously generated from a template
by instantiating it. All work is done from a Java program through NiFi REST API. Template
holds processors in a group. Since I know the template group name and strategy by which NiFi
assigns a new group name when it instantiates a template (“Copy of “ <original group
name in a template>), I find instantiated group by name, get its group id and get list
of processors in the group a ProcessorsEntity object. I then step through the list of processors
contained in ProcessorsEntity, and for each processor set desired properties contained in
 ProcessorEntity and its linked ProcessorDTO and ProcessorConfigDTO classes. I then set ClientId
in the Revison object like this:
proc.getRevision().setClientId(restClient.getClientId());
Here proc is ProcessorEntity and restClient is a custom class which contains all code necessary
to communicate with NiFi REST API.
At this point I am trying to update the processor through PUT/processors/{id} call, passing
it modified data in ProcessorEntity, the same one that I got from ProcessorsEntity and update
in place, rather than updating a copy. I figured that there is no need to do it for a DTO
object.
When I execute PUT/processors/{id} call, I get an exception, which I need the help with. Here
is what I see in Eclipse.
Exception when calling: ProcessorsApi#updateProcessor
Response body: Text '01/01/1970 13:04:02 EST' could not be parsed at index 2 (through reference
chain: org.apache.nifi.web.api.entity.ProcessorEntity["status"]->org.apache.nifi.web.api.dto.status.ProcessorStatusDTO["statsLastRefreshed"])
io.swagger.client.ApiException: Bad Request
               at io.swagger.client.ApiClient.handleResponse(ApiClient.java:1058)
               at io.swagger.client.ApiClient.execute(ApiClient.java:981)
               at io.swagger.client.api.ProcessorsApi.updateProcessorWithHttpInfo(ProcessorsApi.java:707)
               at io.swagger.client.api.ProcessorsApi.updateProcessor(ProcessorsApi.java:692)
               at com.bdss.nifi.trickle.NiFiRestClient.updateProcessor(NiFiRestClient.java:149)
               at com.bdss.nifi.trickle.TemplateConfigurator.configureGroupProcessors(TemplateConfigurator.java:84)
               at com.bdss.nifi.trickle.MdmAzureConfigurator.configureGroup(MdmAzureConfigurator.java:89)
               at com.bdss.nifi.trickle.Deployer.deployTemplate(Deployer.java:52)
               at com.bdss.nifi.trickle.Trickle.main(Trickle.java:132)

Notes:
Everything that begins with com.bdss.nifi.trickle are classes in the Java application which
I am implementing.
To access NiFi REST API I am using this REST client: https://github.com/simplesteph/nifi-api-client-java,
which itself relies on Swagger.

Many thanks for any tips.

STATEMENT OF CONFIDENTIALITY The information contained in this email message and any attachments
may be confidential and legally privileged and is intended for the use of the addressee(s)
only. If you are not an intended recipient, please: (1) notify me immediately by replying
to this message; (2) do not use, disseminate, distribute or reproduce any part of the message
or any attachment; and (3) destroy all copies of this message and any attachments.


STATEMENT OF CONFIDENTIALITY The information contained in this email message and any attachments
may be confidential and legally privileged and is intended for the use of the addressee(s)
only. If you are not an intended recipient, please: (1) notify me immediately by replying
to this message; (2) do not use, disseminate, distribute or reproduce any part of the message
or any attachment; and (3) destroy all copies of this message and any attachments.
Mime
View raw message