Raised This Month: $7 Target: $400
 1% 

[ANY] Cassandra


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
KyleS
SourceMod Plugin Approver
Join Date: Jul 2009
Location: Segmentation Fault.
Old 12-19-2018 , 23:23   [ANY] Cassandra
Reply With Quote #1

As it's Christmas I thought it would be good to open-source some ancient (5+ yearold) plugins that have served me well... First off; Cassandra.

What is Cassandra?
This VSP with MM:S and SM components installs a signal handler to catch any crashes your server unfortunately encounters.

Great, doesn't TF do this by default now?
Well... yes; I think it does? With the exception this will automatically reconnect clients before restarting.

But my server keeps hanging; not crashing!
Yes; the infallible hangy/crashy implementation with parallel snapshots and similar are still plaguing every released Valve game with the convar now defaulting to off... This also installs a watchdog and does the aforementioned behaviour when an issue is detected.

What platforms does this work on?
This should work without issue on CS:GO (pre-protobuf) and CS:S Linux (current).

Hope this helps someone.
Attached Files
File Type: xz Cassandra.tar.xz (4.8 KB, 732 views)
File Type: sp Get Plugin or Get Source (Cassandra.sp - 957 views - 2.9 KB)
KyleS is offline
backwards
AlliedModders Donor
Join Date: Feb 2014
Location: USA
Old 01-02-2019 , 08:32   Re: [ANY] Cassandra
Reply With Quote #2

This is really nice, I tried making something like this a few years ago but always ran into issues of the netchannels not being functional at the event of the un-handled exception. Attempting to transmit data to clients would force close the process and i assume this varies depending on the type of crash the server suffers. I attempted to just send the network data through the socket via a secondary program that would write every few seconds, all the connect clients ip:port. But I never finished the work on sending the single instance of reconnect client execute command binary data.

You can expand on this for standard game modes and attempt to restore the map and scoreboard data to its last known good snapshot which was saved to a file. Saving prop_physics positions and players kills/deaths to restore upon connect and allowing for a 15 - 30 second recovery time for alive players to be re-spawned alive.
__________________
I highly recommend joining the SourceMod Discord Server for real time support.
backwards is offline
KyleS
SourceMod Plugin Approver
Join Date: Jul 2009
Location: Segmentation Fault.
Old 01-04-2019 , 14:47   Re: [ANY] Cassandra
Reply With Quote #3

Quote:
Originally Posted by 1337norway View Post
This is really nice
Glad someone found it.

Quote:
Originally Posted by 1337norway View Post
You can expand on this for standard game modes and attempt to restore the map and scoreboard data to its last known good snapshot which was saved to a file. Saving prop_physics positions and players kills/deaths to restore upon connect and allowing for a 15 - 30 second recovery time for alive players to be re-spawned alive.
I think Dota2 does this.
KyleS is offline
eyal282
Veteran Member
Join Date: Aug 2011
Old 04-11-2019 , 16:51   Re: [ANY] Cassandra
Reply With Quote #4

This vs Accelerator?
__________________
I am available to make plugins for pay.

Discord: Eyal282#1334
eyal282 is offline
asherkin
SourceMod Developer
Join Date: Aug 2009
Location: OnGameFrame()
Old 04-20-2019 , 16:38   Re: [ANY] Cassandra
Reply With Quote #5

Quote:
Originally Posted by eyal282 View Post
This vs Accelerator?
They do very different things, Cassandra attempts to reconnect clients and recover game state, you might even be able to use them together as long as this is loaded before Accelerator.
__________________
asherkin is offline
kadet.89
Veteran Member
Join Date: Nov 2012
Location: Serbia
Old 12-20-2020 , 14:48   Re: [ANY] Cassandra
Reply With Quote #6

I tried it on my CSGO server and get a crash about every 30-60 minutes with this stack:

Quote:
Crash reason: SIGSEGV /SEGV_MAPERR
Crash address: 0x4
Process uptime: not available

Thread 0 (crashed)
0 sourcemod.2.csgo.so + 0x6b921 ConCommandCleaner::UnlinkConCommandBase(ConCo mmandBase *)
1 sourcemod.2.csgo.so + 0x6bcea __SourceHook_FHCls_ICvarUnregisterConCommand0 ::CMyDelegateImpl::Call(ConCommandBase *)
2 sourcemod.2.csgo.so + 0x6ba81 __SourceHook_FHCls_ICvarUnregisterConCommand0 ::Func(ConCommandBase *)
3 metamod.2.csgo.so + 0x16b38 SMConVarAccessor::Unregister(ConCommandBase *)
4 metamod.2.csgo.so + 0x17416 BaseProvider::UnregisterConCommandBase(ConCom mandBase *)
5 metamod.2.csgo.so + 0x11794 MetamodSource::UnregisterConCommandBase(int, ConCommandBase *)
6 metamod.2.csgo.so + 0x11687 MetamodSource::UnregisterConCommandBase(Sourc eMM::ISmmPlugin *, ConCommandBase *)
7 sourcemod.2.csgo.so + 0x5d0a9 CoreProviderImpl::~CoreProviderImpl
8 libc-2.17.so + 0x32769
9 cassandra.ext.2.csgo.so + 0x20608 DATA XREF: Cassandra::InstallSignalHandler(void)
10 libc-2.17.so + 0x327cd
11 linux-gate.so + 0x410
I tried to move FindVar to Cassandra::Hooped, but it didn't change anything. What could be the reason?
kadet.89 is offline
Send a message via Skype™ to kadet.89
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 04:12.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode