First change in Vivox for ages! -- added a lock to serialize calls to vivox servers. This may ameliorate things when lots of avies arrive in a sim at about the same time. Turns out that there are 4 http requests per avie to Vivox.

cpu-performance
Diva Canto 2013-05-28 20:59:25 -07:00
parent 10e4fb2ce2
commit 7e1c7f54c7
1 changed files with 25 additions and 14 deletions

View File

@ -117,6 +117,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
private IConfig m_config; private IConfig m_config;
private object m_Lock;
public void Initialise(IConfigSource config) public void Initialise(IConfigSource config)
{ {
@ -128,6 +130,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
if (!m_config.GetBoolean("enabled", false)) if (!m_config.GetBoolean("enabled", false))
return; return;
m_Lock = new object();
try try
{ {
// retrieve configuration variables // retrieve configuration variables
@ -1111,6 +1115,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
doc = new XmlDocument(); doc = new XmlDocument();
// Let's serialize all calls to Vivox. Most of these are driven by
// the clients (CAPs), when the user arrives at the region. We don't
// want to issue many simultaneous http requests to Vivox, because mono
// doesn't like that
lock (m_Lock)
{
try try
{ {
// Otherwise prepare the request // Otherwise prepare the request
@ -1131,6 +1141,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice
{ {
m_log.ErrorFormat("[VivoxVoice] Error in admin call : {0}", e.Message); m_log.ErrorFormat("[VivoxVoice] Error in admin call : {0}", e.Message);
} }
}
// If we're debugging server responses, dump the whole // If we're debugging server responses, dump the whole
// load now // load now