Customer reported an issue where a specific user could not log into the virtual name of a load balanced ServiceDesk environment. They could successfully log into the individual ServiceDesk nodes, but the shared IP/name would just loop back to the login screen.
The Process Manager logs would report two errors over and over as they attempted to login.
First:
[global] Error in Login Authentication, SessionID 'b76aed42-afe7-11e1-923e-00505693005f' not found. [global] Client Host Information: [global] IP: 10.4.80.230 [global] HostName: 10.4.80.230 [global] Browser: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; .NET4.0C; InfoPath.3) [global] -- error.ToString() -- [global] System.Web.Services.Protocols.SoapException: Verify Session ID failed [global] at LogicBase.Ensemble.Userman.Userman.VerifySession(String sessionID, String[] permissions) [global] at LogicBase.Ensemble.Global.Application_AuthenticateRequest(Object sender, EventArgs e)
Followed by:
Error deleting user data. LogicBase.Core.Messaging.CouldNotCreateExchangeException: The requested exchange is not externally available Server stack trace: at LogicBase.Core.Messaging.MessageExchangeFactory.FindExchangeConfiguration(String name, Boolean internalRequest) at LogicBase.Core.Messaging.MessageExchangeFactory.CreateLocalTarget(String name, Boolean internalRequest) at LogicBase.Core.Messaging.MessageExchangeFactory.GetExchangeTarget(String name, Boolean internalRequest, NetworkCredential credential) at LogicBase.Core.Messaging.Remoting.MessagingServer.GetQueue(String exchangeName, String session) at LogicBase.Core.Messaging.Remoting.MessagingServer.Remove(String session, String exchangeName, String ID) at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at LogicBase.Core.Messaging.Remoting.MessagingServer.Remove(String session, String exchangeName, String ID) at LogicBase.Core.Messaging.RemoteServerImpl.Remove(String ID) at LogicBase.Ensemble.Core.EnsembleLoginHelper.DeleteSessionData(String messageID)
Per the requirements of load balancing, the local file exchange that handles Process Manager sessions had been moved into SQL. We were able to find in the SYMQ Browser utility that the session for this user existed, but it must have become corrupt somehow.
These session entries in the Process Manager session exchange are meant to be temporary, so we were able to delete the entry and it was recreated properly. We used the following SQL commands to identify and then delete the offending record.
select * from Messages where MessageID = 'b76aed42-afe7-11e1-923e-00505693005f' (obviously replacing the session ID with the one you're looking for).
Assuming there's one and only one entry for that Session ID in the database, run the following query to delete it.
delete from Messages where MessageId = 'b76aed42-afe7-11e1-923e-00505693005f'
After deleting this Session ID record, the user was able to succesfully login.
Applies To
ServiceDesk 7.1 SP2