Oh, sorry, I was wrong. Concurrent collections in Scala are available since
2.8. Any objections against replacing mutable list and synchronized with a
concurrent collection like or based on TrieMap for instance?

On Wed, Jun 28, 2017, 16:05 Oleksandr Vayda <oleksandr.va...@gmail.com>
wrote:

> Cool. I will be happy to create a PR. The simplest and most obvious
> solution that came to my mind was using Java concurrent collections instead
> of Scala mutable. Don't you mind to have this bit of Java inside Spark? :)
> Or perhaps we could use Scala concurrent collections, but they are only
> available in Scala 2.12 AFAIK.
>
> Alex
>
> On Tue, Jun 27, 2017, 05:42 Shixiong(Ryan) Zhu <shixi...@databricks.com>
> wrote:
>
>> Right now they are safe because the caller also calls synchronized when
>> using them. This is to avoid copying objects. It's probably a bad design.
>> If you want to refactor them, PR is welcome.
>>
>> On Mon, Jun 26, 2017 at 2:27 AM, Oleksandr Vayda <
>> oleksandr.va...@gmail.com> wrote:
>>
>>> Hi all,
>>>
>>> Reading the source code of the org.apache.spark.sql.execution.ui.
>>> SQLListener, specifically this place -
>>> https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/ui/SQLListener.scala#L328
>>>
>>> def getFailedExecutions: Seq[SQLExecutionUIData] = synchronized {
>>> failedExecutions
>>> }
>>> def getCompletedExecutions: Seq[SQLExecutionUIData] = synchronized {
>>> completedExecutions
>>> }
>>> I believe the synchronized block is used here incorrectly. If I get it
>>> right the main purpose here is to synchronize access to the mutable
>>> collections from the UI (read) and the event bus (read/write) threads. But
>>> in the current implementation the "synchronized" blocks return bare
>>> references to mutable collections and in fact nothing gets synchronized.
>>> Is it a bug?
>>>
>>> Sincerely yours,
>>> Oleksandr Vayda
>>>
>>> mobile: +420 604 113 056 <+420%20604%20113%20056>
>>>
>>
>>

Reply via email to