Hi, guys
It's the situation. Due to our migration job simulating in our development environment again and again, the filestore had been almost 100% full. I read the administrator guide and use dmclean (DQL editor: execute do_method with method='dmclean') to generate the script (Result.dmclean.txt found under cabinet of TEMP) of destroying content files.
I start a iapi session, "@Result.dmclean.txt" to execute the script. Because the number of orphaned content objects is huge (more than 50,000), the execution lasts for quite long time. After thousands of lines in script been executed, it stocks. Just stop there, no error, no exception. It's observed that the process of "Documentum" consumed around 290MB memory.
In this time, I pressed "Ctrl+C" to terminate iapi. But it's found that the process of Documentum still there, and also occupied the huge memory. OK, I thought just leave it along. Then I started another iapi and execute the script again, and no suprise it stock in the same line.
Then I killed the 290MB process, start IAPI again, executed the script. Finally, it passed the line and moving on. But I saw the memory consumption is smoothly growing and finally it stocks in another line. The memory stops in the same size, 290MB.
Even I have the work around (kill IAPI, kill process, re-run) to make the script totally executed, but it still confuse me a lot, why content server can't control the memory well. Inside the script, I can see it's a "close" command after the "apply" (like example below). Since it's been closed after each round, why memory still keep growing and finally stock there without any meaningful message?
Is there any body has similar experience or any reasonable explanation about this? It's very appreciate if you could give any hint or idea.
below is some paragraph of the script.
# Documentum, Inc.
#
# dmclean cleans up orphan content, annotation , internal ACL, aborted workflow,
# unused workflow structured data element parent objects
# and unused SendToDistributionList workflow template objects.
# In D6.5, we added shared parents among all of their children in the delete list.
# Instead of immediately destroying the orphan content objects, dmclean
# generates an API script, which can be used for verification before
# cleanup actually happens. This is done in this manner because deleted
# content objects by mistake are difficult to recover. dmclean, however,
# cleans up all unused annotations and internal ACLs.
# Starting from D6.5, dmclean deletes shared parents whose i_is_deleted flag is true
# and their children when the -clean_deleted_lwso option is set.
# To remove orphan content objects after verification, do the following
# in iapi:
#
# % iapi <docbase> -U<user> -P<pwd>
# API> @<script_name>
# API> quit
#
# Starting to clean up unused content objects...
# Content object 06000001800c4ff0 has parent count of zero.
apply,c,06000001800c4ff0,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c50c3 has parent count of zero.
apply,c,06000001800c50c3,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c50c4 has parent count of zero.
apply,c,06000001800c50c4,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c4fe1 has parent count of zero.
apply,c,06000001800c4fe1,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c4fe2 has parent count of zero.
apply,c,06000001800c4fe2,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c4fe6 has parent count of zero.
apply,c,06000001800c4fe6,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c4f53 has parent count of zero.
apply,c,06000001800c4f53,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c4eeb has parent count of zero.
apply,c,06000001800c4eeb,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c4eec has parent count of zero.
apply,c,06000001800c4eec,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c4f89 has parent count of zero.
apply,c,06000001800c4f89,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c4f8a has parent count of zero.
apply,c,06000001800c4f8a,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c4e61 has parent count of zero.
apply,c,06000001800c4e61,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c5016 has parent count of zero.
apply,c,06000001800c5016,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c5017 has parent count of zero.
apply,c,06000001800c5017,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c5018 has parent count of zero.
apply,c,06000001800c5018,DESTROY_CONTENT
getmessage,c
close,c,q0
# Content object 06000001800c5019 has parent count of zero.
apply,c,06000001800c5019,DESTROY_CONTENT
getmessage,c
close,c,q0