hypfvieh / dbus-java

Improved version of java DBus library provided by freedesktop.org (https://dbus.freedesktop.org/doc/dbus-java/)
https://hypfvieh.github.io/dbus-java/
MIT License
180 stars 72 forks source link

Properties Get method endless waiting #243

Closed nihasmata closed 2 months ago

nihasmata commented 9 months ago

Hi,

I use the DBUS for remote media player control. Problem is that dbus connection is created succesfully, but when stop the remote media player then Properties.Get method waits endless. Please check the following code snippets.

DBusConnection dBusConnection =  DBusConnectionBuilder.forAddress(AppUtility.getDBusTcpconnectionString(ip,port)).build();

Properties properties = dBusConnection.getRemoteObject(busProperties.getBusName(),busProperties.getObjectPath(), Properties.class);

String playbackStatus = properties.Get(BusConstants.MPRIS_BUS_NAME, MprisConstants.PLAYBACK_STATUS);

Why i cannot get any exception in here ? How to sure that there is no remote object in there ?

hypfvieh commented 9 months ago

Can you please provide a full example and description of your issue?

I tried to reproduce this but I don't see any misbehavior.

When using VLC and DBus using UnixSockets, I can neither see the properties.Get will block for a noticeable amount of time nor does it block when VLC is closed. Instead I see a exception from dbus-java that the requested object is not found on the bus. This is the expected behavior because the object provided by VLC is disappearing when VLC is closed.

I tried a second setup using EmbeddedDBusDaemon running a TCP based DBus server, using a client from another thread connecting to this daemon and requesting a property. Then, after 5 seconds from a timer thread the exported object on the bus will be unexported (behaves like VLC app closed) - same result as above. After the unexport I get an exception that the object is not available on the bus. No blocking, no strange or unintended behavior.

So without a proper example and a description of your complete setup it is impossible to check if this is an issue with dbus-java or an issue in your setup/code.