[
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)