As you may have seen with RC8 already we have concentrated our efforts in the last months to improve the¬†stability¬†and performance of photon.¬†The last weeks have been the toughest due to some really nasty hard to reproduce bugs. Today we are really glad to announce the release of RC9 which in terms of¬†stability¬†and quality could/should be called final 3.0 release.
It’s not ¬†the final 3.0 – only because we haven’t finalized Photon HTTP (lite hosted in IIS) and a couple of¬†improvements¬†in our utilities (photoncontrol/stardust) mostly to address some of the¬†difficulties we have seen our new developers get confronted with when setting up photon the first time, which will take another two weeks and we didn’t wan’t to wait that long to get this fixes out – just to mention some of the fixes:
- Udp/ENet peer leak – appearing during the 24 hours before the tickcount wrap (every 49.7 days) – this could depending on your application lead to a performance hit on your server.
- Two Tcp peer leaks – one caused by an unhandled exception in the timer callback and one by an issue in the policylistener code
- ENet disconnect notification delay for large ping intervals
- Performance counter inconsistencies
- An¬†infinite¬†loop in the tcp stream parser
- Flow control and parsing errors (unexpected message) in the TcpListener and the S2S API
- Exception in LiteGame ExecuteOperation and ProcessMessage causing Photon to shut down (restart)
- An unhandled exception thrown when clients sent duplicate parameter codes
These release also introduces a couple of improvments for logging and monitoring:
- New performance counter:
- policy requests now have their own set of counters
- failed policy requests
- enet datagram validation errors
- peer lifecylcle counters peers created, disconnected (by timeout, client, exception, server-app), destroyed (=cleaned up)
- New server side peer stats/tracking features:
- RTT¬† and RTT-Variance
- OnDisconnect now has a disconnect reason as enum and debug string (e.g. exceptions details in case of an exception)
- Monitoring messages – we introduced the feature in RC8 but are anouncing it know after it passed our testing cycle¬†all listeners will echo the char ‘}’ / 0x7D (in RC8 it was 0xFF but we changed it when we noticed that some of the¬†services out there wouldn’t allow to configure 0xFF)
- In a similar vein – in RC8 we intoruced Enet Outbound peers – which we are now ready to announce publicly. But what are they for? Well¬†definitely¬†not for server-to-server comunication where TCP excels – we see their main purpose in¬†stress/load testing (we leveraged a whole set of tests we had developed for our s2s api) and for health checks (see the LatencyMonitor in our loadbalancing application as an example for this).
For a more detailed list of changes and fixes please refer to the¬†Photon3-ChangeHistory.