In Live Update Administrator version 22.214.171.124 the Distribution Center Cleanup task will fail when it goes to purge old content from the clu-prod directory.
2019-06-05 15:28:00,422 [pool-1-thread-6] ERROR cleanCLU.PurgeCluThread - Server: Default Testing Distribution Center -- Error while deleteFilesFromServer: java.lang.NullPointerException java.lang.NullPointerException at com.symantec.lua.util.rcl.HttpHelper.deleteFile(Unknown Source) at com.symantec.lua.adapter.queue.cleanCLU.PurgeCluThread.deleteFilesFromServer(Unknown Source) at com.symantec.lua.adapter.queue.cleanCLU.PurgeCluThread.call(Unknown Source) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
The issues surfaced after moving the default Distribution Center (DC) from its default location, under the LUA installation directory, to the "D:" drive before LiveUpdate Administrator (LUA) could create the corresponding directories (clu-prod and clu-test) under "C:\Program Files (x86)\Symantec\LiveUpdate Administrator".
The LUA administrator had manually edited the clu.properties to make above changes and looks like these changes were made right after LUA installation.
As per the purging process (and wipe process as well), when a file is deleted and a status greater than 300 is returned (i.e. delete successful) then it re-verifies if the file was actually deleted (to handle the file lock scenario). While doing so, it checks if the DC being worked on is a default DC and if yes then tries to get the list of all files in that directory and check if the deleted file is still present otherwise(in case of non-default DC) the standard HTTP operations are used to validate file delete operation.
In this case, it finds the details matching for a default DC and tries to enlist the files at "C:\Program Files (x86)\Symantec\LiveUpdate Administrator\clu-prod" while there is no such directory and File.listFiles() method returns null and when used at next step in for each loop it throws the NPE.
1. Create empty "clu-prod" and "clu-test" directories inside "C:\Program Files (x86)\Symantec\LiveUpdate Administrator\". It will fix the NPE issue, as an attempt to enlist the files inside these directories will result in an empty array list rather than null. But it will remove the extra check for file delete confirmation.
2. Change the name of the directories inside "C:\Program Files(x86)\Symantec\LiveUpdate Administrator\tomcat\webapps" from "clu-prod" to "clu-prod1"[any name can be given] and from "clu-test" to "clu-test1".
Note : Leave the directory "lua" as it is.
Now, Restart the LUA tomcat service, and open LUA's edit DC location page and modify the "root directory" value of the locations from "clu-prod" to "clu-prod1" and from "clu-test" to "clu-test1" [or whichever names were given while modifying the directory names].
Save it, and make sure the DC is in ready state and verify the distribution and purge operations.
[Downside of 2nd workaround] : After ensuring that distribution and purge happens successfully, modify the endpoints (SEP clients or whichever products are configured to use LUA to download definitions) to get the content from new URL i.e. replace "clu-prod" with "clu-prod1" in the URL part.