Deep-Symmetry / beat-link-trigger

Trigger events and automate shows in response to events on Pioneer CDJs
Eclipse Public License 2.0
427 stars 37 forks source link

Clicking "Show Waveform" can cause the window to stop responding #58

Closed drummerclint closed 5 years ago

drummerclint commented 6 years ago

Version of Beat Link Trigger

0.4.1 preview

Version of Java

1.8.0_161

Version of OS

Win10

The issue you're experiencing

clicking "Show Waveform" for player 2 (CDJ 2000nxs) caused the player status window to become unresponsive. It was showing waveform data but I think because it was unable to to get metadata, it might've caused the unresponsiveness. It's a 4 deck setup so I was using unreliable metadata.

blt.log - Copy.log

Log: 2018-Oct-13 23:50:27 ERROR [org.deepsymmetry.beatlink.data.MetadataFinder:114] - Problem requesting metadata, returning null java.lang.Thread.run
org.deepsymmetry.beatlink.data.MetadataFinder$8.run MetadataFinder.java: 1819 org.deepsymmetry.beatlink.data.MetadataFinder.access$900 MetadataFinder.java: 41 org.deepsymmetry.beatlink.data.MetadataFinder.requestMetadataInternal MetadataFinder.java: 112 org.deepsymmetry.beatlink.dbserver.ConnectionManager.invokeWithClientSession ConnectionManager.java: 194 org.deepsymmetry.beatlink.data.MetadataFinder$1.useClient MetadataFinder.java: 104 org.deepsymmetry.beatlink.data.MetadataFinder$1.useClient MetadataFinder.java: 107 org.deepsymmetry.beatlink.data.MetadataFinder.access$000 MetadataFinder.java: 41 org.deepsymmetry.beatlink.data.MetadataFinder.queryMetadata MetadataFinder.java: 148 org.deepsymmetry.beatlink.dbserver.Client.menuRequestTyped Client.java: 400 org.deepsymmetry.beatlink.dbserver.Client.simpleRequest Client.java: 336 org.deepsymmetry.beatlink.dbserver.Client.sendMessage Client.java: 229 org.deepsymmetry.beatlink.Util.writeFully Util.java: 347 java.nio.channels.Channels$WritableByteChannelImpl.write
java.net.SocketOutputStream.write
java.net.SocketOutputStream.socketWrite
java.net.SocketOutputStream.socketWrite0
java.net.SocketException: Software caused connection abort: socket write error

brunchboy commented 6 years ago

Thanks for the report. The only thing I can see in the log snippet is a problem trying to communicate with the dbserver on a player, which I’d expect with unreliable metadata. None of the classes in that particular section of the log are related to the Player Status window (or even Beat Link Trigger itself).

Can you elaborate on what you mean by the window becoming unresponsive? Did the gear/context menus no longer open, or did metadata updates simply stop happening? Were you able to recover by closing and reopening it, or by going offline and back online?

brunchboy commented 6 years ago

Ah, I just noticed you had uploaded a larger section of the log, even better! But all I see in there are a series of the same problem, so it makes sense why you only quoted one. 😄 It definitely looks like the DJ loaded the same media on all the players, which means they had no buffers left over to talk to Beat Link, which is the risk you take with unreliable metadata. I’d recommend that if you can’t convince DJs to always leave one player turned off as a cold spare, you need to capture metadata caches before the show gets going.

brunchboy commented 5 years ago

Since this seemed to be caused by an underlying metadata retrieval issue (which has changed hugely anyway), and as of #64 there is no longer a Show Waveform Details button to be clicked anyway, I am closing this issue.