I'm on the trail of the problem; hunting it down.

Here is an update. It seems that
a) everything works ok, after a restart of Hackystat
b) the error occurs after changing/adding a workspace root.

I don't have a lot of time to explain, but take a look at the following files.

1) http://csdl.ics.hawaii.edu/~kagawaa/workspace/broken-before-rootchange.JPG
http://csdl.ics.hawaii.edu/~kagawaa/workspace/broken-rootchange.JPG
http://csdl.ics.hawaii.edu/~kagawaa/workspace/broken-after-rootchange.JPG

here are some screen shots that step you through the process i go through.

2) http://csdl.ics.hawaii.edu/~kagawaa/workspace/akagawa1.zip

If you want to try to duplicate the error, download this zip file. It contains some fake data that should replicate the problem on your machine.  Remember:
a) everything works ok, after a restart of Hackystat
b) the error occurs after changing/adding a workspace root.


3) http://csdl.ics.hawaii.edu/~kagawaa/workspace/DailyProjectJavaFileMetric.java
http://csdl.ics.hawaii.edu/~kagawaa/workspace/Workspace.java
http://csdl.ics.hawaii.edu/~kagawaa/workspace/WorkspaceCache.java

Here are the java files that I added the printlns to.


4) http://csdl.ics.hawaii.edu/~kagawaa/workspace/broken-log.txt

This is a log of some of the system.out.println's that I used to track down the problem. I set up these printlns to be able to find out why some of the workspaces were not being used in the DailyProjectJavaFileMetric Maps. So, look for


#########################################################
FileMetric analyzing:
D:\java\cruisecontrol-work\checkout\brokenProject\moduleA\java\src\edu\hawaii\broken\modulea\
        passedTrimmedPath: moduleA\,
parentLength: 8
        this.root:
D:\java\cruisecontrol-work\checkout\brokenProject\
        this.canonicalPath:
D:\java\cruisecontrol-work\checkout\brokenProject\moduleA\java\src\edu\hawaii\broken\modulea\
        trimmedPath:
moduleA\java\src\edu\hawaii\broken\modulea\,
moduleA\java\src\edu\hawaii\broken\modulea\
        cutWorkspace: moduleA\
        passedTrimmedPath: moduleA\
ACCEPTED

...


FileMetric processing
D:\java\cruisecontrol-work\checkout\brokenProject\moduleA\java\src\edu\hawaii\broken\modulea\


This indicates that the workspace was added to the map ok and was processed by the DailyProjectJavaFileMetric to return FileMetrics.  This is associated with http://csdl.ics.hawaii.edu/~kagawaa/workspace/broken-before-rootchange.JPG

Then, I changed the workspace root ( http://csdl.ics.hawaii.edu/~kagawaa/workspace/broken-rootchange.JPG)


WorkspaceCache.newWorkspaceRoots:
        root:
D:\java\cruisecontrol-work\checkout\
        workspace:
D:\java\cruisecontrol-work\checkout\brokenProject\moduleA\java\src\edu\hawaii\

This shows a wrong root being used for this workspace. It should have been D:\java\cruisecontrol-work\checkout\brokenProject. Thus, the workspace won't be used correctly in the DailyProjectJavaFileMetric.


#########################################################
FileMetric analyzing:
D:\java\cruisecontrol-work\checkout\brokenProject\moduleA\java\src\edu\hawaii\broken\modulea\
        passedTrimmedPath: moduleA\,
parentLength: 8
        this.root:
D:\java\cruisecontrol-work\checkout\
        this.canonicalPath:
D:\java\cruisecontrol-work\checkout\brokenProject\moduleA\java\src\edu\hawaii\broken\modulea\
        trimmedPath:
brokenProject\moduleA\java\src\edu\hawaii\broken\modulea\,
brokenProject\moduleA\java\src\edu\hawaii\broken\modulea\
        cutWorkspace: brokenPr
        passedTrimmedPath: moduleA\

See.. this workspace wasn't ACCEPTED any more, because the cutWorkspace and passedTrimmedPath aren't the same anymore ( http://csdl.ics.hawaii.edu/~kagawaa/workspace/broken-after-rootchange.JPG )


Ok. Sorry that is really cryptic. I don't have time this morning to make this better.


After all that, I think there is a problem with WorkspaceCache.newWorkspaceRoots and/or Workspace.isRoot.  It would be really great if someone could turn this into a testdataset and Unit Test (well, maybe this is a System Test).

thanks, aaron

Reply via email to