Open fwgriffiths opened 3 years ago
I now think the problem is originating from the PROPFIND call in WebDAV.REST in this section set multi = ##class(WebDav.XML.multistatus).%New() do multi.response.Insert(..createPROPFIND(href, isCollection, size))
if isCollection,depth {
#dim rs As %ResultSet = ##class(%File).FileSetFunc(path)
while (rs.%Next()) {
set path = rs.Name
set name = rs.ItemName
set size =rs.Size
set createdDate = rs.DateCreated
set modifiedDate = rs.DateModified
set type = rs.Type
set isCollection = $case(type, "F":$$$NO, "D":$$$YES, :$$$NO)
do multi.response.Insert(..createPROPFIND(href _ $case($e(href,*), "/":"", :"/") _ name, isCollection, size, createdDate, modifiedDate))
}
}
I can see on viewing the multi object that there are loads of response elements inside it:
Variable: multi (base stack level = 31) multi = "
| r%response(40516) = "688774@WebDav.XML.response" | r%response(40517) = "688791@WebDav.XML.response" | r%response(40518) = "688808@WebDav.XML.response" | r%response(40519) = "688825@WebDav.XML.response" | r%response(40520) = "688842@WebDav.XML.response" | r%response(40521) = "688859@WebDav.XML.response" | r%response(40522) = "688876@WebDav.XML.response" +-----------------------------------------------------
Ah, I see, the href being passed into the PROPFIND is a folder path rather than an individual document and there are loads of documents in that folder. Maybe I should put a limit of the amount of results returned?
@fwgriffiths Easiest way to solve this is to set Maximum per Process Memory (KB)
to 2147483647
and restart InterSystems IRIS instance. Docs.
You can try limiting depth (unless you have one folder with a large number of files).
Hi Eduard It is just one folder with lots of files, no sub folders. I think we'd be reluctant to change the per process memory in case it caused performance issues. I may just try limiting the number of results returned.
Hi Eduard We have started using your WebDAV word implementation and we have had occurrences of STORE errors. e.g.
For the first one, no variables were saved at all. I've looked at the variables for the second one and the only thing of any note I could see was a variable SecurityRecord. Do DecomposeStatus^%apiOBJ(SecurityRecord,.err,"-d") For i=1:1:err Write err(i),! ERROR #5034: Invalid status code structure ($lb("",1,0,1,0,16,"","",0,"",0,"","ctstdb-01","System security parameters",90,5,65536,16 ,64,"8.32ANP",0,0,0,0,2047,"DC=ctstdb-01,DC=.co","",24,"unknown","®îÙ°Ü®D"$c(150)"{Ðøc|"$c(131,136)"l","uid=cacheown,ou=People", "cn","description","displayName","intersystems-Namespace","intersystems-Roles","intersystems-Routine",10,5,"","","",0,0,"",0,0,0,"", "","",180,"",0,0,"SHA256","Cache-ctstdb-01-CPLUS","",""))
Any idea what might cause those?