PDA

View Full Version : ReadDesign against DXLExporter



wki01
14 Oct 2009, 7:03 AM
Please reconsider the use of ReadDesign instead of DXLExporter.
I did a little test on a database of over 350,000 documents with about 180 views.
You get an error for timeout.

All right if I use ReadDesign instead of DXLExporter, but in this case no longer work categorized views.

thanks



Ext.Ajax.request({
method: 'GET',
disableCaching: true,
success: this.getViewDesignSuccess,
failure: this.getViewDesignFailure,
scope: this,
//url: this.viewUrl + '?ReadDesign'
url: Ext.nd.extndUrl + 'DXLExporter?OpenAgent&db=' + this.dbPath + '&type=' + this.noteType + '&name=' + this.viewName
});

wki01
20 Oct 2009, 7:26 AM
I just installed the 8.5.1 and I've redone the test with the largest db (23Gb 650,000 documents) in my company.

Result:
DXLExport -> 40 sec.
ReadDesign -> 1 sec.

I'd like to know if anyone has evidence to that effect.

(No problem with small db.)

thanks

mdm-adph
20 Oct 2009, 12:47 PM
Aye, there may be a reason why they had to use the special DXLExporter agent -- perhaps some functionality that the regular ReadDesign didn't offer?

jratcliff
21 Oct 2009, 4:11 AM
I just installed the 8.5.1 and I've redone the test with the largest db (23Gb 650,000 documents) in my company.

Result:
DXLExport -> 40 sec.
ReadDesign -> 1 sec.

I'd like to know if anyone has evidence to that effect.

(No problem with small db.)

thanks

Wow! That's not good! I'll take a look at this to see what's going on. Also, do you get this on all views or just a particular view? And on your system what times do you get on a much smaller database?

Thanks for your help in troubleshooting this.

jratcliff
21 Oct 2009, 4:13 AM
Aye, there may be a reason why they had to use the special DXLExporter agent -- perhaps some functionality that the regular ReadDesign didn't offer?

That's exactly right. ReadDesign doesn't give all of the info you need for a view's design. It is missing the actionbar info as well as certain column information. We used to have things where we made a call to both ReadDesign and the DXLExporter agent but now we've combined them to just the one call and modified the DXLExporter agent to include the column info.

wki01
21 Oct 2009, 8:00 AM
Wow! That's not good! I'll take a look at this to see what's going on. Also, do you get this on all views or just a particular view? And on your system what times do you get on a much smaller database?

Thanks for your help in troubleshooting this.

Another test:
db size: 3.2 Gb
74,000: documents

Result:
DXLExport -> 1 sec.
ReadDesign -> 1 sec.

then small database okay.

The problem on the large database on all views.
I did a test by putting the name of a view that does not exist. DXLExport employs more than 30 seconds to realize that the view does not exist.

jratcliff
21 Oct 2009, 8:58 AM
Another test:
db size: 3.2 Gb
74,000: documents

Result:
DXLExport -> 1 sec.
ReadDesign -> 1 sec.

then small database okay.

The problem on the large database on all views.
I did a test by putting the name of a view that does not exist. DXLExport employs more than 30 seconds to realize that the view does not exist.

OK, I think I found the issue. In the exportView method, we are doing an uncessaray call to db.GetDocumentByID(noteID). Since we already have the view added to the NotesNoteCollection with the call to nc.Add(noteView) we can use our variable "nc" for the input of the NotesDXLExporter.

I've made the change on the next beta and it appears to work (the only issue that could happen I think is if you have two or more views of the same name - so I'll see if I can account for that in the next beta).

In the meantime, could you try this fix out for me in your environment to see if your really large db will get a more typical ~1sec response time.

Before - in exportView Method



...

noteID = nc.GetFirstNoteId
Set noteDocument = db.GetDocumentByID(noteID)

...

Call exporter.SetInput(noteDocument)

...


After - in exportView Method



...

' comment out these lines
'noteID = nc.GetFirstNoteId
'Set noteDocument = db.GetDocumentByID(noteID)

...

' change the input to use 'nc' instead of 'noteDocment'
Call exporter.SetInput(nc)

...


Let me know if this works for you.

Thanks again for reporting this!
Jack

wki01
21 Oct 2009, 11:54 PM
.....
....
.....
Call exporter.SetOutput(stream)
Call exporter.Process
outBuff = exporter.Export(noteDocument)
Print outBuff


No, that can not work because noteDocument is no longer created.
Unfortunately I have no time to see an alternative solution.
anyone?

jratcliff
22 Oct 2009, 5:39 AM
.....
....
.....
Call exporter.SetOutput(stream)
Call exporter.Process
outBuff = exporter.Export(noteDocument)
Print outBuff


No, that can not work because noteDocument is no longer created.
Unfortunately I have no time to see an alternative solution.
anyone?

What method are you editing? outBuff isn't used in exportView. I think you edited the wrong method.

wki01
22 Oct 2009, 5:58 AM
What method are you editing? outBuff isn't used in exportView. I think you edited the wrong method.

Sorry.
I was watching DXLExport in ext.nd beta2r1, which is much easier to understand.

However, the changes you suggested does not seem to have effect.

Someone else can do tests on very large db?

My server is HP ProLiant DL380 G5, now with 452 users connected

jratcliff
22 Oct 2009, 1:39 PM
I was watching DXLExport in ext.nd beta2r1, which is much easier to understand.


Ahh, that explains it then. Beta2r1 is a release behind. The current shipping release is Beta3 with some javascript patches in Beta3r1. I've tested this fix on Beta3r2 which we'll release soon so you can either wait for that version or download the Beta3 version and make the above mentioned changes.

I'll also see if I can find a large db to do some further testing to verify that the response time stays around 1sec for the DXLExporter calls.

Thanks again for reporting this!

Jack

wki01
5 Nov 2009, 2:25 AM
Every so often I discover something new in Lotus Domino ...
Although I do not understand how does it work ...

In the template database rss_generator.ntf i found a agent called "ViewList".
The strange thing is that it is scheduled with a scheduling = "Never."

Reading the source is the following comment ...

"This agent is designed to run on the server to speed delivery of The Design Collection"

How does it work?