7

Build time of XPages application containing several JARs, Java sources and ~50 XP/CC elements takes about minute to build on server via WAN. I have replicated application to local, build time dropped to ~10s.

Since few days ago build of local application is extremely slow, about 2-5 minutes. After some experiments there is workaround: to disable TCP port in location document - it drops build times to just few seconds. Even tho it works, it does not help much - testing requires user to be authenticated, so I need to replicate design changes to remote or local server - and that means to change location (online/offline) every time.

UPDATE 2013-04-04: I have duplicated my current location document and removed home and directory servers. To my surprise, with this location build times went back to few seconds - with TCP port enabled so replication is possible. Bigger surprise was the fact, that returning home/directory servers back to new location did not reproduce the problem - in fact they do not affect performance. I know it because I have renamed current location document and everything went to normal. From my understanding, "something" in client configuration was connected to location name. Thanks to Simon's tips I will investigate further.

The question is still open: I am looking for some (eclipse) preference controlling this behavior - unintended communication with server during build of local application.

Frantisek Kossuth
  • 3,524
  • 2
  • 23
  • 42

4 Answers4

4

Solution: Teamstudio CIAO hooks into designer and checks for every update of design element. Seems to be lack of code optimization to me: it checks whether currently built design element (every single one, one by one) should be controlled in CIAO config database.

This explains why the problem was solved by renaming of location document. I was disappointed yesterday, when performance problems started again. Fortunately, I recalled CIAO setup to that location document about that time. CIAO uses teamstudio.ini file in DATA directory to configure what CIAO configuration database is used for every location document. Look for entry:

CIAOConfigDb[location name]=server name;CIAO\CIAOConfig.nsf

For development on local replicas with connection to server (for replication or local server), use location document with CIAO disabled.

This works only with property ForceConfigLocation=0.

Frantisek Kossuth
  • 3,524
  • 2
  • 23
  • 42
3

Not a solution (yet!), but may help in the investigation. I'll update further if you post results later.

Debug instructions.

Add the following to the shortcut that launches the Designer client.

-RPARAMS -console -debug -separateSysLogFiles -consoleLog

Start the designer client. This will also open up the OSGi console.

Reproduce the issue. While it is still in progress in the OSGi console type the following:

dump threads

Do this three times, with a small amount of time between completion of each dump. Once done open the three heap dumps (in the IBM_TECHNICAL_SUPPORT folder) in the Heap Dump Analyser.

It will show you what threads are consistent through all three dumps. Take a look at those and look for package names/calls which may appear to be a functional area. Once you have that then you can try adding the debug for the related class.

For example: Let's say you notice "com.ibm.designer.domino.ui.commons." in the thread, then you would edit the rcpinstall.properties file. It will be in:

<Notes Install>\Data\workspace\.config\rcpinstall.properties

and you would add (start with FINE, then FINEST if nothing):

com.ibm.designer.domino.ui.commons.level=FINE

Now when you restart the designer client it will generate debug output in the workspace\logs folder for that package. You need to then go through the trace logs looking for the time when the delay occurred and see if it makes any references to related design elements.

Simon O'Doherty
  • 9,259
  • 3
  • 26
  • 54
2

Other open applications may get built at the same time (which looks like a bug top me). Be sure to close all other applications and the server based replica. Open applications have their icon showing in the application list and they stay open even if you close and reopen the Designer. In Designer 9 right click application and select "Close Application". In 8.5 you need to use Package Exprorer for closing.

Another good way is to use Working Sets. Only applications in open Working Set will be built (AFAIK). Have a Working Set with this one app only (and the app only in this Working Set).

update 1

If these don't help I would delete/rename bookmark.nsf, Cache.NDK and desktop8.ndk. Then open just this one app and see what happens.

update 2

Check that there are no referenced projects. Right click the application and select "Project Properties". From there "Project Referencies" and make sure no check boxes are checked.

update 3

Based on your update I would check the item names starting with $ in location document. Sometimes there are saved IP addresses etc. which could cause this problem. All those items can be removed.

Panu Haaramo
  • 2,932
  • 19
  • 41
  • Not my case: I have autobuild turned off, and build invoked by rightclick on application/build - so no other app is built. – Frantisek Kossuth Apr 04 '13 at 14:44
  • I usually use Project -> Build so it might be different (but I doubt it). That will randomly build also other open applications or parts of them. I have broken production applications because they were signed by my ID when I was building a dev app. This has happened to my colleque too. – Panu Haaramo Apr 04 '13 at 14:59
  • True. It happens sometimes, one has to be careful what app is open. Special case is Clean action and radio at the bottom - default value is to build all open apps, nice catch for newbies. – Frantisek Kossuth Apr 04 '13 at 15:05
  • I also use Clean and Build selected, while also trying to make sure I close all open applications. – David Navarre Apr 05 '13 at 13:36
1

If possible (and if You are not using it yet) try to use version 9 of the Domino designer (You do not have to use Domino 9 to do that - it works fine with Domino 8.5.3).

For our projects build times went down to only few seconds from few minutes. I guess that they finally noticed at IBM that the build process used to heavily relay on connection to server and done something with it. With new designer You don't event have to replicate to local. You can directly work on Your local server.

W_K
  • 868
  • 4
  • 9
  • I am not so confident, I remember many compatibility issues in production with (just) minor version differences (designer over server). But I will try it combined with "compile for" property. – Frantisek Kossuth Apr 08 '13 at 19:51
  • We use this kind of designer-server combination in controlled environment since beta and we haven't had any problems – W_K Apr 09 '13 at 18:03