[ https://issues.apache.org/jira/browse/METRON-1790?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16645110#comment-16645110 ]
ASF GitHub Bot commented on METRON-1790: ---------------------------------------- Github user nickwallen commented on a diff in the pull request: https://github.com/apache/metron/pull/1208#discussion_r224110745 --- Diff: metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts --- @@ -81,26 +81,28 @@ export class PcapPanelComponent implements OnInit, OnDestroy { this.pdml = null; this.progressWidth = 0; this.errorMsg = null; - this.submitSubscription = this.pcapService.submitRequest(pcapRequest).subscribe((submitResponse: PcapStatusResponse) => { - let id = submitResponse.jobId; - if (!id) { - this.errorMsg = submitResponse.description; - this.queryRunning = false; - } else { - this.startPolling(id); + this.subscriptions['submitSubscription'] = this.pcapService.submitRequest(pcapRequest).subscribe( + (submitResponse: PcapStatusResponse) => { + let id = submitResponse.jobId; + if (!id) { + this.errorMsg = submitResponse.description; + this.queryRunning = false; + } else { + this.startPolling(id); + } + }, (error: any) => { + this.errorMsg = `Response message: ${error.message}. Something went wrong with your query submission!`; --- End diff -- Why do we not need to unsubscribe here like we do for 'statusSubscription' and 'cancelSubscription'? ``` this.subscriptions['submitSubscription'].unsubscribe(); ``` > Unsubscribe from every observable in the pcap panel UI component > ---------------------------------------------------------------- > > Key: METRON-1790 > URL: https://issues.apache.org/jira/browse/METRON-1790 > Project: Metron > Issue Type: Improvement > Reporter: Tamas Fodor > Assignee: Tamas Fodor > Priority: Minor > > There are a lot of http requests performed in the pcap panel ui component and > we just unsubscribe from some of them when the component is no longer > rendered on the screen. It could cause memory consumption issues. Because of > the active subscriptions, the garbage collector is not able to remove these > objects from the memory, however they're not needed to be there anymore. > There's another benefit of unsubscribing from these http calls. If the user > leaves the pcap tab but there are pending requests, the unsubscribe method > cancels the active xhrs immediately so it won't wait for fulfilment > unnecessarily. > [https://github.com/apache/metron/blob/master/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts#L54] > I would also refactor that part when we convert an observable to a promise. I > would keep it as an observable. By doing this, we would be able to > unsubscribe from it as well in the destructor method. Promises are not > cancelable. > [https://github.com/apache/metron/blob/master/metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts#L70] > Resources: > [https://angular.io/guide/lifecycle-hooks#ondestroy] > This is the place to free resources that won't be garbage collected > automatically. Unsubscribe from Observables and DOM events. Stop interval > timers. -- This message was sent by Atlassian JIRA (v7.6.3#76005)