You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When performing a Push and then closing a channel, the timeout work item never releases the Push due to the strong retaining of self on Line 240 of Push.swift
/// Setup and start the Timeout timer.
let workItem = DispatchWorkItem { in
self.trigger("timeout", payload: [:])
}
changing this closure to use [weak self] resolves the issue
/// Setup and start the Timeout timer.
let workItem = DispatchWorkItem { [weak self] in
self?.trigger("timeout", payload: [:])
}
Screenshots:
Happy to investigate further if I'm in the wrong here. Cheers
The text was updated successfully, but these errors were encountered:
Finally getting around to looking into this. Turns out if you add [weak self] to the callback, then the callback is deallocated regardless unless you hold on to a reference of the Push when sending it, meaning a legit timeout won't be handled successfully.
channel
.push("event", payload:["foo":"bar"]).receive("timeout", callback:{(_)in
timeoutCallsCount +=1})
fakeClock.tick(channel.timeout /2)expect(timeoutCallsCount).to(equal(0))
fakeClock.tick(channel.timeout)expect(timeoutCallsCount).to(equal(1)) // <- this will be 0 if [weak self] is added
When performing a Push and then closing a channel, the timeout work item never releases the Push due to the strong retaining of self on Line 240 of Push.swift
changing this closure to use [weak self] resolves the issue
Screenshots:
Happy to investigate further if I'm in the wrong here. Cheers
The text was updated successfully, but these errors were encountered: