Uploaded image for project: 'S2Container'
  1. S2Container
  2. CONTAINER-430

[S2JDBC] 同じエンティティに対する最初の問い合わせが複数のスレッドから同時に行われると NullPointerException が発生する問題を修正しました。

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.4.43
    • Fix Version/s: 2.4.44
    • Component/s: S2JDBC
    • Labels:
      None

      Description

      [S2JDBC] 同じエンティティに対する最初の問い合わせが複数のスレッドから同時に行われると NullPointerException が発生する。

      Caused by: java.lang.NullPointerException
      	at javassist.CtClassType.getFieldsCache(CtClassType.java:784)
      	at javassist.CtClassType.getDeclaredFields(CtClassType.java:770)
      	at org.seasar.framework.util.ClassUtil.getDeclaredFields(ClassUtil.java:361)
      	at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.getFields(EntityMetaFactoryImpl.java:243)
      	at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.doPropertyMeta(EntityMetaFactoryImpl.java:213)
      	at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.createEntityMeta(EntityMetaFactoryImpl.java:142)
      	at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.getEntityMetaInternal(EntityMetaFactoryImpl.java:117)
      	at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.checkMappedBy(EntityMetaFactoryImpl.java:308)
      	at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.resolveRelationship(EntityMetaFactoryImpl.java:285)
      	at org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl.getEntityMeta(EntityMetaFactoryImpl.java:97)
      	at org.seasar.extension.jdbc.query.AutoSelectImpl.prepareEntityMeta(AutoSelectImpl.java:513)
      	at org.seasar.extension.jdbc.query.AutoSelectImpl.prepareTarget(AutoSelectImpl.java:369)
      	at org.seasar.extension.jdbc.query.AutoSelectImpl.prepare(AutoSelectImpl.java:352)
      	at org.seasar.extension.jdbc.query.AbstractSelect.getSingleResult(AbstractSelect.java:179)
      

      Javassist 3.4.0 の CtClassType がスレッドセーフになっていないのが原因 (3.14.0 では修正されていた) だが、Seasar2 側で排他制御する。

        Attachments

          Activity

            People

            • Assignee:
              koichik koichik
              Reporter:
              koichik koichik
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: