AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Metamod:Source Plugins (https://forums.alliedmods.net/forumdisplay.php?f=76)
-   -   [ANY] Cassandra (https://forums.alliedmods.net/showthread.php?t=312904)

KyleS 12-19-2018 23:23

[ANY] Cassandra
 
2 Attachment(s)
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.

backwards 01-02-2019 08:32

Re: [ANY] Cassandra
 
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.

KyleS 01-04-2019 14:47

Re: [ANY] Cassandra
 
Quote:

Originally Posted by 1337norway (Post 2632359)
This is really nice

Glad someone found it. :bee:

Quote:

Originally Posted by 1337norway (Post 2632359)
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.

eyal282 04-11-2019 16:51

Re: [ANY] Cassandra
 
This vs Accelerator?

asherkin 04-20-2019 16:38

Re: [ANY] Cassandra
 
Quote:

Originally Posted by eyal282 (Post 2647139)
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.

kadet.89 12-20-2020 14:48

Re: [ANY] Cassandra
 
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?


All times are GMT -4. The time now is 13:25.

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