[
https://issues.apache.org/jira/browse/METRON-1790?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16645111#comment-16645111
]
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_r224114432
--- Diff:
metron-interface/metron-alerts/src/app/pcap/pcap-panel/pcap-panel.component.ts
---
@@ -35,40 +35,40 @@ export class PcapPanelComponent implements OnInit,
OnDestroy {
pdml: Pdml = null;
pcapRequest: PcapRequest;
resetPaginationForSearch: boolean;
-
- statusSubscription: Subscription;
- cancelSubscription: Subscription;
- submitSubscription: Subscription;
- getSubscription: Subscription;
queryRunning = false;
queryId: string;
progressWidth = 0;
pagination: PcapPagination = new PcapPagination();
savedPcapRequest: {};
errorMsg: string;
cancelConfirmMessage = 'Are you sure want to cancel the running query?';
+ subscriptions: {
+ [key: string]: Subscription
+ } = {};
constructor(private pcapService: PcapService) { }
ngOnInit() {
this.pcapRequest = new PcapRequest();
- this.pcapService.getRunningJob().subscribe((statusResponses:
PcapStatusResponse[]) => {
+ this.subscriptions['runningJobSubscription'] =
this.pcapService.getRunningJob().subscribe((statusResponses:
PcapStatusResponse[]) => {
--- End diff --
Why do we never see an unsubscribe for 'runningJobSubscription'?
> 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)