[ https://issues.apache.org/jira/browse/NIFI-4769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16323435#comment-16323435 ]
ASF GitHub Bot commented on NIFI-4769: -------------------------------------- Github user joewitt commented on a diff in the pull request: https://github.com/apache/nifi/pull/2400#discussion_r161127033 --- Diff: nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/processors/azure/storage/utils/AzureStorageUtils.java --- @@ -78,10 +84,15 @@ private AzureStorageUtils() { // do not instantiate } - public static CloudBlobClient createCloudBlobClient(ProcessContext context, ComponentLog logger) { - final String accountName = context.getProperty(AzureStorageUtils.ACCOUNT_NAME).evaluateAttributeExpressions().getValue(); - final String accountKey = context.getProperty(AzureStorageUtils.ACCOUNT_KEY).evaluateAttributeExpressions().getValue(); - final String sasToken = context.getProperty(AzureStorageUtils.PROP_SAS_TOKEN).evaluateAttributeExpressions().getValue(); + /** + * Create CloudBlobClient instance. + * @param flowFile An incoming FlowFile can be used for NiFi Expression Language evaluation to derive + * Account Name, Account Key or SAS Token. This can be null if not available. + */ + public static CloudBlobClient createCloudBlobClient(ProcessContext context, ComponentLog logger, FlowFile flowFile) { + final String accountName = context.getProperty(AzureStorageUtils.ACCOUNT_NAME).evaluateAttributeExpressions(flowFile).getValue(); + final String accountKey = context.getProperty(AzureStorageUtils.ACCOUNT_KEY).evaluateAttributeExpressions(flowFile).getValue(); + final String sasToken = context.getProperty(AzureStorageUtils.PROP_SAS_TOKEN).evaluateAttributeExpressions(flowFile).getValue(); --- End diff -- thanks koji. I am +2 with that then ;) > PutAzureBlobStorage and FetchAzureBlobStorage should be able to use incoming > FlowFile with EL to create connection string > ------------------------------------------------------------------------------------------------------------------------- > > Key: NIFI-4769 > URL: https://issues.apache.org/jira/browse/NIFI-4769 > Project: Apache NiFi > Issue Type: Bug > Components: Extensions > Reporter: Koji Kawamura > Assignee: Koji Kawamura > > The latest change made by NIFI-4005 can break existing flows if Put or Fetch > AzureBlobStorage is configured to use incoming FlowFile attribute with EL for > accountName or accountKey. PutAzureBlobStorage and FetchAzureBlobStorage used > to be able to [specify key and account name from incoming FlowFile using > EL|https://github.com/apache/nifi/pull/1886/files#diff-a1be985cab6af1d412dbb21c5750e42aL76]. > But the change removed that capability mistakenly. > Following error messages are logged if this happens: > {code} > 2018-01-12 09:59:58,445 ERROR [Timer-Driven Process Thread-7] > o.a.n.p.a.storage.PutAzureBlobStorage > PutAzureBlobStorage[id=045a9107-a6f1-363f-bd95-1ba8abd7ee09] Invalid > connection string URI for 'PutAzureBlobStorage': > java.lang.IllegalArgumentException: Invalid connection string. > java.lang.IllegalArgumentException: Invalid connection string. > at > com.microsoft.azure.storage.CloudStorageAccount.parse(CloudStorageAccount.java:249) > at > org.apache.nifi.processors.azure.storage.utils.AzureStorageUtils.createCloudBlobClient(AzureStorageUtils.java:96) > at > org.apache.nifi.processors.azure.storage.PutAzureBlobStorage.onTrigger(PutAzureBlobStorage.java:75) > at > org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27) > at > org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1122) > at > org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:147) > at > org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47) > at > org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:128) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)