Crucible: Invalid source when adding commit
Asked by abarnes_cox:

Running Fisheye 3.4.4 with BitBucket Git repo on Linux.

CR3.4.4 FE3.4.4 (20140520040848 2014-05-20)

We have suddenly started getting multiple Java exceptions when trying add some specific commits on a feature branch. Mind this is NOT all commits on the feature branch just a specific few. There is no pattern that I can see.

One user did manage to get a commit added to a review after repeatedly clicking close and trying again.

When adding a commit using the Add Content-\> Browse Changesets

**Error on screen:**

```
No revision was added or removed. Invalid source. CAS-Java-Libs does not equal cas-java-libs
```

**fisheye.out:**

```
Caused by: com.cenqua.crucible.revision.source.SourceException: Invalid source. CAS-Java-Libs does not equal cas-java-libs        at com.cenqua.crucible.revision.source.Source.validateRevisionSource(Source.java:403)        at com.cenqua.crucible.revision.source.RepositorySource.getInsertIndex(RepositorySource.java:378)        at com.cenqua.crucible.util.ReviewCreationHelper.addRevision(ReviewCreationHelper.java:524)        at com.cenqua.crucible.util.ReviewCreationHelper.access$600(ReviewCreationHelper.java:44)        at com.cenqua.crucible.util.ReviewCreationHelper$4.loopCleanup(ReviewCreationHelper.java:942)        at com.cenqua.crucible.util.ReviewCreationHelper$RevisionsCalculatorOperator.doLoop(ReviewCreationHelper.java:732)        at com.cenqua.crucible.util.ReviewCreationHelper$AddRevisionsCalculator.calculate(ReviewCreationHelper.java:664)        at com.cenqua.crucible.util.ReviewCreationHelper.addRevisions(ReviewCreationHelper.java:874)        at com.atlassian.crucible.actions.create.CreateReviewFromChangesetAjaxAction.addChangeSetToReview(CreateReviewFromChangesetAjaxAction.java:552)        at com.atlassian.crucible.actions.create.CreateReviewFromChangesetAjaxAction.filterAndAddChangeSetToReview(CreateReviewFromChangesetAjaxAction.java:539)        at com.atlassian.crucible.actions.create.CreateReviewFromChangesetAjaxAction.createNewReview(CreateReviewFromChangesetAjaxAction.java:420)        at com.atlassian.crucible.actions.create.CreateReviewFromChangesetAjaxAction.execute(CreateReviewFromChangesetAjaxAction.java:630)        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)        at java.lang.reflect.Method.invoke(Method.java:597)        at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:358)        at com.opensymphony.xwork.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:218)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:192)        at com.cenqua.crucible.interceptors.ReviewInterceptor.intercept(ReviewInterceptor.java:52)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.cenqua.crucible.interceptors.CruciblePermissionInterceptor.intercept(CruciblePermissionInterceptor.java:53)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.cenqua.crucible.interceptors.HasCrucibleInterceptor.intercept(HasCrucibleInterceptor.java:27)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.atlassian.fisheye.xwork.SimpleConversionErrorInterceptor.intercept(SimpleConversionErrorInterceptor.java:64)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:186)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.atlassian.xwork.interceptors.XsrfTokenInterceptor.intercept(XsrfTokenInterceptor.java:100)        at com.cenqua.fisheye.web.util.XsrfCheckInterceptor.intercept(XsrfCheckInterceptor.java:20)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)        at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116)        at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:274)        ... 148 more
```

Any help would gratefully be received.

Thanks

Alex


Answers:
author: alex.barnes
body: FYI for anyone that has similar issues this is how I fixed the problem (with the help of Atlassian Support).

It would appear the issue was some kind of corrupt data in the database.

First step MAY not be required BUT is required in the Fisheye documentation:

1. Set the server level character set to UTF8 (database level is not sufficient).
2. Use the Fisheye administrator tool to migrate the existing database into a new one (can be same server)
   1. Create an empty new database with UTF8 collation etc (see Fisheye docs)
   2. Administration
   3. Database
   4. Edit
   5. Enter new database name
   6. "Save \& Migrate"

my.cnf:

```
[mysqld]character-set-server=utf8
```

Hope this helps someone.


author: Svante Gustafsson Bj?rkegren
body: Hi Alex,

From the error message it seems like it could be a case-issue

```
Invalid source. CAS-Java-Libs does not equal cas-java-libs
```

Has the directory cas-java-libs changed to CAS-Java-Libs? (or v.v.)

I am not sure this could be the problem but it looks suspicious.

Cheers,

// Svante

comments: author: abarnes_cox
body: No nothing has changed on the Git repo side or even on the Fisheye config side.

Literally two commits in a row and one will work but the one after throws the error, the third then also passes.

![Screenshot](https://dl.dropboxusercontent.com/u/27828972/crucible_screenshot.png)


author: Svante Gustafsson Bj?rkegren
body: This is weird, indeed!

I suggest you raise a [support ticket](https://support.atlassian.com) at Atlassian and have their support engineers take a look at your logs. Make sure you attach a fresh support zip in your request.

Rgrds,

// Svante


author: abarnes_cox
body: Thanks will do, I just wanted to check if anyone else in community had seen this before raising a ticket :)


author: abarnes_cox
body: BTW updated to 3.4.5 and still the same error.

CR3.4.5 FE3.4.5 (20140701133253 2014-07-01)


Tags: fisheye-crucible-administration