You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by "Momo Adc (Jira)" <ji...@apache.org> on 2020/01/09 13:44:00 UTC

[jira] [Updated] (NIFI-6996) ConsumeWindowsEventLog leads to a stackoverflow when subscription fails

     [ https://issues.apache.org/jira/browse/NIFI-6996?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Momo Adc updated NIFI-6996:
---------------------------
    External issue URL:   (was: https://issues.apache.org/jira/browse/NIFI-6507)

> ConsumeWindowsEventLog leads to a stackoverflow when subscription fails
> -----------------------------------------------------------------------
>
>                 Key: NIFI-6996
>                 URL: https://issues.apache.org/jira/browse/NIFI-6996
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: 1.10.0
>            Reporter: Momo Adc
>            Priority: Major
>
>  
> The ConsumeWindowsEvenLog processor causes a stack overflow when it fails to subscribe to a log.
> Sadly I cannot provide logs (working under an NDA).
> Since I cannot provide logs I will try to describe the flow:
> 1. isSubscribed function is called and the subscription fails (line 242)
> 2. isSubscribed calls unsubscribe function (line 250)
> 3. unsubscribe function calls isSubscribed (line 290)
> 4. repeat
>  
> The second line causes the issue:
>  
> {code:java}
> private boolean isSubscribed() {
>     final boolean subscribed = subscriptionHandle != null && subscriptionHandle.getPointer() != null;
>     final boolean subscriptionFailed = evtSubscribeCallback != null
>         && ((EventSubscribeXmlRenderingCallback) evtSubscribeCallback).isSubscriptionFailed();
>     final boolean subscribing = subscribed && !subscriptionFailed;
>     getLogger().debug("subscribing? {}, subscribed={}, subscriptionFailed={}", new Object[]{subscribing, subscribed, subscriptionFailed});
>     if (subscriptionFailed) {
>         getLogger().info("Canceling a failed subscription.");
>         unsubscribe();
>     }
>     return subscribing;
> }{code}
> If evtSubscribeCallback is null we're stuck in a stackoverflow, the isSubscriptionFailed function in EventSubscribeXmlRenderingCallback returns a boolean called subscriptionFailed which is private and set to true when it fails to subscribe, nowhere in the class is it set back to false.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)