
|
If you were logged in you would be able to see more operations.
|
|
|
uPortal
Created: 15/Nov/04 10:50 AM
Updated: 03/Jul/07 04:10 PM
|
|
| Component/s: |
Framework
|
| Affects Version/s: |
2.4.1
|
| Fix Version/s: |
2.4.2
|
|
|
Original Estimate:
|
Unknown
|
Remaining Estimate:
|
Unknown
|
Time Spent:
|
Unknown
|
|
Environment:
|
Operating System: All
Platform: All
Operating System: All
Platform: All
|
|
|
> 2) When the ChannelManager swaps out a channel for the CError channel, the
> end session events never propagate to the original channel. This was
> particularly bad with the CPortletChannel channel which keeps a static Map
> for ChannelState objects. Luckily all my portlets on the "Portlet Examples"
> tab weren't configurated and all failed .. which uncovered it.
>
> We could add a method to CError to retrieve the "the_channel" attribute,
> then have ChannelManager propagate the SESSION_DONE event (or others??).
------- Additional Comment #1 From Nick Bolton 2004-11-13 09:30 -------
There is similar behavor with CSecureInfo. Both CSecureInfo and CError should
implement receiveEvent and pass events they receive along to the channels they
hold.
|
|
Description
|
> 2) When the ChannelManager swaps out a channel for the CError channel, the
> end session events never propagate to the original channel. This was
> particularly bad with the CPortletChannel channel which keeps a static Map
> for ChannelState objects. Luckily all my portlets on the "Portlet Examples"
> tab weren't configurated and all failed .. which uncovered it.
>
> We could add a method to CError to retrieve the "the_channel" attribute,
> then have ChannelManager propagate the SESSION_DONE event (or others??).
------- Additional Comment #1 From Nick Bolton 2004-11-13 09:30 -------
There is similar behavor with CSecureInfo. Both CSecureInfo and CError should
implement receiveEvent and pass events they receive along to the channels they
hold. |
Show » |
|
I've verified that adding the receiveEvent method to CError channel fixes
the CM leak.
public void receiveEvent(PortalEvent ev) {
if (the_channel != null) { the_channel.receiveEvent(ev); }
super.receiveEvent(ev);
}
Let me know if that works for you too.
-nick