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:[email protected]] Sent: Tuesday, March 13, 2018 3:09 PM To: [email protected] 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 <[email protected]<mailto:[email protected]>> 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.
