Hi Everyone, It would be amazing to get some community feedback on a design decision. I am working on Externalizing Fingerprint Storage of Jenkins, and I wish to allow a common external storage across multiple Jenkins instances. This would allow a much richer experience in tracking fingerprints (think artifacts, credentials, docker containers, etc.) across the entire CI/CD flow.
Currently, in a non distributed environment, a local XML-based database is used to store the fingerprints. When a fingerprint is brought from the disk into memory, we ensure that for each unique fingerprint, only one object of it is present in memory. Any and all changes happen to the same object, which subsequently overwrites itself to the XML database at the end of the day. But in a distributed environment, where there are multiple Jenkins instances storing fingerprints on a single external storage, it becomes challenging to ensure data consistency. Multiple instances may work on updating/deleting/adding facets at the same time. Moreover, these changes can happen by different plugins, making it hard to track when and what kind a change in attribute is about to happen. To solve this problem, the most promising solution that I can see is that I use a very similar design as the current offering, and ensure that a lock allows a fingerprint to enter the memory of only a single Jenkins instance. The lock would ensure that at a time only one Jenkins instance has the right to read or write to a particular fingerprint. This completely solves data inconsistency problems, while at the same time it also ensures simplicity and no change (or very less) to the current Fingerprint API architecture. However, it comes with the drawback that it is extra strict in allowing access, and would block a lot of other Jenkins instances, often unnecessarily (performance bottleneck). What would be your thoughts on this? I could really benefit from some insights/feedback/comments on this. Thanks and Regards, Sumit Sarin -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/e0f2f445-41c4-4d3b-b02b-ce25fe976637%40googlegroups.com.
