<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic DbSqlSession FlushInserts with Custom Entities in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/dbsqlsession-flushinserts-with-custom-entities/m-p/229978#M183108</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi awesome ppl,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm having a little strange error. I have two custom entities (HistoricProcessInstanceEntity and CommentEntity), when the process is finalized the method DbSqlSession.flushInserts() is called till were it's ok. &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://connect.hyland.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But inside this method(flushInserts), there is a second for that iterates over the insertedObjects keySet to get the object class implementation. When this list of objects was more then one custom entity class, on the second key of the list this error occurs:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;java.util.ConcurrentModificationException: null&lt;BR /&gt; at java.util.HashMap$HashIterator.nextNode(Unknown Source)&lt;BR /&gt; at java.util.HashMap$KeyIterator.next(Unknown Source)&lt;BR /&gt; at org.activiti.engine.impl.db.DbSqlSession.flushInserts(DbSqlSession.java:796)&lt;BR /&gt; at org.activiti.engine.impl.db.DbSqlSession.flush(DbSqlSession.java:611)&lt;BR /&gt; at org.activiti.engine.impl.interceptor.CommandContext.flushSessions(CommandContext.java:212)&lt;BR /&gt; at org.activiti.engine.impl.interceptor.CommandContext.close(CommandContext.java:138)&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is happening because inside the method flushPersistentObjects a remove is done on the insertedObjects list.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using Activiti 5.19.0.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-java line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;protected void flushInserts() {&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;// Handle in entity dependency order&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Class&amp;lt;? extends PersistentObject&amp;gt; persistentObjectClass : EntityDependencyOrder.INSERT_ORDER) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (insertedObjects.containsKey(persistentObjectClass)) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;flushPersistentObjects(persistentObjectClass, insertedObjects.get(persistentObjectClass));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Next, in case of custom entities or we've screwed up and forgotten some entity&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (insertedObjects.size() &amp;gt; 0) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Class&amp;lt;? extends PersistentObject&amp;gt; persistentObjectClass : insertedObjects.keySet()) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;flushPersistentObjects(persistentObjectClass, insertedObjects.get(persistentObjectClass));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; insertedObjects.clear();&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;protected void flushPersistentObjects(Class&amp;lt;? extends PersistentObject&amp;gt; persistentObjectClass, List&amp;lt;PersistentObject&amp;gt; persistentObjectsToInsert) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (persistentObjectsToInsert.size() == 1) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;flushRegularInsert(persistentObjectsToInsert.get(0), persistentObjectClass);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (Boolean.FALSE.equals(dbSqlSessionFactory.isBulkInsertable(persistentObjectClass))) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;for (PersistentObject persistentObject : persistentObjectsToInsert) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;flushRegularInsert(persistentObject, persistentObjectClass);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;else {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;flushBulkInsert(insertedObjects.get(persistentObjectClass), persistentObjectClass);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; insertedObjects.remove(persistentObjectClass);&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Dunno if i can change anything or call something before this custom entities inserts. To solve this problem.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 14 Mar 2016 17:08:44 GMT</pubDate>
    <dc:creator>goodboy</dc:creator>
    <dc:date>2016-03-14T17:08:44Z</dc:date>
    <item>
      <title>DbSqlSession FlushInserts with Custom Entities</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/dbsqlsession-flushinserts-with-custom-entities/m-p/229978#M183108</link>
      <description>Hi awesome ppl,I'm having a little strange error. I have two custom entities (HistoricProcessInstanceEntity and CommentEntity), when the process is finalized the method DbSqlSession.flushInserts() is called till were it's ok. &lt;IMG id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://migration33.stage.lithium.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;But inside this method(flushInserts), there is a second for that iterate</description>
      <pubDate>Mon, 14 Mar 2016 17:08:44 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/dbsqlsession-flushinserts-with-custom-entities/m-p/229978#M183108</guid>
      <dc:creator>goodboy</dc:creator>
      <dc:date>2016-03-14T17:08:44Z</dc:date>
    </item>
    <item>
      <title>Re: DbSqlSession FlushInserts with Custom Entities</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/dbsqlsession-flushinserts-with-custom-entities/m-p/229979#M183109</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;You're correct .. there shouldn't be a remove for the second one. Fixed here: &lt;/SPAN&gt;&lt;A href="https://github.com/Activiti/Activiti/commit/b03e48f7f0adf970c67b37c2e4a6924ed36ce569" rel="nofollow noopener noreferrer"&gt;https://github.com/Activiti/Activiti/commit/b03e48f7f0adf970c67b37c2e4a6924ed36ce569&lt;/A&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Mar 2016 11:24:45 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/dbsqlsession-flushinserts-with-custom-entities/m-p/229979#M183109</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2016-03-15T11:24:45Z</dc:date>
    </item>
    <item>
      <title>Re: DbSqlSession FlushInserts with Custom Entities</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/dbsqlsession-flushinserts-with-custom-entities/m-p/229980#M183110</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;&lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://connect.hyland.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks! Joram&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Mar 2016 12:04:35 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/dbsqlsession-flushinserts-with-custom-entities/m-p/229980#M183110</guid>
      <dc:creator>goodboy</dc:creator>
      <dc:date>2016-03-15T12:04:35Z</dc:date>
    </item>
  </channel>
</rss>

