JetBrains / rd

Reactive Distributed communication framework for .NET, Kotlin, C++. Inspired by Rider IDE.
Apache License 2.0
386 stars 54 forks source link

Viewable list of immutable lists generate same IDs #204

Open slavam2605 opened 3 years ago

slavam2605 commented 3 years ago

If I have a class with the following member: list("children", immutableList(SomeModel)) and then I add immutable lists to this viewable list, I get such exceptions:

java.lang.IllegalStateException: Value com.jetbrains.rd.platform.codeWithMe.protocol.SecureWireOverStreamTransport$advise$wrapper$1@230e006f already exist for key 972796847982467169
    at com.jetbrains.rd.util.CollectionExKt$blockingPutUnique$1.invoke(CollectionEx.kt:37)
    at com.jetbrains.rd.util.CollectionExKt$blockingPutUnique$1.invoke(CollectionEx.kt)
    at com.jetbrains.rd.util.lifetime.LifetimeDefinition.executeIfAlive(RLifetime.kt:401)
    at com.jetbrains.rd.util.CollectionExKt.blockingPutUnique(CollectionEx.kt:35)
    at com.jetbrains.rd.framework.MessageBroker.adviseOn(MessageBroker.kt:142)
    at com.jetbrains.rd.platform.codeWithMe.protocol.SecureWireOverStreamTransport.advise(SecureWireOverStreamTransport.kt:81)
    at com.jetbrains.rd.framework.base.ExtWire.advise(RdExtBase.kt:175)
    at com.jetbrains.rd.framework.impl.RdCall.init(RdTask.kt:201)
    at com.jetbrains.rd.framework.base.RdBindableBase$bind$4.invoke(RdBindableBase.kt:80)
    at com.jetbrains.rd.framework.base.RdBindableBase$bind$4.invoke(RdBindableBase.kt:18)
    at com.jetbrains.rd.util.reactive.Signal$Companion.priorityAdviseSection(Signal.kt:14)
    at com.jetbrains.rd.framework.base.RdBindableBase.bind(RdBindableBase.kt:79)
    at com.jetbrains.rd.framework.base.IRdBindableKt.bindPolymorphic(IRdBindable.kt:55)
    at com.jetbrains.rd.framework.base.RdBindableBase.init(RdBindableBase.kt:115)
    at com.jetbrains.rd.framework.base.RdBindableBase$bind$4.invoke(RdBindableBase.kt:80)
    at com.jetbrains.rd.framework.base.RdBindableBase$bind$4.invoke(RdBindableBase.kt:18)
    at com.jetbrains.rd.util.reactive.Signal$Companion.priorityAdviseSection(Signal.kt:14)
    at com.jetbrains.rd.framework.base.RdBindableBase.bind(RdBindableBase.kt:79)
    at com.jetbrains.rd.framework.base.IRdBindableKt.bindPolymorphic(IRdBindable.kt:59)
    at com.jetbrains.rd.framework.impl.RdList$init$2.invoke(RdList.kt:74)
    at com.jetbrains.rd.framework.impl.RdList$init$2.invoke(RdList.kt:19)
    at com.jetbrains.rd.util.reactive.IViewableList$view$2.invoke(ViewableCollections.kt:227)
    at com.jetbrains.rd.util.reactive.IViewableList$view$2.invoke(ViewableCollections.kt:152)
    at com.jetbrains.rd.util.reactive.IViewableList$adviseAddRemove$1.invoke(ViewableCollections.kt:187)
    at com.jetbrains.rd.util.reactive.IViewableList$adviseAddRemove$1.invoke(ViewableCollections.kt:152)
    at com.jetbrains.rd.util.reactive.Signal.fire(Signal.kt:31)
    at com.jetbrains.rd.util.reactive.ViewableList.add(ViewableList.kt:25)
    at com.jetbrains.rd.framework.impl.RdList.onWireReceived(RdList.kt:96)
    at com.jetbrains.rd.platform.codeWithMe.protocol.SecureWireOverStreamTransport$advise$wrapper$1.onWireReceived(SecureWireOverStreamTransport.kt:77)
    at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56)
    at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:11)
    at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:151)
    at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:55)
    at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:11)
    at com.jetbrains.rdclient.protocol.RdDispatcher.flushAll(RdDispatcher.kt:96)
    at com.jetbrains.rdclient.protocol.RdDispatcher.access$flushAll(RdDispatcher.kt:17)
    at com.jetbrains.rdclient.protocol.RdDispatcher$flushAllRunnable$1.run(RdDispatcher.kt:22)
    at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:218)
    at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
    at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:200)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:783)
    at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:320)
    at com.intellij.codeWithMe.ClientId$Companion.withClientId(ClientId.kt:135)
    at com.intellij.codeWithMe.ClientId.withClientId(ClientId.kt)
    at com.intellij.openapi.application.impl.FlushQueue.doRun$$$capture(FlushQueue.java:81)
    at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java)
    at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:133)
    at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
    at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:189)
    at java.desktop/java.awt.event.InvocationEvent.dispatch$$$capture(InvocationEvent.java:313)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:898)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:775)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:439)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:808)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:438)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:783)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:486)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
ForNeVeR commented 3 years ago

Is it possible that any of the models in the list are already bound somewhere?