Deleted an unused UD field yesterday morning from PartPlant, as I have done a few times before. Regenerated data model and restarted the app pool for Production, all with no one in the system.
This morning I see that MRP crashed last night. Error was that my old field did not exist.
Query failed to run
System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Invalid column name 'Obsolescence_c'.
So, I fixed it. The problem was that I didn’t restart ALL of the app pools for Production.
Time for the backstory.
I have 3 app servers for production - on the same machine; I mean the EAC kind of “app server” - and each has its own application pool.
Only one is ever used - I actually removed the config files for the other two so that no client can ever use those two. The only way to use them is to be on the server, so it’s only me that ever uses them. And the only time I use them is a day like yesterday. I shut down the normal one so that I can do maintenance without anyone having any chance of logging in.
So I restarted the main app pool and the admin app pool. But I didn’t restart the third one (my non-SSO app pool). Well, apparently that was enough to crash MRP. I restarted it and my admin one this morning, and MRP runs fine now.
Another related story
A few weeks ago people were having major trouble printing. It was the first day after I upgraded us to 10.2.600. I forget all of the details, but I realized that it was those multiple app servers again!
For some reason I had set them up to each connect to different report databases in the EAC. But again, people who had absolutely no access to these other app servers, Epicor was trying to reach the report DB for one of the other app servers. I mean, I installed the clients myself and I KNOW that none of the machines here have any other config files except the one for the new Production app server.