Skip to content

Conversation

@damencho
Copy link
Member

We saw that in the brewery connection, but it can happen and for the client connection to the room.

java.lang.NullPointerException: Cannot invoke "Object.hashCode()" because "key" is null
at java.base/java.util.concurrent.ConcurrentHashMap.replaceNode(ConcurrentHashMap.java:1111)
at java.base/java.util.concurrent.ConcurrentHashMap.remove(ConcurrentHashMap.java:1102)
at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.removeNodeInformationProvider(ServiceDiscoveryManager.java:387)
at net.java.sip.communicator.impl.protocol.jabber.ScServiceDiscoveryManager.stop(ScServiceDiscoveryManager.java:680)
at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.disconnectAndCleanConnection(ProtocolProviderServiceJabberImpl.java:1529)
at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.unregisterInternal(ProtocolProviderServiceJabberImpl.java:1581)
at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.unregisterInternal(ProtocolProviderServiceJabberImpl.java:1559)
at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.unregister(ProtocolProviderServiceJabberImpl.java:1541)
at net.java.sip.communicator.plugin.reconnectplugin.PPReconnectWrapper.unregister(PPReconnectWrapper.java:365)
at net.java.sip.communicator.plugin.reconnectplugin.PPReconnectWrapper.reconnect(PPReconnectWrapper.java:348)
at net.java.sip.communicator.plugin.reconnectplugin.PPReconnectWrapper.registrationStateChanged(PPReconnectWrapper.java:219)

Null is EntityCapsManager.currentCapsVersion and that is initialized on any CapabilitiesChanged, and EntityCapsManager always add a feature when enableEntityCaps is called. enableEntityCaps is called before adding the listener for CapabilitiesChanged and the add feature is executed in a blocking thread.

We saw that in the brewery connection, but it can happen and for the client connection to the room.

java.lang.NullPointerException: Cannot invoke "Object.hashCode()" because "key" is null
	at java.base/java.util.concurrent.ConcurrentHashMap.replaceNode(ConcurrentHashMap.java:1111)
	at java.base/java.util.concurrent.ConcurrentHashMap.remove(ConcurrentHashMap.java:1102)
	at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.removeNodeInformationProvider(ServiceDiscoveryManager.java:387)
	at net.java.sip.communicator.impl.protocol.jabber.ScServiceDiscoveryManager.stop(ScServiceDiscoveryManager.java:680)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.disconnectAndCleanConnection(ProtocolProviderServiceJabberImpl.java:1529)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.unregisterInternal(ProtocolProviderServiceJabberImpl.java:1581)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.unregisterInternal(ProtocolProviderServiceJabberImpl.java:1559)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.unregister(ProtocolProviderServiceJabberImpl.java:1541)
	at net.java.sip.communicator.plugin.reconnectplugin.PPReconnectWrapper.unregister(PPReconnectWrapper.java:365)
	at net.java.sip.communicator.plugin.reconnectplugin.PPReconnectWrapper.reconnect(PPReconnectWrapper.java:348)
	at net.java.sip.communicator.plugin.reconnectplugin.PPReconnectWrapper.registrationStateChanged(PPReconnectWrapper.java:219)

Null is EntityCapsManager.currentCapsVersion and that is initialized on any CapabilitiesChanged, and EntityCapsManager always add a feature when enableEntityCaps is called. enableEntityCaps is called before adding the listener for CapabilitiesChanged and the add feature is executed in a blocking thread.
@codecov
Copy link

codecov bot commented Oct 27, 2025

Codecov Report

❌ Patch coverage is 0% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 18.94%. Comparing base (3bb4143) to head (e7fca82).
⚠️ Report is 3 commits behind head on master.

Files with missing lines Patch % Lines
src/main/java/org/jitsi/jigasi/JvbConference.java 0.00% 2 Missing ⚠️
...org/jitsi/jigasi/xmpp/CallControlMucActivator.java 0.00% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff              @@
##             master     #609      +/-   ##
============================================
- Coverage     19.26%   18.94%   -0.32%     
+ Complexity      312      305       -7     
============================================
  Files            83       83              
  Lines          7179     7183       +4     
  Branches        953      955       +2     
============================================
- Hits           1383     1361      -22     
- Misses         5567     5596      +29     
+ Partials        229      226       -3     
Files with missing lines Coverage Δ
...org/jitsi/jigasi/xmpp/CallControlMucActivator.java 11.87% <0.00%> (-0.05%) ⬇️
src/main/java/org/jitsi/jigasi/JvbConference.java 32.29% <0.00%> (-1.07%) ⬇️

... and 7 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3bb4143...e7fca82. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@damencho damencho merged commit 1e9d01b into master Oct 27, 2025
3 of 5 checks passed
@damencho damencho deleted the fix-npe-unregister branch October 27, 2025 19:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants