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

Massimiliano Perrone commented on SYNCOPE-21:
---------------------------------------------

Hi guys,
after downloading Activiti5.9 source, our workflow engine, I debugged to 
understand the root cause of this issue.

Activiti has follow Java Class:

public class GetNextIdBlockCmd implements Command<IdBlock> {
  
  private static final long serialVersionUID = 1L;
  protected int idBlockSize;
  
  public GetNextIdBlockCmd(int idBlockSize) {
    this.idBlockSize = idBlockSize;
  }

  public IdBlock execute(CommandContext commandContext) {
    PropertyEntity property = (PropertyEntity) commandContext
      .getPropertyManager()
      .findPropertyById("next.dbid");
    long oldValue = Long.parseLong(property.getValue());
    long newValue = oldValue+idBlockSize;
    property.setValue(Long.toString(newValue));
    return new IdBlock(oldValue, newValue-1);
  }
}

This class uses a ACT_GE_PROPERTY table to retrieve "next.dbid":

SELECT * FROM ACT_GE_PROPERTY;

NAME_              VALUE_       REV_  
schema.version     5.9  1
schema.history    create(5.9)   1
next.dbid       101       2
historyLevel      2                     1

So, in my opinion, the problem is that ImportExport Syncope Class doesn't 
export this table :)

// these tables must be ignored
                if (!tableName.toUpperCase().startsWith("QRTZ_")
                        && !tableName.toUpperCase().equals("ACT_GE_PROPERTY")) {

                    tableNames.add(tableName);
                }
                
> ACT_HI_ACTINST:Unique index or primary key violation on non-empty database
> --------------------------------------------------------------------------
>
>                 Key: SYNCOPE-21
>                 URL: https://issues.apache.org/jira/browse/SYNCOPE-21
>             Project: Syncope
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.1-incubating
>         Environment: Console in embedded mode.
>            Reporter: fabio martelli
>            Assignee: Massimiliano Perrone
>            Priority: Critical
>              Labels: workflow
>
> When starting with an empty database, Activiti just creates its own tables 
> and everything goes smooth: when, instead, the database is already populated 
> (including Activiti tables), an exception is thrown, reported below.
> I can guess that this is happening because there is a sort of incremental 
> mechanism for generating ids that does not take into account existing rows on 
> ACT_HI_ACTINST table.
> org.apache.ibatis.exceptions.PersistenceException:
> Error updating database. Cause: 
> org.apache.openjpa.lib.jdbc.ReportingSQLException: Unique index or primary 
> key violation: "PRIMARY_KEY_FB0 ON PUBLIC.ACT_HI_ACTINST(ID_)"; SQL statement:
> insert into ACT_HI_ACTINST (
> ID_,
> PROC_DEF_ID_,
> PROC_INST_ID_,
> EXECUTION_ID_,
> ACT_ID_,
> ACT_NAME_,
> ACT_TYPE_,
> ASSIGNEE_,
> START_TIME_,
> END_TIME_,
> DURATION_
> ) values (
> ?,
> ?,
> ?,
> ?,
> ?,
> ?,
> ?,
> ?,
> ?,
> ?,
> ?
> ) [23505-164] {prepstmnt 2118016446 insert into ACT_HI_ACTINST ( ID_, 
> PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, ACT_ID_, ACT_NAME_, ACT_TYPE_, 
> ASSIGNEE_, START_TIME_, END_TIME_, DURATION_ ) values ( ?, ?, ?, ?, ?, ?, ?, 
> ?, ?, ?, ? ) [params=?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?]} [code=23505, 
> state=23505]
> at 
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:247)
>  ~[openjpa-all-2.2.0.jar:2.2.0]
> at 
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:223)
>  ~[openjpa-all-2.2.0.jar:2.2.0]
> at 
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$1000(LoggingConnectionDecorator.java:72)
>  ~[openjpa-all-2.2.0.jar:2.2.0]
> at 
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.execute(LoggingConnectionDecorator.java:1258)
>  ~[openjpa-all-2.2.0.jar:2.2.0]
> at 
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:367)
>  ~[openjpa-all-2.2.0.jar:2.2.0]
> at 
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.execute(JDBCStoreManager.java:1768)
>  ~[openjpa-all-2.2.0.jar:2.2.0]
> at 
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:367)
>  ~[openjpa-all-2.2.0.jar:2.2.0]
> at 
> org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:22)
>  ~[mybatis-3.0.6.jar:3.0.6]
> at 
> org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:51)
>  ~[mybatis-3.0.6.jar:3.0.6]
> at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:29) 
> ~[mybatis-3.0.6.jar:3.0.6]
> at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:88) 
> ~[mybatis-3.0.6.jar:3.0.6]
> at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:43) 
> ~[mybatis-3.0.6.jar:3.0.6]
> at 
> org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:122)
>  ~[mybatis-3.0.6.jar:3.0.6]
> ... 90 common frames omitted
> 16:46:49.775 ERROR

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to