Member since
07-29-2020
574
Posts
320
Kudos Received
175
Solutions
My Accepted Solutions
Title | Views | Posted |
---|---|---|
249 | 12-20-2024 05:49 AM | |
285 | 12-19-2024 08:33 PM | |
295 | 12-19-2024 06:48 AM | |
246 | 12-17-2024 12:56 PM | |
239 | 12-16-2024 04:38 AM |
03-20-2024
02:11 AM
2 Kudos
Hi, In 2.0 , the only thing that worked specially if you use out of the box ssl configuration is placing localhost in nifi.web.https.host property. To use the machine FQDN you need to configure new ssl truststore and keystore against that domain.
... View more
03-20-2024
02:07 AM
1 Kudo
Ok, I think I know what you mean now. Basically the GetFile is designed not to take any incoming connection as you can see in the processor documentation: The reason such restriction applies depend on how the processor works. The GetFile is designed as a trigger processor and it executes every time a file is placed in the target path, so providing an incoming relationship (wither through routeOnAttribute or any other processor) will break this rule because that means the GetFile will only work and Get the file when upper stream processor triggers that via sending flowfile which is not what this processor is designed to do. What you need is FetchFile processor given that you know the file you are looking for because this processor takes the full file path and not just a directory.
... View more
03-20-2024
01:39 AM
Hi , can you provide screenshot of the routeonattribute processor properties and relationship tabls configurations ? Also if you can provide a screenshot of the data flow and highlight what is missing? that would be very helpful to the community to pin point what exactly the problem is.
... View more
03-18-2024
01:27 AM
2 Kudos
What kind of processor? most of processors have failure relationship which you can capture and do the error handling of that. If that helps please accept solution. Thanks
... View more
03-18-2024
01:23 AM
1 Kudo
Hi @manishg , Can you be more specific when you say "an error"? is it an error on a processor or is it error in nifi system? if its an error on processor what kind of processor and what kind of error are you getting or working with? Generally speaking, when a processor fails it sends the flowfile to the failure relationship which you can capture and do what is needed to handle this error, however every processor behaves a little different from one another , also the nature of error can sometimes decide what can happen. In my experience I have seen different behaviors as follows: 1- flowfile is sent to the failure relationship which what you expect 2- flowfile is lost even though the failure relationship is captured. this usually happens upon fatal error and\or uncaptured exceptions. 3- flowfile is pushed to the upstream queue and penalize.
... View more
03-15-2024
06:10 AM
Hi @MvZ , Is there a reason why you are using the following config in your jdbc connectionstring: "encrypt=true; trustServerCertificate=false;" Can you try it with the trustServerCertificate set to true instead to see if its going to work? If you dont care about encryption and you are using Nifi and SQL server within the firewall you dont have to provide the above config, but if the SQL server and Nifi live in different domains then I can see why you would configure it as such. In my case I did not have to. The problem with the above setting is that you might need to provide additional info like trustStore and trustStorePassword to validate the SQL server certificate per the following article: https://learn.microsoft.com/en-us/sql/connect/jdbc/connecting-with-ssl-encryption?view=sql-server-ver16 @MattWho, do you know anything about this?
... View more
03-11-2024
07:33 PM
1 Kudo
Hi, This is interesting . It looks trivial initially but its not that simple 🙂 It took me trial and error to get it to work using modify-overwrite-beta because the syntax is different from the shift spec where you reference array element at n index as "n" while in modify-overwrite-beta its "[0]" ! not sure why the difference. So this should work: [
{
"operation": "modify-overwrite-beta",
"spec": {
"iH": {
"[0]": {
"netval": "${netval}"
}
}
}
}
] You can also do it using shift as follows: [
{
"operation": "shift",
"spec": {
"*": {
"0": {
"netval": {
"#${netval}": "&3[&2].&1"
},
"*": "&2[&1].&"
},
"*": "&1[&]"
}
}
}
] If that helps please accept solution. Thanks
... View more
03-11-2024
03:27 AM
1 Kudo
Hi, Can you provide me with sample input so I can test against and verify that its not Result RecordPath issue?
... View more
03-08-2024
06:06 AM
1 Kudo
According to this site its very very old one. They have to upgrade or you cant specify the "encrypt" & "trustServiceCertificate" from your jdbc connection string.
... View more
03-08-2024
04:17 AM
1 Kudo
Hi , Sorry for the delay. I think the confusion arises from the fact that there is a lot that this processor is trying to do. To better understand, lets go through different scenarios. Lets assume my initial input is the following: <?xml version="1.0" encoding="UTF-8"?>
<lookup>
<table >
<tbody>
<Id>1</Id>
</tbody>
<encrich>
</encrich>
</table>
</lookup> While The DatabaseRecordLookupService is configured as follows: Here are the scenarios: 1- Insert Record Fields. Path doesnt exist in the input: Result: Failed to process FlowFile ...: java.lang.NullPointerException 2- Insert Record Fields. Path does exist, Field exists: ...
<encrich>
<EnrichCol/>
</encrich>
... Result: Success and the value will be placed in the Enriched Field : <enrich>
<EnrichCol>SomeValue</EnrichCol>
</enrich> So when using Insert Record Fields, the field has to exist in the input xml under the specified Result Record Path to populate correctly, otherwise you will get an error. Note: If you specify the field name in the path [/table/enrich/EnrichCol] its not going to do anything and it will stay empty. Not sure if this is a bug. 3- Insert Record Fields. Path exists , Field doesnt exist: input <enrich>
</enrich> config Result: a MapRecord will be placed into the specified path. The reason is the field doesnt exist and the result might contain multiple return columns. If you have a list of fields and they are specified they would be inserted accordingly. <enrich>MapRecord[{EnrichCol=SomeValue}]</enrich> 4- Insert Entire Record. Path doesnt exist in the input: input: see original input config: Result: The record will be inserted regardless ( Remember with Insert Rec Fields this will give an error) <?xml version="1.0" encoding="UTF-8"?>
<lookup>
<table>
<tbody>
<Id>1</Id>
</tbody>
<enrich/>
<newPath>
<EnrichCol>SomeValue</EnrichCol>
</newPath>
</table>
</lookup> 5- Insert Entire Record. Path does exist. Field exists: Input: <enrich>
<EnrichCol/>
</enrich> config: Result (similar to scenario # 2): <enrich>
<EnrichCol>SomeValue</EnrichCol>
</enrich> 6- Insert Entire Record , Path exists, field doesnt exist <enrich>
</enrich> Result (Similar to Scenario # 3): <enrich>MapRecord[{EnrichCol=SomeValue}]</enrich> Conclusion: There is definitely an overlap between Insert Entire Fields and Insert Entire Records. The only difference is with Insert Entire Record if the path doesnt exist it will be created regardless, while the Insert Entire Fields will give a Null Exception Error. I can see its a bit confusing and misleading with possible bug when the the full path to the field is specified and exists. I think this processor needs to be broken up into multiple ( at least 2 ) to simplify and avoid this kind of ambiguity and overlap. Single Responsibility Principle really needs to applied here. If that helps please accept solution. Thanks
... View more