Open
Description
Task Description
Due to many problems in using OrientDB, it was decided to switch to another database. JanusGraph was chosen as a new database.
As part of the PoC project we developed the core concept of Domain Model implementation based on TinkerPop and Spring Data Neo4j. All persistence of Strongbox should be reworked follwing way:
- Domain Entities should have interfaces (this is needed to support inheritance, which is not supported by JanusGraph out of the box)
- Every Domain Entity should have EntityTraversalAdapter implementation (needed to provide CRUD traversals for the entity)
- Every entity should have Repository based on GremlinRepository
- All CRUD operations in repository should be implemented with EntityTraversalAdapter
- Cypher can be used for custom queries with Spring Data Neo4j
Task List
- Make the necessary changes to the
strongbox-parent
. - Make the necessary changes to the
strongbox-db
. - Make the necessary changes to get Janusgraph + Cassandra to start during testing.
- Re-work all entries / DAO-s to Spring Data entities and repositories.
- Implement Gremlin based entities for Artifact, ArtifactCoordinates and ArtifactGroup ( Implement Gremlin based entities for Artifact, ArtifactCoordinates and ArtifactGroup #1651 )
- Implement Gremlin based UserEntry ( Implement Gremlin based UserEntry #1653 )
- Create documentation on how to write persistence-related code ( issues/1649 JanusGraph persistence documentation strongbox-docs#77 )
-
PermanentLockingException
/ArtifactManagementService
transaction issues ( issues/1649 PermanentLockingException fixed with ArtifactManagementService transaction fix #1721 ) - Fix all
@Disabled
tests- Fix
RegenerateNugetChecksumCronJobTestIT
test( Fix RegenerateNugetChecksumCronJobTestIT test #1741 ) - Fix
ActuatorEndpointControllerTest
( Fix ActuatorEndpointControllerTest #1742 ) - Fix
NpmArtifactControllerTest.packageNameTestBadRequest
( Fix NpmArtifactControllerTest.packageNameTestBadRequest #1743 ) - Fix
AuthorizationConfigControllerTestIT.roleShouldBeDeleted
( Fix AuthorizationConfigControllerTestIT.roleShouldBeDeleted #1744 ) - Fix
CleanupExpiredArtifactsFromProxyRepositoriesCronJobTestIT
( Fix the CleanupExpiredArtifactsFromProxyRepositoriesCronJobTestIT #1745 ) - Fix
WhenRepositoryIsNotAliveDontCleanExpiredArtifactsTestIT
( Fix the WhenRepositoryIsNotAliveDontCleanExpiredArtifactsTestIT #1746 )
- Fix
- Sort out any issues that may arise with the
strongbox-web-integration-tests
and disable any that aren't easy to fix (and possibly create follow-up tasks for them) - Disable the
strongbox-aql-tests
- Re-work the parts of the code in the
strongbox-storage-npm-layout-provider
andstrongbox-storage-nuget-layout-provider
that have Antlr code (this could be a follow-up task) - Check how the refactoring affects the
strongbox-distribution
and create follow-up tasks, if necessary. - Perfomance and tuning
- Fix long build/test times
- Sort out the Strongbox performance issues (Sort out the Strongbox performance issues #1754)
- Extract
ArtifactArchiveListing
into standalone vertex ( Extract ArtifactArchiveListing into standalone vertex #1752 ) - Upgrade to Cassandra
4.0-alpha4
( Upgrade to Cassandra to 4.0-alpha4 or higher #1775 )
- Make sure
strongbox-against-strongbox
is green and add any necessary follow-up tasks Jenkins build error - Disable automatic JanusGraph schema creation ( Disable automatic JanusGraph schema creation #1755 )
Follow-up tasks to be created:
-
Predicate
-s follow-up work for Migrate Strongbox from OrientDB to JanusGraph #1649 (see here) - Re-work
NugetODataFilterQueryParser
(see here) - Use UTC for storing date times in the database (see here)
- Migrate to from java.util.Date to the new JDK 8 classes ( Migrate to from java.util.Date to the new JDK 8 classes #1541 )
- Implement a
CronJobStoreRepository
( OrientDBJobStore for Quartz #1373 )
Useful Links
- strongbox-janusgraph-cassandra-poc
- TinkerPop and Spring Data Neo4j
- PRACTICAL GREMLIN: An Apache TinkerPop Tutorial
- Gremlin recipes: 4 – Recursive traversals
- Spring Data Neo4j
Help
- Our chat
- Points of contact: