DependencyTrack / DependencyTrack/dependency-track
BOM Upload failure on 4.10 but not 4.8.2
- Dominant language
- Java
- Stars
- 4.2k
- Forks
- 811
- Avg merge
- 8h 39m
- Merged PRs (30d)
- 237
Description
### Current Behavior
BOM upload is failing on 4.10 but not on 4.8.2. My webhook is informed of the problem:
BOM processing failure notification from "hello 5", BOM format is "CycloneDX", "1.4", cause is "Insert of object \"org.dependencytrack.model.ProjectMetadata@8d67e8d\" using statement \"INSERT INTO PROJECT_METADATA (AUTHORS,PROJECT_ID,SUPPLIER) VALUES (?,?,?)\" failed : Unique index or primary key violation: \"PUBLIC.PROJECT_METADATA_PROJECT_ID_IDX_INDEX_3 ON PUBLIC.PROJECT_METADATA(PROJECT_ID NULLS FIRST) VALUES ( /* 9 */ CAST(5 AS BIGINT) )\"; SQL statement:\nINSERT INTO PROJECT_METADATA (AUTHORS,PROJECT_ID,SUPPLIER) VALUES (?,?,?) [23505-224]"
The D-T API logs show
```
2023-12-18 21:22:25,674 WARN [Persist] Insert of object "org.dependencytrack.model.ProjectMetadata@4688ac8e" using statement "INSERT INTO PROJECT_METADATA (AUTHORS,PROJECT_ID,SUPPLIER) VALUES (?,?,?)" failed : Unique index or primary key violation: "PUBLIC.PROJECT_METADATA_PROJECT_ID_IDX_INDEX_3 ON PUBLIC.PROJECT_METADATA(PROJECT_ID NULLS FIRST) VALUES ( /* 33 */ CAST(33 AS BIGINT) )"; SQL statement:
INSERT INTO PROJECT_METADATA (AUTHORS,PROJECT_ID,SUPPLIER) VALUES (?,?,?) [23505-224]
2023-12-18 21:22:25,689 ERROR [BomUploadProcessingTask] Error while processing bom
javax.jdo.JDODataStoreException: Insert of object "org.dependencytrack.model.ProjectMetadata@4688ac8e" using statement "INSERT INTO PROJECT_METADATA (AUTHORS,PROJECT_ID,SUPPLIER) VALUES (?,?,?)" failed : Unique index or primary key violation: "PUBLIC.PROJECT_METADATA_PROJECT_ID_IDX_INDEX_3 ON PUBLIC.PROJECT_METADATA(PROJECT_ID NULLS FIRST) VALUES ( /* 33 */ CAST(33 AS BIGINT) )"; SQL statement:
INSERT INTO PROJECT_METADATA (AUTHORS,PROJECT_ID,SUPPLIER) VALUES (?,?,?) [23505-224]
at org.datanucleus.api.jdo.JDOAdapter.getJDOExceptionForNucleusException(JDOAdapter.java:605)
at org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:702)
at org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:722)
at org.dependencytrack.tasks.BomUploadProcessingTask.lambda$inform$1(BomUploadProcessingTask.java:129)
at org.dependencytrack.persistence.QueryManager.lambda$runInTransaction$0(QueryManager.java:1346)
at org.dependencytrack.persistence.QueryManager.runInTransaction(QueryManager.java:1377)
at org.dependencytrack.persistence.QueryManager.runInTransaction(QueryManager.java:1345)
at org.dependencytrack.tasks.BomUploadProcessingTask.inform(BomUploadProcessingTask.java:127)
at alpine.event.framework.BaseEventService.lambda$publish$0(BaseEventService.java:110)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Unique index or primary key violation: "PUBLIC.PROJECT_METADATA_PROJECT_ID_IDX_INDEX_3 ON PUBLIC.PROJECT_METADATA(PROJECT_ID NULLS FIRST) VALUES ( /* 33 */ CAST(33 AS BIGINT) )"; SQL statement:
INSERT INTO PROJECT_METADATA (AUTHORS,PROJECT_ID,SUPPLIER) VALUES (?,?,?) [23505-224]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:520)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
at org.h2.message.DbException.get(DbException.java:223)
at org.h2.message.DbException.get(DbException.java:199)
at org.h2.index.Index.getDuplicateKeyException(Index.java:527)
at org.h2.mvstore.db.MVSecondaryIndex.checkUnique(MVSecondaryIndex.java:223)
at org.h2.mvstore.db.MVSecondaryIndex.add(MVSecondaryIndex.java:184)
at org.h2.mvstore.db.MVTable.addRow(MVTable.java:519)
at org.h2.command.dml.Insert.insertRows(Insert.java:174)
at org.h2.command.dml.Insert.update(Insert.java:135)
at org.h2.command.CommandContainer.executeUpdateWithGeneratedKeys(CommandContainer.java:242)
at org.h2.command.CommandContainer.update(CommandContainer.java:163)
at org.h2.command.Command.executeUpdate(Command.java:256)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:216)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:174)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at org.datanucleus.store.rdbms.SQLController.executeStatementUpdate(SQLController.java:430)
at org.datanucleus.store.rdbms.request.InsertRequest.execute(InsertRequest.java:520)
at org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertObjectInTable(RDBMSPersistenceHandler.java:162)
at org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertObject(RDBMSPersistenceHandler.java:138)
at org.datanucleus.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:4587)
at org.datanucleus.state.StateManagerImpl.makePersistent(StateManagerImpl.java:4564)
at org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:2014)
at org.datanucleus.ExecutionContext.persistObjectInternal(ExecutionContext.java:320)
at org.datanucleus.ExecutionContextImpl.persistObjectWork(ExecutionContextImpl.java:1862)
at org.datanucleus.ExecutionContextImpl.persistObject(ExecutionContextImpl.java:1723)
at org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:697)
... 10 common frames omitted
```
### Steps to Reproduce
1. I was not able to reproduce this using the D-T UI and uploading the same two SBOMs into a project. It only happened with the Go API.
### Expected Behavior
In 4.8.2 it worked as I expected. I uploaded two files, then eventually the webhooks were called.
### Dependency-Track Version
4.10.0
### Dependency-Track Distribution
Container Image
### Database Server
N/A
### Database Server Version
_No response_
### Browser
Google Chrome
### Checklist
- [X] I have read and understand the [contributing guidelines](https://github.com/DependencyTrack/dependency-track/blob/master/CONTRIBUTING.md#filing-issues)
- [X] I have checked the [existing issues](https://github.com/DependencyTrack/dependency-track/issues) for whether this defect was already reported
Contributor guide
Assessment
This issue has not been assessed yet.