Justin Clark-Casey (justincc)
9bcf072795
Make it possible to switch whether we serialize osd requests per endpoint or not, either via config (SerializeOSDRequests in [Network]) or via the "debug comms set" console command.
...
For debug purposes to assess what impact this has on network response in a heavy test environment.
2013-08-05 23:44:48 +01:00
Justin Clark-Casey (justincc)
139dcf1246
minor: move "threads abort" and "force gc" console commands into debug category - these are not things one needs to do in normal operation
2013-08-05 23:06:17 +01:00
Justin Clark-Casey (justincc)
160659f683
Make it possible to set worker/iocp min/max threadpool limits on the fly with the console command "debug threadpool set"
2013-08-05 23:04:36 +01:00
Justin Clark-Casey (justincc)
76bd3de2fd
Add checks monitoring framework to provide alerts if certain conditions do not hold.
...
Not yet in use.
2013-08-05 19:22:47 +01:00
Diva Canto
3dac92f345
Increased the rate of the PollServiceRequestManager to 0.5 secs (it was 1sec). Group chat is going over the EQ... Hopefully this won't increase CPU when there's nothing going on, but we need to watch for that.
2013-07-26 21:40:04 -07:00
Justin Clark-Casey (justincc)
056a6ee765
Fix regression tests relating to agent transfer by making simulator use last week's SIMULATOR/0.1 protocol for now.
2013-07-26 19:22:30 +01:00
Diva Canto
18d5d8f5dd
Removed verbose debug from previous commit
2013-07-21 09:00:08 -07:00
Diva Canto
edafea6ae6
PollServiceRequestManager: changed the long poll from a Queue to a List. No need to dequeue and enqueue items every 1sec.
2013-07-21 08:59:48 -07:00
Diva Canto
98d47ea428
Delay the enqueueing of non-longpoll requests for 100ms. No need to have these requests actively on the processing queue if it seems they're not ready.
2013-07-21 08:57:16 -07:00
Diva Canto
b5062ae7ee
Changed the timoeut of EQ 502s (no events) to 50 secs. The viewer post requests timeout in 60 secs.
...
There's plenty of room for improvement in handling the EQs. Some other time...
2013-07-18 13:30:04 -07:00
Diva Canto
552b85d33d
Revert "Revert "Putting the requests back in the queue while testing for count >0 is not the smartest move...""
...
This reverts commit 7127891957
.
2013-07-18 12:25:04 -07:00
Diva Canto
9e35b069a4
Reverting the reverts I did yesterday. cpu-branch has now been
...
successfully tested, and I'm merging back those changes, which proved to
be good.
Revert "Revert "Cleared up much confusion in PollServiceRequestManager. Here's the history:""
This reverts commit fa2370b32e
.
2013-07-18 12:23:27 -07:00
Diva Canto
fa2370b32e
Revert "Cleared up much confusion in PollServiceRequestManager. Here's the history:"
...
This reverts commit e46459ef21
.
2013-07-17 15:05:36 -07:00
Diva Canto
7127891957
Revert "Putting the requests back in the queue while testing for count >0 is not the smartest move..."
...
This reverts commit f4317dc26d
.
2013-07-17 15:04:27 -07:00
Diva Canto
519dba9a69
Revert "Now trying DoubleQueue instead of BlockingQueue for the PollServiceRequestManager."
...
This reverts commit 5f95f4d78e
.
2013-07-17 15:03:16 -07:00
Diva Canto
5c54eb30ed
Revert "This is a completely unreasonable thing to do, effectively defying the purpose of BlockingQueues. Trying this, to see the effect on CPU."
...
This reverts commit 5232ab0496
.
2013-07-17 15:02:54 -07:00
Diva Canto
5232ab0496
This is a completely unreasonable thing to do, effectively defying the purpose of BlockingQueues. Trying this, to see the effect on CPU.
2013-07-17 14:36:55 -07:00
Diva Canto
5f95f4d78e
Now trying DoubleQueue instead of BlockingQueue for the PollServiceRequestManager.
2013-07-17 14:09:04 -07:00
Diva Canto
f4317dc26d
Putting the requests back in the queue while testing for count >0 is not the smartest move...
2013-07-17 12:57:34 -07:00
Diva Canto
e46459ef21
Cleared up much confusion in PollServiceRequestManager. Here's the history:
...
When Melanie added the web fetch inventory throttle to core, she made the long poll requests (EQs) effectively be handled on an active loop. All those requests, if they existed, were being constantly dequeued, checked for events (which most often they didn't have), and requeued again. This was an active loop thread on a 100ms cycle!
This fixes the issue. Now the inventory requests, if they aren't ready to be served, are placed directly back in the queue, but the long poll requests aren't placed there until there are events ready to be sent or timeout has been reached.
This puts the LongPollServiceWatcherThread back to 1sec cycle, as it was before.
2013-07-17 11:19:36 -07:00
Justin Clark-Casey (justincc)
1b7b664c86
Add request received/handling stats for caps which are served by http poll handlers.
...
This adds explicit cap poll handler supporting to the Caps classes rather than relying on callers to do the complicated coding.
Other refactoring was required to get logic into the right places to support this.
2013-07-15 23:27:46 +01:00
Justin Clark-Casey (justincc)
2025dd25f6
Add missing file BaseOutputStreamHandler.cs from recent commit e19defd
2013-07-08 23:50:40 +01:00
Justin Clark-Casey (justincc)
dc54581700
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
2013-07-08 22:19:37 +01:00
Diva Canto
b2d4b8b1da
BaseHttpServer: if the handler sets the content length, don't override it. This happens in HEAD handlers.
2013-07-08 14:12:11 -07:00
Justin Clark-Casey (justincc)
e19defde36
Add "show caps stats by user" and "show caps stats by cap" console commands to print various counts of capability invocation by user and by cap
...
This currently prints caps requests received and handled, so that overload of received compared to handled or deadlock can be detected.
This involves making BaseStreamHandler and BaseOutputStream record the ints, which means inheritors should subclass ProcessRequest() instead of Handle()
However, existing inheriting classes overriding Handle() will still work, albeit without stats recording.
"show caps" becomes "show caps list" to disambiguate between show caps commands
2013-07-08 22:03:07 +01:00
Justin Clark-Casey (justincc)
a33b6eed6d
minor: remove mono compiler warnings in WebsocketServerHandler.cs
2013-06-20 00:54:19 +01:00
Justin Clark-Casey (justincc)
84af1cab9b
Display existing statistic of how many http requests a server is making as server.network.HTTPRequestsMade in "show stats all"
2013-06-19 20:48:12 +01:00
Justin Clark-Casey (justincc)
9501a583cb
Make number of inbound http requests handled available as a httpserver.<port>.IncomingHTTPRequestsProcessed stat
2013-06-18 23:07:18 +01:00
Justin Clark-Casey (justincc)
b7c9dee033
refactor: Move existing code to generate report information on the threadpool to the ServerBase rather than being in Util
2013-06-17 23:57:10 +01:00
Justin Clark-Casey (justincc)
0d2fd0d914
Make general server stats available on the robust console as well as the simulator console
...
This means the "show stats" command is now active on the robust console.
2013-06-17 22:39:00 +01:00
Justin Clark-Casey (justincc)
47b6e78790
Implement logging of first 80 characters (debug level 5) or full body data (debug level 6) on outgoing requests, depending on debug level
...
This is set via "debug http out <level>"
This matches the existing debug level behaviours for logging incoming http data
2013-06-12 21:34:20 +01:00
Justin Clark-Casey (justincc)
7af97f88b7
Add port numbers to poll service thread names so that we can tell which belong to which HttpServer
2013-06-10 23:39:17 +01:00
Justin Clark-Casey (justincc)
32d1e50565
Reinstate explicit starting and stopping of PollServiceRequestManager added in 3eee991
but removed in 7c0bfca
...
Do not rely on destructors to stop things.
These fire at unpredictable times and cause problems such as http://opensimulator.org/mantis/view.php?id=6503
and most probably http://opensimulator.org/mantis/view.php?id=6668
2013-06-10 23:30:35 +01:00
Melanie
75631e0267
Supply proper type information for the various types of requests
2013-06-07 23:55:03 +01:00
Melanie
7c0bfca7a0
Adding Avination's PollService to round out the HTTP inventory changes
2013-06-07 23:43:45 +01:00
Justin Clark-Casey (justincc)
8e04c752fc
If OpenSimulator is writing a PID file and finds the file already present on startup, logging an error since this is commonly due to an unclean shutdown.
...
Unclean shutdown can cause constantly moving objects to disappear if an OAR has just been loaded and they have not reached persistence time threshold, among other problems.
2013-04-09 22:38:47 +01:00
teravus
d2367968e4
* In between the fog, a moment of clarity. This fixes mantis 6570
2013-04-04 19:10:23 -04:00
teravus
6e1b3f9951
*Yet another HTTPServer update code changes in OpenSim Libs. * This fixes a connection close issue by getting rid of the socket references * This adds a connection timeout checker to shutdown poor or evil connections and combats DOS attempts that just connect and make no complete requests and just wait. It also actually implements KeepAlive... instead of just understanding the connection header in the request... you can test by connecting and requesting a keepalive header and sending another request on the same connection. The new timeout checker closes expired keepalive sessions, just make sure you send the request within 70 seconds of connecting or the timeout checker will timeout the connection.
2013-03-16 03:14:11 -04:00
Justin Clark-Casey (justincc)
12900ea84e
Log same environment information to Robust log as is already done for simulator logs, for debug purposes
2013-03-14 23:39:15 +00:00
BlueWall
f676408e2a
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
2013-03-05 15:30:54 -05:00
teravus
69fbcdf14c
* Add a Max Payload size property to the Websocket Server Handler. If you would like to restrict the maximum packet size, (and therefore protect against Memory DOSing) then you should set this. I defaulted it to 40MB. This means that in theory, a malicious user could connect and send a packet that claims that the payload is up to 40 mb (even if it doesn't actually turn out to be 40mb. More testing needs to be done on it where the packets are maliciously malformed.
2013-03-05 00:04:09 -05:00
BlueWall
66d74e76b1
Add method to remove JsonRpc Handlers from the server
2013-03-03 09:40:44 -05:00
Justin Clark-Casey (justincc)
056f11c297
Show http poll handlers in separate http (poll) section of "show http-handlers" console command instead of never showing them (due to a previous bug).
...
The code was assuming that poll handlers were also included in general http handlers but this was not the case.
2013-02-27 20:33:11 +00:00
Justin Clark-Casey (justincc)
80c19b7cac
Make sure we dispose of WebResponse, StreamReader and Stream in various places where we were not already.
2013-02-27 00:21:02 +00:00
Diva Canto
4779f7d7d5
Deleted all AssemblyFileVersion directives
2013-02-19 17:14:55 -08:00
teravus
c22276a169
* gracefully handle a Situation where a double close is called on the WebSocket handler
2013-02-14 18:43:53 -05:00
teravus
94a5232d3a
* Adds Websocket support to baseHttpServer and IHttpServer.cs . This allows modules to set up a websocket server that websocket clients can connect to. An example module is in OptionalModules/Example/WebSocketEchoTest/WebSocketEchoModule.cs
2013-02-07 10:50:17 -05:00
teravus
4867a7cbbf
This is the final commit that enables the Websocket handler
2013-02-07 10:27:18 -05:00
teravus
1dc09d8e8f
We're not really done here.. but we're getting there. Socket Read is working.. Still have to do Header.ToBytes and compose a websocket frame with a payload.
2013-02-05 18:02:25 -05:00
Justin Clark-Casey (justincc)
1f1da23097
Bump version and assembly version numbers from 0.7.5 to 0.7.6
...
This is mostly Bluewall's work but I am also bumping the general version number
OpenSimulator 0.7.5 remains in the release candidate stage.
I'm doing this because master is significantly adding things that will not be in 0.7.5
This update should not cause issues with existing external binary DLLs because our DLLs do not have strong names
and so the exact version match requirement is not in force.
2013-02-05 00:23:17 +00:00
BlueWall
2841ed05cf
Merge branch 'master' of /home/opensim/var/repo/opensim
2013-01-23 08:16:18 -05:00
BlueWall
1776986dc3
Add additional return status
...
Adding additional return status for JsonRpcMethod. Now returns true/false
2013-01-23 08:14:21 -05:00
Justin Clark-Casey (justincc)
3eee991935
Explicitly stop PollServiceRequestManager() rather than relying on its destructor.
...
Hopes to address occasional shutdown failures from http://opensimulator.org/mantis/view.php?id=6503
2013-01-19 02:04:36 +00:00
BlueWall
ca3e0d67d2
Add Json-Rpc 2.0 To Registered Handlers
...
Added registration json-rpc handlers in the http server. Covers version 2.0
See: http://www.jsonrpc.org/specification
2013-01-15 10:04:16 -05:00
Justin Clark-Casey (justincc)
fdf8876e20
In BaseHttpServer.HandleRequest(), use Culture.SetCurrentCulture() rather than creating a new CultureInfo separately
2012-12-05 21:52:10 +00:00
Justin Clark-Casey (justincc)
22d4c52ffc
Consistenly make NUnit test cases inherit from OpenSimTestCase which automatically turns off any logging enabled between tests
2012-11-24 03:15:24 +00:00
Justin Clark-Casey (justincc)
999cb4b20c
Make "show threads" and "thread abort" console commands available on all servers
2012-11-23 04:40:49 +00:00
Justin Clark-Casey (justincc)
e0a3e01850
Make "force gc" console command available across all servers
2012-11-23 04:27:04 +00:00
Justin Clark-Casey (justincc)
4b46a0d536
Make "show version" console command available across all servers
2012-11-23 04:19:08 +00:00
Justin Clark-Casey (justincc)
065d6d6fe1
Delete unused BaseHttpServer.HandleAgentRequest()
2012-11-23 04:15:21 +00:00
Justin Clark-Casey (justincc)
3ce00e97cc
Factor out command script code.
...
This also allows comments in command scripts (lines starting with ;, # or //) to be used across all servers
2012-11-22 05:57:20 +00:00
Justin Clark-Casey (justincc)
9fcf3f1a3f
Make "config show/set/get/save" console commands available on all servers
2012-11-22 05:48:41 +00:00
Justin Clark-Casey (justincc)
8269d2b893
Factor out common pid file creation and removal code.
...
Log path at which pid file is created or reason for failure to create.
2012-11-22 05:14:43 +00:00
Justin Clark-Casey (justincc)
42e87a6582
Add "get log level" command - this returns the current server session console logging level.
...
This supersedes getting information by calling "set log level" without a 4th argument, which is confusing.
2012-11-22 04:57:45 +00:00
Justin Clark-Casey (justincc)
34ff96a119
Remove unused BaseOpenSimServer.ShowHelp()
2012-11-22 04:52:29 +00:00
Justin Clark-Casey (justincc)
4c4379b50f
Make "set log level" command available across all servers
2012-11-22 04:50:09 +00:00
Justin Clark-Casey (justincc)
45d1e6ab09
Make "show info" command available across all servers
...
This helpfully lists version information, startup location and console log level
2012-11-22 04:45:53 +00:00
Justin Clark-Casey (justincc)
cf03d6ea92
Factor out common registration of "show uptime" command
2012-11-22 04:11:03 +00:00
Justin Clark-Casey (justincc)
5c48d7a378
factor out common HandleShow code for "show uptime"
2012-11-22 04:05:09 +00:00
Justin Clark-Casey (justincc)
74a20a62ee
refactor: Factor out copy/pasted server uptime report code
2012-11-22 03:43:21 +00:00
Justin Clark-Casey (justincc)
dc5711ad62
minor: If logging full incoming HTTP data, don't deceptively print ... at the end of the body.
2012-11-20 04:10:03 +00:00
Diva Canto
27b12cebbb
A few more AssemblyInfos in a few more dlls.
2012-11-14 08:10:15 -08:00
Justin Clark-Casey (justincc)
c97890ca69
Add "force gc" region console command which manually invokes garbage collection.
...
For debugging purposes.
2012-10-29 22:53:06 +00:00
Justin Clark-Casey (justincc)
2206132ab9
minor: Get content type handler logger to log "unset" for the content type instead of blank if no content type was set.
2012-10-23 00:44:47 +01:00
Justin Clark-Casey (justincc)
542d075376
minor: Use LogIncomingToContentTypeHandler() method for incoming HTTP data where this wasn't already used.
...
This allows log level 5 (log sample or large part of incoming post data) to operate and removes copy/paste.
2012-10-23 00:39:59 +01:00
Justin Clark-Casey (justincc)
991151250d
If we're avoiding printing a long request warning for a GetTexture CAP call, check we received a request handler first since this is not guaranteed.
...
Resolves harmless logged exception when content type and generic xml rpc requests take more than 3 seconds.
2012-10-18 00:39:43 +01:00
Justin Clark-Casey (justincc)
1f2472d0fc
Extend "show stats" command to "show stats [list|all|<category name>]"
...
This allows different categories of stats to be shown, with options to list categories or show all stats.
Currently categories are scene and simulator and only a very few stats are currently registered via this mechanism.
This commit also adds percentage stats for packets and blocks reused from the packet pool.
2012-10-11 23:28:53 +01:00
Melanie
060d6fe8f4
Allow setting max connections for an endpoint
2012-09-30 16:30:16 +01:00
Diva Canto
91a5c602e3
Revert "Added request.Proxy=null everywhere, as discussed in http://stackoverflow.com/questions/2519655/httpwebrequest-is-extremely-slow ."
...
But the patch is here, in case anyone wants to try it.
This reverts commit 531edd51d8
.
2012-09-30 07:48:03 -07:00
Diva Canto
531edd51d8
Added request.Proxy=null everywhere, as discussed in http://stackoverflow.com/questions/2519655/httpwebrequest-is-extremely-slow .
...
Thanks R.Gunther (rigun@rigutech.nl ) https://lists.berlios.de/pipermail/opensim-users/2012-September/010986.html
2012-09-30 07:22:55 -07:00
Justin Clark-Casey (justincc)
f457952755
Fix bug where debug http level 6 could not be specified. Also converts newlines at this level to '\n' to enable them to be logged.
2012-09-29 02:38:21 +01:00
Diva Canto
772aedc731
Make BaseHttpServer throws say something useful.
2012-09-22 14:01:07 -07:00
Justin Clark-Casey (justincc)
1b0abf8f0c
Comment out the long unused afaik HTTP agent handlers.
...
As far as I know, this was only used by the IBM Rest modules, much of which has been commented out for a very long time now. Other similar code uses HTTP or stream handlers instead.
So commenting this out to reduce code complexity and the need to make this facility consistent with the others where it may not be used anyway.
If this facility is actually being used then please notify me or uncomment it if you are core.
2012-09-21 00:29:13 +01:00
Justin Clark-Casey (justincc)
e29d563557
Add request number counting to incoming HTTP requests in the same way that this was already being done for outgoing HTTP requests.
...
This allows us to associate debug logging messages with the right request.
It also allows us to put a request number on 'long request' logging even if other debug logging is not enabled, which gives us some idea of whether every request is suffering this problem or only some.
This is a separate internal number not associated with any incoming number in the opensim-request-id header, this will be clarified when logging of this incoming request number is re-enabled.
This commit also adds port number to HTTP IN logging to allow us to distinguish between different request numbers on different ports.
2012-09-21 00:09:17 +01:00
Justin Clark-Casey (justincc)
a5b3989e5d
Insert a new log level 4 for HTTP IN and HTTP OUT that will log how long the request took.
...
This is only printed if debug http level >= 4 and the request didn't take more than the time considered 'long', in which case the existing log message is printed.
This displaces the previous log levels 4 and 5 which are now 5 and 6 respectively.
2012-09-20 23:18:19 +01:00
Justin Clark-Casey (justincc)
387a1bb283
Add ability to turn on/off logging of outgoing HTTP requests flowing through WebUtil.
...
This is for debugging purposes.
This is controlled via the "debug http" command which can already log incoming requests.
This now gains a mandatory parameter of in, out or all to control what is logged.
Log messages are also shortened and labelled and HTTP IN or HTTP OUT to be consistent with existing UDP PACKET IN and PACKET OUT messages.
2012-09-20 23:17:44 +01:00
Justin Clark-Casey (justincc)
cdc3781f42
Fix usage statement on "debug http" console command since max level is now 5 rather than 3
2012-09-12 23:02:25 +01:00
Justin Clark-Casey (justincc)
7df7b86ec5
Fix bug in logging sample input at debug http level 4.
...
Also converts newlines to "\n" text.
2012-09-12 23:01:07 +01:00
Justin Clark-Casey (justincc)
d53a53d4c5
Make "show http-handlers" command available for ROBUST instances as well as the simulator executable.
2012-09-12 00:10:48 +01:00
Justin Clark-Casey (justincc)
25111e703f
Add levels 4 and 5 to "debug http" console command that will log a sample of incoming request data and the entire incoming data respectively.
...
See "help debug http" for more details.
2012-09-11 21:48:51 +01:00
Justin Clark-Casey (justincc)
15d5f3d09d
Bump master code up to 0.7.5 now that 0.7.4 is out.
2012-09-04 00:11:14 +01:00
Justin Clark-Casey (justincc)
1133f81dce
Remove a couple of compiler warnings pointed out by SignpostMarv
2012-07-27 20:40:25 +01:00
Justin Clark-Casey (justincc)
5aec0ff207
Move Watchdog and MemoryWatchdog classes into OpenSim.Framework.Monitoring with other monitoring code from OpenSim.Framework
2012-07-25 23:27:00 +01:00
Justin Clark-Casey (justincc)
35efa88c26
Rename OpenSim.Framework.Statistics to OpenSim.Framework.Monitoring.
...
This better reflects the long-term purpose of that project and matches Monitoring modules.
2012-07-25 23:11:50 +01:00
Justin Clark-Casey (justincc)
916e3bf886
Where possible, use the system Encoding.ASCII and Encoding.UTF8 rather than constructing fresh copies.
...
The encodings are thread-safe and already used in such a manner in other places.
This isn't done where Byte Order Mark output is suppressed, since Encoding.UTF8 is constructed to output the BOM.
2012-07-11 22:54:22 +01:00
Justin Clark-Casey (justincc)
dca04c7b61
Avoid a race condition where an incoming request to a script external URL can trigger an exception is the URL was being removed at the same time.
...
This involves three steps
1) Return gracefully in UrlModule.HttpRequestHandler() instead of throwing an exception when the url cannot be found in its index
2) Return true instead of false in HasEvents() if no matching request is found in the map. This call will only happen in the first place for raced requests.
3) Return a 404 in GetEvents() if the request is not in the index, rather than a blank 200 OK.
Many thanks to Tom Haines in http://opensimulator.org/mantis/view.php?id=6051 for doing some of the work on this.
2012-06-22 23:16:18 +01:00
Justin Clark-Casey (justincc)
9f3feeff8d
If starting scripts on initial sim start, provide INFO level log feedback each time 50 scripts have been started.
...
This is to provide an indication of what's happening now that the default isn't to report every single script start.
Changes XEngine logging level in OpenSim.exe.config from WARN to INFO.
2012-06-22 02:10:27 +01:00
Justin Clark-Casey (justincc)
4cfaa01c0a
Remove STARTUP COMPLETE message from the startuplogo.txt file and into main logging
2012-06-20 01:06:55 +01:00
Justin Clark-Casey (justincc)
6b3f9fcde0
Comment out the neighbour and land in connectors from info logging that they are starting up
2012-06-20 00:42:54 +01:00
Justin Clark-Casey (justincc)
ed513fc7be
Fix bug introduced in commit c6e3752
(13 Jun 2012) where poll responses would always return OK even if some other status code had been set
2012-06-16 03:43:45 +01:00