#1998 P25 Traffic Channel Manager error ConcurrentModification on Allocated Channels Map, introduced in #1996

This commit is contained in:
Dennis Sheirer
2024-10-02 03:23:20 -04:00
parent 161595e7c8
commit 600db3fb8a

View File

@@ -70,7 +70,6 @@ import java.util.Queue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedTransferQueue;
import java.util.concurrent.locks.ReentrantLock;
import java.util.function.BiConsumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -171,23 +170,21 @@ public class P25TrafficChannelManager extends TrafficChannelManager implements I
try
{
//Shutdown all existing traffic channels and clear the maps.
mAllocatedTrafficChannelMap.forEach(new BiConsumer<Long, Channel>()
{
@Override
public void accept(Long aLong, Channel channel)
{
if(!parentChannel.equals(channel))
{
broadcast(new ChannelEvent(channel, Event.REQUEST_DISABLE));
}
}
});
List<Channel> trafficChannelsToDisable = new ArrayList<>(mAllocatedTrafficChannelMap.values());
mAllocatedTrafficChannelMap.clear();
for(Channel channel : trafficChannelsToDisable)
{
if(!parentChannel.equals(channel))
{
broadcast(new ChannelEvent(channel, Event.REQUEST_DISABLE));
}
}
mTS1ChannelGrantEventMap.clear();
mTS2ChannelGrantEventMap.clear();
//Store the control channel in the allocated channel map so that we don't allocate a traffic channel against it
//Store the current control channel in the allocated channel map so that we don't allocate a traffic channel against it
mAllocatedTrafficChannelMap.put(current, parentChannel);
}
finally