| Summary: | org.eclipse.jgit.errors.MissingObjectException when cloning concurrently | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Retired] JBoss BRMS Platform 6 | Reporter: | Zuzana Krejčová <zkrejcov> | ||||
| Component: | Business Central | Assignee: | Alexandre Porcelli <porcelli> | ||||
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Zuzana Krejčová <zkrejcov> | ||||
| Severity: | high | Docs Contact: | |||||
| Priority: | high | ||||||
| Version: | 6.0.0 | CC: | etirelli, lpetrovi, zkrejcov | ||||
| Target Milestone: | ER5 | ||||||
| Target Release: | 6.0.0 | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2014-08-06 20:20:06 UTC | Type: | Bug | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Attachments: |
|
||||||
|
Description
Zuzana Krejčová
2013-09-10 11:51:59 UTC
When you say clone concurrently you mean different users cloning the same repository? (In reply to Alexandre Porcelli from comment #1) > When you say clone concurrently you mean different users cloning the same > repository? The same repository probably wouldn't cause problems. What I mean is two users cloning different repositories at the same time. Or one user doing two REST calls for cloning a repository too close together. Or you can look at how the product clones the two playground repositories at the start - there's some Batch..something class, I don't remember correctly - but on a clean installation, with playground repositories enabled, those two are cloned pretty much at the same time as well. When two different repositories are cloned at the same time, what seems to happen is this: 1. You clone both repositories, A and B. 2. You start indexing them. 3. Some kind of object database is keeping tabs on the repository you're using. Right now it's a repository A. 4. You ask it about HEAD commit for repository A and get back some reference to it. 5. You ask it about HEAD commit for repository B and get back some reference to it. For this, the object database has to switch to the repository B at some time, forgetting all about repository A in the process. 6. Now holding the HEAD commit reference for A, you tell jgit to do something with it - but jgit, via the object database, works with the B repository, so it cannot find this A repository HEAD commit. 7. It tells you so in the exception. To me, it seems that jgit is designed to work with only one repository at a time. So BR/PMS should make sure it really does work with only one repository at a time.. or something. I've tried to reproduce this issue, but seems that with recent vfs optimizations this issues seems to be fixed. I've tried to reproduce using an unit test and after executing it several times I never got any error. unit test (disabled by default, as it needs network resources): https://github.com/droolsjbpm/uberfire/blob/master/uberfire-backend/uberfire-backend-server/src/test/java/org/uberfire/backend/server/repositories/RepositoryCreationTest.java |