Controller service is instantiated from template. After instantiation, controller service config is updated to overwrite jdbcurl, username and password etc.
Below is snippet of code to enable controller service: Optional<ControllerServiceEntity> oriConnPoolEntity = getConnPoolById(apiBaseUrl, clientId, connectionPoolId);//returns ControllerServiceEntity using connection pool identifier ControllerServiceEntity connectionPoolIn = oriConnPoolEntity.get(); connectionPoolIn.getComponent().setState(state); ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(Include.NON_NULL); String entityJsonString = null; try { entityJsonString = mapper.writeValueAsString(connectionPoolIn); HttpResponse httpResponse = HttpUtil.putRequest(apiUrl, entityJsonString); … Do you think putRequest call here is going to update whole config (including masked password?) while updating the state? Thanks, Ravi Papisetti From: Arpit Gupta <ar...@hortonworks.com> Reply-To: "users@nifi.apache.org" <users@nifi.apache.org> Date: Thursday, 13 July 2017 at 4:51 PM To: "users@nifi.apache.org" <users@nifi.apache.org> Subject: Re: Failed to create dbcp connection pool - using nifi API Hi Ravi How are you issuing the call to enable the controller service? One thing that could be happening is that the call to enable the controller service is also sending the password. Response returned when you create a controller service returns a masked password. So if this response content was then used to issue an update to enable the controller service then it would set the password to the masked value which would then end up being wrong. -- Arpit On Jul 13, 2017, at 2:20 PM, Ravi Papisetti (rpapiset) <rpapi...@cisco.com<mailto:rpapi...@cisco.com>> wrote: NiFi Version 1.3 Creating DBCPConnection Pool "/nifi-api/process-groups/" + processorGrpId + "/controller-services" using nifi 1.3 client. Below is snippet of code updating properties of connection pool service String apiUrl = apiBaseUrl + "/nifi-api/controller-services/" + connectionPoolId; HttpResponse httpResponse = HttpUtil.putRequest(apiUrl, entityJsonString); entityJsonString has all the configuration set along with password. Here I can see controller entity service with password set. However when QueryDatabaseTable (or any other sql processor) is started, it fails with Processor exception: Cannot create PoolableConnectionFactory (FATAL: password authentication failed for user "xxxxx") I logged into web UI, updated connection pool service manually and it works fine. Same password is used via api and in UI. Wondering why the password set using API didn't work, but works when the same password set using NiFi Web UI. Appreciate any help. Thanks, Ravi Papisetti