jerryshao opened a new issue, #7110:
URL: https://github.com/apache/gravitino/issues/7110
### Version
main branch
### Describe what's wrong
```
TestOwnerMetaService > testDeleteMetadataObject() FAILED
org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause:
org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Unique index or
primary key violation: "PUBLIC.UK_OW_ME_DEL_INDEX_3 ON
PUBLIC.OWNER_META(OWNER_ID, METADATA_OBJECT_ID, METADATA_OBJECT_TYPE,
DELETED_AT) VALUES 25"; SQL statement:
UPDATE owner_meta SET deleted_at = (UNIX_TIMESTAMP() * 1000.0) +
EXTRACT(MICROSECOND FROM CURRENT_TIMESTAMP(3)) / 1000 WHERE owner_id = ? AND
owner_type = ? AND deleted_at = 0 [23505-200]
### The error may exist in
org/apache/gravitino/storage/relational/mapper/OwnerMetaMapper.java (best guess)
### The error may involve
org.apache.gravitino.storage.relational.mapper.OwnerMetaMapper.softDeleteOwnerRelByOwnerIdAndType-Inline
### The error occurred while setting parameters
### SQL: UPDATE owner_meta SET deleted_at = (UNIX_TIMESTAMP() * 1000.0)
+ EXTRACT(MICROSECOND FROM CURRENT_TIMESTAMP(3)) / 1000 WHERE owner_id = ? AND
owner_type = ? AND deleted_at = 0
### Cause: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException:
Unique index or primary key violation: "PUBLIC.UK_OW_ME_DEL_INDEX_3 ON
PUBLIC.OWNER_META(OWNER_ID, METADATA_OBJECT_ID, METADATA_OBJECT_TYPE,
DELETED_AT) VALUES 25"; SQL statement:
UPDATE owner_meta SET deleted_at = (UNIX_TIMESTAMP() * 1000.0) +
EXTRACT(MICROSECOND FROM CURRENT_TIMESTAMP(3)) / 1000 WHERE owner_id = ? AND
owner_type = ? AND deleted_at = 0 [23505-200]
at
org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at
org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:199)
at
org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:67)
at
org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:152)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85)
at jdk.proxy3.$Proxy116.softDeleteOwnerRelByOwnerIdAndType(Unknown
Source)
at
org.apache.gravitino.storage.relational.service.UserMetaService.lambda$deleteUser$12(UserMetaService.java:178)
at
org.apache.gravitino.storage.relational.utils.SessionUtils.doWithoutCommit(SessionUtils.java:105)
at
org.apache.gravitino.storage.relational.service.UserMetaService.lambda$deleteUser$13(UserMetaService.java:175)
at
java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
at
java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
at
org.apache.gravitino.storage.relational.utils.SessionUtils.doMultipleWithCommit(SessionUtils.java:140)
at
org.apache.gravitino.storage.relational.service.UserMetaService.deleteUser(UserMetaService.java:167)
at
org.apache.gravitino.storage.relational.service.TestOwnerMetaService.testDeleteMetadataObject(TestOwnerMetaService.java:516)
Caused by:
org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Unique
index or primary key violation: "PUBLIC.UK_OW_ME_DEL_INDEX_3 ON
PUBLIC.OWNER_META(OWNER_ID, METADATA_OBJECT_ID, METADATA_OBJECT_TYPE,
DELETED_AT) VALUES 25"; SQL statement:
UPDATE owner_meta SET deleted_at = (UNIX_TIMESTAMP() * 1000.0) +
EXTRACT(MICROSECOND FROM CURRENT_TIMESTAMP(3)) / 1000 WHERE owner_id = ? AND
owner_type = ? AND deleted_at = 0 [23505-200]
at
org.h2.message.DbException.getJdbcSQLException(DbException.java:459)
at
org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
at org.h2.message.DbException.get(DbException.java:205)
at org.h2.message.DbException.get(DbException.java:181)
at
org.h2.index.BaseIndex.getDuplicateKeyException(BaseIndex.java:103)
at
org.h2.mvstore.db.MVSecondaryIndex.checkUnique(MVSecondaryIndex.java:221)
at
org.h2.mvstore.db.MVSecondaryIndex.add(MVSecondaryIndex.java:196)
at org.h2.mvstore.db.MVTable.addRow(MVTable.java:531)
at org.h2.table.Table.updateRows(Table.java:523)
at org.h2.command.dml.Update.update(Update.java:225)
at
org.h2.command.CommandContainer.update(CommandContainer.java:198)
at org.h2.command.Command.executeUpdate(Command.java:251)
at
org.h2.jdbc.JdbcPreparedStatement.execute(JdbcPreparedStatement.java:240)
at
org.apache.commons.dbcp2.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:95)
at
org.apache.commons.dbcp2.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:95)
at jdk.internal.reflect.GeneratedMethodAccessor53.invoke(Unknown
Source)
at
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:568)
at
org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)
at jdk.proxy4.$Proxy103.execute(Unknown Source)
at
org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:47)
at
org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)
at
org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50)
at
org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
at
org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
at
org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)
... 12 more
```
This might be due to the time variation is not enough for embedded H2 DB.
### Error message and/or stacktrace
Above
### How to reproduce
Just run this UT will reproduce this issue.
### Additional context
_No response_
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]