[ 
https://issues.apache.org/jira/browse/IGNITE-8547?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16482769#comment-16482769
 ] 

ASF GitHub Bot commented on IGNITE-8547:
----------------------------------------

GitHub user alamar opened a pull request:

    https://github.com/apache/ignite/pull/4042

    IGNITE-8547 Use JVM serialization for enum values with OptimizedMarshaller

    .., avoid deadlock.
    
    Also IGNITE-5087 Enum comparison fails after marshal-unmarshal with 
BinaryMarshaller.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/gridgain/apache-ignite ignite-8547

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/ignite/pull/4042.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #4042
    
----
commit beb2409cfe2045789443d47de735d879961d371e
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-23T09:26:06Z

    GG-12352: Forcible node drop makes cluster instable in some cases.
    Disable forcible node drop by default.

commit 802f18fc250cbae8959192c78bb28dc525ed3cf7
Author: AMRepo <andrey.mashenkov@...>
Date:   2017-06-22T21:24:57Z

    Fix compilation

commit 39d2dec85a3c571dfdb1cd6189b53ae2413a5d22
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-23T10:41:30Z

    Merge branch 'ignite-1.7.12-b2' into ignite-1.8.8
    
    # Conflicts:
    #   modules/core/src/main/java/org/apache/ignite/internal/GridTopic.java
    #   
modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
    #   
modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
    #   
modules/core/src/main/java/org/apache/ignite/internal/managers/communication/IgniteIoTestMessage.java
    #   
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
    #   
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
    #   
modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
    #   
modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskThreadContextKey.java
    #   
modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
    #   
modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java

commit 96445156143b46b664f785b353463dd435ac342d
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-23T10:42:44Z

    Merge remote-tracking branch 'origin/ignite-1.8.8' into ignite-1.8.8
    
    # Conflicts:
    #   
modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java

commit 7c569f15a80ab9301c21011d2c9159e311e46cef
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-23T10:48:10Z

    Merge remote-tracking branch 'origin/ignite-1.8.7.p1' into ignite-1.8.8

commit a64339449be8fa602cab3f2868c5f74004a7b747
Author: Igor Sapego <isapego@...>
Date:   2017-06-23T13:57:49Z

    IGNITE-4370: Implemented writing of batch of parameters for ODBC.
    
    (cherry picked from commit c10be5780589cc84e7929e234e4411d515166e0b)
    (cherry picked from commit d268b32cb252a5f06887d2b803d27ddc20ded95f)

commit cbe5df51c423568782e31245c7f1aa06c9ba3be1
Author: Igor Sapego <isapego@...>
Date:   2017-06-13T16:47:00Z

    IGNITE-5478: ODBC: SQLNumParams now returns number of required parameters.
    
    (cherry picked from commit b1c56a1)
    
    (cherry picked from commit 4a8f295)

commit 9ad513e68b89e907f7db36a3f3f0daca0e5986e6
Author: Igor Sapego <isapego@...>
Date:   2017-06-23T14:06:40Z

    IGNITE-5478: Fix for cherry pick
    
    (cherry picked from commit a2a4ec1ee9794cb542f146a07c6c67002cad444e)

commit bfec212b1ece0e9e791de6dfb642324834fa77ca
Author: AMRepo <andrey.mashenkov@...>
Date:   2017-06-22T21:24:57Z

    Partially reverted GG-12352.

commit 1abc14fdc4e39d8245c3e50fb2cf3d183df08021
Author: AMRepo <andrey.mashenkov@...>
Date:   2017-06-22T21:24:57Z

    Partially reverted GG-12352.

commit cb95f7aa729fda19b4c3b7a5ada903a1e1bc2eab
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-23T16:08:00Z

    Merge remote-tracking branch 'origin/ignite-1.7.12' into ignite-1.7.12

commit f59007f2c1221d8dd22abb0a9692b4abb31e87ad
Author: AMRepo <andrey.mashenkov@...>
Date:   2017-06-22T21:24:57Z

    Partially reverted GG-12352.

commit 2c7d3c03cd36aee4f0985e674f550a62fc64d2db
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-23T17:11:00Z

    Merge branch 'ignite-1.8.8' into ignite-1.9.4
    
    # Conflicts:
    #   
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePreloaderAdapter.java
    #   
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java
    #   
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
    #   
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
    #   
modules/core/src/main/java/org/apache/ignite/internal/processors/security/SecurityUtils.java
    #   
modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
    #   
modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
    #   
modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite3.java
    #   modules/platforms/cpp/odbc-test/src/application_data_buffer_test.cpp
    #   modules/platforms/cpp/odbc-test/src/queries_test.cpp
    #   modules/platforms/cpp/odbc/include/ignite/odbc/common_types.h
    #   modules/platforms/cpp/odbc/include/ignite/odbc/statement.h
    #   modules/platforms/cpp/odbc/src/config/connection_info.cpp
    #   modules/platforms/cpp/odbc/src/diagnostic/diagnostic_record.cpp
    #   modules/platforms/cpp/odbc/src/odbc.cpp
    #   modules/platforms/cpp/odbc/src/query/batch_query.cpp
    #   modules/platforms/cpp/odbc/src/statement.cpp

commit 3e2a8dd7497cc21f9ad176213bcefa35869eb198
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-26T09:27:58Z

    Minor fix for GG-12197 "Ignore events for discarded update in CLOCK mode".

commit 03e507f5021f3aee9728e5cbcbc85ed731e5e538
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-26T16:37:27Z

    Fixed tests.

commit 17b7586a73f6b1179612d601caa38d41924a4fac
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-26T16:38:39Z

    Merge branch 'ignite-1.8.8' into ignite-1.9.4

commit ad6add47b29caf44dadfe2e32acd4d245ee256ab
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-27T07:34:42Z

    Fixed tests.

commit 527c71805ac502290a20c631c8d4484f011f77c2
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-27T07:57:56Z

    Merge branch 'ignite-1.8.8' into ignite-1.9.4

commit 897f4c00c4945eda3f9f4a41d064ded2f6f27ccc
Author: sboikov <sboikov@...>
Date:   2017-06-27T09:55:11Z

    gg-12133 Deadlock for metadata update from GridCacheMapEntry.innerUpdate

commit 90e96db22dbb7a341bfe1a8130b6dc16d5d8ae81
Author: agura <agura@...>
Date:   2017-06-27T11:43:06Z

    Compilation is fixed.

commit 3f33a902ed0d0a3e27be548209fe8e7933da57a9
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-26T09:27:58Z

    Minor fix for GG-12197 "Ignore events for discarded update in CLOCK mode".

commit 3668b91817c1da7958cc3d7c4dddf890a2237772
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-27T07:34:42Z

    Partially reverted GG-12352.

commit 172f41c489c0ca5b7613163cd325b0c01d5b28b1
Author: sboikov <sboikov@...>
Date:   2017-06-27T09:55:11Z

    gg-12133 Deadlock for metadata update from GridCacheMapEntry.innerUpdate
    
    (cherry picked from commit 897f4c0)

commit 0521b7780756788d92bfa35ef00f56b5bb01367d
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-27T17:43:07Z

    GG-12370: Fixed massive NODE_FAILED events lead to excessive momentary 
memory consumption.

commit 6abe5bf5bd732bf9f79df577e159243520dd5c0b
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-28T06:47:45Z

    Fixed compilation.

commit 6b54f991c13efb3630527a3010c4f90105a4fc76
Author: agura <agura@...>
Date:   2017-06-21T16:09:37Z

    ignite-5574 For offheap_tiered cache first try read value from offheap in 
order to avoid redundant synchronization on entry

commit 7d5217260b293b7224340349b5e44792999600f3
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-28T08:47:21Z

    Rethrow handshake exceptions as it done for ConnectionException.

commit 81cdea40743131cac9dae49150c1038073595f7e
Author: Andrey V. Mashenkov <andrey.mashenkov@...>
Date:   2017-06-28T10:00:30Z

    Fixed tests.

commit 473abcafca568c7c898b0b1ae91fe964084fdf43
Author: agura <agura@...>
Date:   2017-06-28T11:49:49Z

    Tests fixed

commit 4f383ae772631987c3f4ac29bb654b4811fbc407
Author: agura <agura@...>
Date:   2017-06-28T11:49:49Z

    Tests fixed.

----


> Deserialization of Enum values as anonymous classes may cause deadlock
> ----------------------------------------------------------------------
>
>                 Key: IGNITE-8547
>                 URL: https://issues.apache.org/jira/browse/IGNITE-8547
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 1.9
>            Reporter: Ilya Kasnacheev
>            Assignee: Ilya Kasnacheev
>            Priority: Major
>         Attachments: MarshallerDeadlockMultiJvmTest.java
>
>
> Due to the following problem:
> {code}
> package jvmtest;
> import java.util.ArrayList;
> import java.util.List;
> import java.util.concurrent.BrokenBarrierException;
> import java.util.concurrent.CyclicBarrier;
> public class LegTypeTest {
>     public static void main(String[] args) throws InterruptedException, 
> BrokenBarrierException {
>         List<Thread> threadList = new ArrayList<>();
>         CyclicBarrier b1 = new CyclicBarrier(16);
>         CyclicBarrier b2 = new CyclicBarrier(17);
>           for (int i = 0; i < 16; i++) {
>               final int ii = i;
>               Thread thread = new Thread(() -> {
>                 try {
>                     b1.await();
>                     if (ii % 2 == 0)
>                         Class.forName("jvmtest.LegTypeTest$E$1");
>                     if (ii % 2 == 1)
>                         Class.forName("jvmtest.LegTypeTest$E");
>                     b2.await();
>                 } catch (Exception e) {
>                     e.printStackTrace();
>                 }
>             });
>             thread.start();
>             threadList.add(thread);
>         }
>         b2.await();
>         for (Thread thread : threadList) {
>               thread.join();
>         }
>     }
>     private enum E {
>         A("A"),
>         B("B") {
>             @Override
>             public String virtual() {
>                 return null;
>             }
>         };
>         private String displayString;
>         E(String displayString) {
>             this.displayString = displayString;
>         }
>         public String virtual() {
>             return displayString;
>         }
>     }
> }
> {code}
> When doing Class.forName on different enum values deadlock can be caused. And 
> that's exactly what OptimizedMarshaller does.
> See also the attached test.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to