I'll install the new release on a second server and then move it into production. However I doubt that the upgrade will fix the degradation of performance over time which is our main concern.
At the same time the degradation in performance started we see occasional jobs pages listing "no project".
Certain jobs spend can spend several minutes scheduled or assigned, when there are plenty of resourced agents free.
I have attached the server logs which include this error:
2009-10-05 20:36:57,032 ERROR [main] H2EventListener:26 - Exception thrown from database on sql statement: CREATE PRIMARY KEY ON PUBLIC.BUILDS(ID)
org.h2.jdbc.JdbcSQLException: Unique index or primary key violation: PRIMARY_KEY_7 ON PUBLIC.BUILDS(ID); SQL statement:
1)
| Cruise Server Version: | 1.3.1(8123-42c322408f74) |
| JVM version: | 14.0-b16 |
| OS Information: | Linux 2.6.18-92.el5 |
| Usable space in artifacts repository: | 34691 Mb |
| Database schema version: | 41 |
| License expiry date: | 2010-05-01 |
| Number of remote agents Cruise is licensed for: | 100 |
| Number of users Cruise is licensed for: | 30 |
| Cruise edition: | Professional |
2) cpu is about 75%
3) database:
total 508M
-rw-rw-r-- 1 cruise cruise 2.2M Oct 6 11:05 cruise.68.log.db
-rw-rw-r-- 1 cruise cruise 417M Oct 6 11:05 cruise.data.db
-rw-rw-r-- 1 cruise cruise 225M Oct 6 11:05 cruise.index.db
-rw-rw-r-- 1 cruise cruise 99 Oct 5 20:37 cruise.lock.db
-rw-rw-r-- 1 cruise cruise 40M Oct 6 10:52 cruise.trace.db
4) we have about 35 agents connected. they are also hosted on vms
Thanks
toby
we have our main branch Caplin-Trader-Main. Every two weeks we release. To release we create a branch of main called CaplinTrader-1.4.6 for example. The we setup a new pipeline in cruise for CaplinTrader-1.4.6 to build the branch of code. There is often a round of bug fixes or feature removals so people do check into the branch.
Every successful build we run a pipeline containing performance tests which can take their feed from either the branch or main, but for these tests to run it needs to know which one triggered it. We currently have to manually change the name of this var in the code every time we branch.
The value of the dependency label is very useful to us but the fact the name changes means we would have to keep modifying code to keep up with the name changes. which is annoying and unecessary.
does this make things any clearer?
Thank you for adding the solaris installer to the download list. It wasn't there when you released 1.3
This error has just reoccurred. I installed the Cruise Server Version: 1.2(6278-05138ca7feda) you sent me. Hopefully we have some logs that highlight the problem. What Qiao, what do you want me to send in?
thanks
toby
the agent reuses the same client each time it build a job, so the client string must be stored on the agent somewhere, right?
a bit hacky but managed to get changelist number from the console log on the server
url = ‘http://’config[‘cruiseserverurl’]’/cruise/files/’config[‘pipeline’]’/’config[‘pipelinecounter’]’/installer/LATEST/makeInstaller/cruise-output/console.log’
f = urllib.urlopen(url)
consoleLog = f.read()
Thanks for the reply Qiao, i have just sent a email with the necessary files
thanks for confirming that.
As Tim (tlittle) points out the docs could do with an update. This was my first stumbling block and will be many other peoples too
I am a little confused as well.
perforce says the following:
Views consist of multiple mappings. Each mapping has two parts.
italics
The left-hand side specifies one or more files in the depot and has the form: //depotname/file_specification
The right-hand side specifies one or more files in the client workspace and has the form: //clientname/file_specification
italics
it seems to me that the docs doesn’t explain the right hand side of the view very well.
I am used to setting the right hand side to a particular client, but i guess cruise creates the right hand side depending on what agent is running the job. It seems that ‘cruiseclient’ can be anything.
it is possible to specify multiple views eg:
<view>
<![CDATA[//DHTML/main/build/... //cruiseclient/main/build/...
//DHTML/main/acceptance-tests2/... //cruiseclient/main/acceptance-tests2/...
//DHTML/main/client/... //cruiseclient/main/client/...
//DHTML/main/libraries/... //cruiseclient/main/libraries/...
//DHTML/main/python-utils/... //cruiseclient/main/python-utils/...
//DHTML/main/Widgets/... //cruiseclient/main/Widgets/...
//DHTML/4.5-Release/SL4B/... //cruiseclient/4.5-Release/SL4B/...]]>
</view>
Thanks for the reply Qiao
The python script i am using takes the artifact list in json served by cruise and then iterates over it downloading each file and mirroring the folder structure.
def getFiles(artifacts, filePaths): for artifact in artifacts: for path in filePaths: if artifact[‘url’].find(path) > 0: if artifact[‘type’] == ‘file’: print ‘Getting file ’, artifact[‘url’] # map the url to a file path based on common root path target = convertUrlToPath(artifact[‘url’]) # get the numbe rof letters in the file name and add one for the slash filenameLen = len(os.path.basename(target)) +1 # Now we know the length of the filename and slash trim this from path target = target[0:-filenameLen] #shouldn’t need to check if the dir exists as it should always hit the parent folder first int he json print ‘Change dir ’, target os.chdir(target) try: f = urllib.urlretrieve(artifact[‘url’]) dest = os.path.join( os.getcwd(), artifact[‘name’]) shutil.copy(f0, dest) print ‘SUCCESS copied to ’, dest except: print ‘Error: Could not download file: ’,artifact[‘url’]
elif artifact['type'] == 'folder':
#need to turn the cruise url into a suitable file path
target = convertUrlToPath(artifact['url'])
os.chdir(target)
getFiles(artifact['files'], filePaths)
Like i said i don’t have any precise timings on the download speed of each file. I will add this in a bit.
My colleague has been looking at using fetchartifact and is experiencing similar issues. I have asked him to post up his findings at some point today.
thanks
toby
Thanks Jez
I’ll send a email off now
ah i see the docs have been updated.
Thanks Qiao
Thanks, i was close with my first guess on the stage counter.
as for perforce I’ll just have to wait for version 2.0 i guess. Until then i am looking at posting the property back to cruise from the build script via the property api
Here is my server info:
Cruise Server Version: 1.2(6244-435fc6c2823d)
JVM version: 11.0-b16
OS Information: Linux 2.6.9-67.0.15.plus.c4.VMware
Usable space in artifacts repository: 34287 Mb
Database schema version: 29
License expiry date: Fri Feb 27 00:00:00 GMT 2009
Number of agents Cruise is licensed for: 5
As you can see we are using 1.2 and as i mentioned we do use VM’s, but have not had file transfer issues when using file shares or other methods (ftp).
I need to do some more precise timings which i will do when i get my pipeline working.
We don’t have any anti virus on our Linux machines.