Fletch, Steve, John, and everyone else:

Thank you for the information.  You've given me a lot to think about.


> I'm not an expert on the new content system, but I know that alternatives
> like this were considered.  Widespread ISP proxy support and the ability
> to temporarily expand bandwidth when Skyrim launches, etc are important
> factors that make rsync (or pretty much any custom protocol) undesirable.
> The new content system is based on HTTP fetching of "chunks."  It also
> dynamically grabs from different servers to automatically load balance.
> And no matter what the delivery protocol, the tool itself has some issues,
> as you've mentioned.  The new delivery system has a new update tool.
> We're hoping to migrate TF2 over to the new content system sometime next
> year.
>
> -----Original Message-----
> From: John Schoenick [mailto:[email protected]]
> Sent: Friday, December 16, 2011 1:49 PM
> To: Half-Life dedicated Linux server mailing list
> Cc: Fletcher Dunn
> Subject: Re: [hlds_linux] (ATTN: Valve) steam.inf missing and other
> "incomplete update" problems
>
> Are there any chances that we could get a rsync daemon on the new CDN
> servers to sync public repos? It's proven to be terribly reliable,
> supports renaming and file moves, and has modes to checksum all files,
> manage permissions, and so on. In fact, I would go as far as saying all
> that hldsupdatetool does, even if greatly improved with the new CDN, is
> act as a less featureful rsync.
>
> Additionally it would add all sorts of flexibility to update scripts.
> Telling when an update is optional vs required, moving files into place
> after they're all downloaded, detecting if this update is safe to run
> without shutting the server down first or locking it to one map, and so
> on. It would make our lives much, much easier.
>
> As for improving hldsupdatetool in the meantime, the issues I've noticed
> (nemrun works around some of these):
> - As noted, without -verify_all, it will miss files fairly regularly
> (protip: if you add -verify_all to nemrun's params it will always invoke
> the updatetool as such)
> - The tool will often give 'command aborted' or 'connection reset'.
> Sometimes mid-update, though *often* immediately after reaching 100%,
> making scripts that depend on the return value unable to tell if the
> update completed
> - Sometimes steam.inf just vanishes. The update tool deletes files before
> downloading new ones, so maybe this is a varient of the non-verify-all
> problems
> - Sometimes the tool seems to fail to detect timeouts, and will sit on
> 'updating files' indefinitely (hours) until you kill it.
> - The tool seems to not pick the best content server except on first
> startup, meaning on subsequent updates it will connect to severely
> overloaded servers. Deleting the clientregistry.blob prior to each update
> gives much better server selection.
>
> Also, if there's anything you would like nemrun and similar tools to do or
> not do to make your lives easier, do let us know!
>
> - John
>
> On 12/16/2011 11:45 AM, Fletcher Dunn wrote:
>> Sorry, I shouldn't have joined in with the shooting-from-the-hip
>> debugging.  I tossed out a troubleshooting suggestion, which I probably
>> shouldn't have done.  I was just looking for something that might be
>> different from this update compared to previous ones, to cause the
>> problem.  Looks like everybody but the original poster and me already
>> knew that steam.inf just doesn't update properly and it's a longstanding
>> problem.
>>
>> The update process...could use some improvement.  We know.  It will
>> happen when we convert the entire game to the new content delivery
>> system.
>>
>> Thanks,
>> - Fletch
>>
>> -----Original Message-----
>> From: [email protected]
>> [mailto:[email protected]] On Behalf Of
>> PharaohsPaw
>> Sent: Friday, December 16, 2011 9:05 AM
>> To: HLDS Linux
>> Subject: [hlds_linux] (ATTN: Valve) steam.inf missing and other
>> "incomplete update" problems
>>
>> Although I've said much of this already I'm making a separate post in
>> its own topic in hopes that Valve will give it some serious
>> consideration, and more importantly, do something about it to fix the
>> problem.  I am thankful that Valve staff does pay attention to this
>> mailing list.
>>
>> The subject of this post is a problem that has been around for a long
>> time.  I have been operating public gameservers off and on since 2006
>> and have seen this occur with some update releases pretty much since
>> then.  I am not the first person to say this happens, and I am also
>> pretty sure this is not the first time I had something to say about it
>> here.
>>
>> In short, the problem is incomplete updates.  It seems that the
>> (gamedir)/steam.inf file is the file most often left out of updates, but
>> sometimes other updated or new files are involved.  Sometimes
>> (apparently) files that an "updated" server will crash without are
>> missed.
>>
>> SCOPE OF PROBLEM
>> I should point out that I am specifically referring only to update
>> scenarios where the updater for a particular gameserver "tree" initiates
>> an update, pulls in files, AND RECEIVES A SUCCESSFUL "HLDS Installation
>> Is Up to Date" MESSAGE FROM THAT MASTER AND THE STEAM BINARY RESPONSIBLE
>> FOR UPDATING THE SERVER FILES EXITS WITH A 0 RETURN CODE when there are
>> actually files missing and the server cannot run properly afterwards as
>> a result.
>>
>> The scenario in question also involves NOT using -verify_all among the
>> arguments passed to the steam binary to perform the update.
>>
>> Whether the server in question is just using srcds_run with -autoupdate
>> among the command line arguments, or using nemrun or any other
>> properly-written script isn't important.
>>
>> While it is possible to have incorrectly-written scripts to run and/or
>> update our servers, that isn't what I'm talking about here.  Nemrun and
>> other properly-written update scripts do not run "./steam -command
>> update -game tf -dir ." (or whatever) only once and ASSUME the update
>> was successful.  We can't do that because it is fairly common to get a
>> connection reset from whichever master we are pulling the update from
>> before it is complete.  It has to check the return code from the steam
>> binary doing the update, and if it isn't 0, you have to repeat until it
>> IS 0.
>>
>> Also, it needs to be understood by anyone at Valve investigating this
>> problem that neither nemrun, nor any other script (including your own
>> srcds_run with used with -autoupdate) that I'm talking about does
>> anything more than call the steam binary with "-command update".  Nemrun
>> in updatedaemon mode may have its own implementation of checking in with
>> steam to see if an update is needed, but it does comply with your
>> protocols, and even when it does start an update, it only does it
>> because your masters said a required update was available.  And it calls
>> the same steam binary to do the actual updating that srcds_run does.
>>
>> Guess why the steam.inf file is so important?  This isn't specific to
>> nemrun, by the way.  It tells the dedicated server which version to
>> report to the steam masters.  So its contents (or existence) means
>> everything to that dedicated server when it checks in with the masters.
>> You could be 100% in sync with the latest dedicated server files, and
>> edit steam.inf to show an older version, and the next time your server
>> checks in with the masters it is going to tell you that you need to
>> update.  And until your steam.inf file has the same patch level/version
>> that the masters think is the latest required version, your server will
>> keep telling you to restart for the latest update.  The same is true if
>> the file isn't there at all.
>> So it's not just nemrun that needs this file.  It needs it for the same
>> reasons the gameserver itself does.
>>
>> The nemrun scripts are out there for Valve and anybody else to look at.
>> Please look at them before you say nemrun is the problem.  It isn't.
>>
>> So what IS going on?  As far as I'm concerned we have a couple of
>> different issues here:
>>
>> 1. The steam binary can remove the existing steam.inf file while
>> updating a server, even if it doesn't have an updated one to replace it
>> with.
>>
>> 2. The steam binary will exit with a 0 return code and claim that the
>> HLDS Installation is Up To Date when the server hasn't been fully
>> updated.
>>
>> Anyone seeing a pattern yet?
>>
>> STEAM BINARY
>>
>> Now, let's talk about distributing updates among your masters.  Here are
>> a couple questions anyone thinking about this rationally should ask:
>>
>> 1. Why does a master server tell you that an update is available if it
>> doesn't have ALL of the updated files yet?  If it doesn't have all the
>> updated files, it should not be telling you to restart your server UNTIL
>> IT DOES.
>>
>> 2. Why does the steam binary exit with a 0 RETURN CODE (successful) AND
>> EVEN TELL YOU 'HLDS Installation is Up To Date' if it doesn't have all
>> the files that got updated?
>>
>>
>> SUGGESTIONS
>> I don't have visibility of the inner workings of Valve's content
>> distribution system and I am not aware of whatever policies and
>> procedures you may have for releasing updates.  (and I am not sure I
>> would want to either, heh).  So I have to admit I am making some guesses
>> here.  But I have a few suggestions that I think would be relevant.
>>
>> 1. Look at the "protocol" used by your masters, or maybe just policies
>> and procedures for deploying updates onto them, which control when to
>> start issuing Server Out of Date messages to dedicated servers, so
>> that they will absolutely not under any circumstance start telling the
>> dedicated servers heartbeating in that they need to restart/update
>> UNTIL IT HAS
>> *ALL* OF THE UPDATED FILES READY TO SERVE.
>>
>> 2. If files and directories that need to be pushed out as updated
>> content have to be "flagged" by the folks preparing the updates for the
>> masters to know which files it is supposed to push out to the dedicated
>> servers for an update, HAVE SOMEONE QA CHECK THE FLAGGED FILES/DIRS LIST
>> before the update release is approved (and the master servers start
>> using it) to make sure files weren't left off the list.  ESPECIALLY THE
>> STEAM.INF FILE.  The steam.inf file is ALWAYS updated for mandatory
>> updates.  So checking the updated files list should ALWAYS require
>> making sure steam.inf is marked as a file to push out.
>>
>> 3. It is possible that nemrun or other scripts like it are talking
>> indirectly to a master (through an API) that isn't "in sync" with
>> whichever master server the steam binary will talk to to pull in the
>> update.  This is still not nemrun's fault.  The nemrun script is using
>> SteamAPI now to see if an update is available.
>> (https://api.steampowered.com).  If this API is telling "anyone that
>> asks"
>> that a required update is out before any (AND ALL) of the master servers
>> the steam binary will actually pull the update in from has the complete
>> set of update files ready to serve, then this needs to be fixed.  My
>> suggestion would be that api.steampowered.com be the LAST thing you guys
>> push to - ie, only after ALL of the steam masters that will be serving
>> updated content have 100% of the update and are ready to serve it.  So
>> the API host won't say there is an update until it's ready to be served.
>>
>> CONCLUSION
>> Rather than just telling people "-verify_all" is the only recommended
>> or supported way to update your gameserver, find and fix the problems
>> that make a "./steam -command update" fail sometimes without
>> -verify_all added
>> -- even if only to help yourselves out with the load on the masters when
>> updates get released.  I suspect the answer lies in one or more of the
>> items noted above.
>>
>> People don't like to use -verify_all to get updates because it takes
>> FOREVER to finish.  Doing an update without -verify_all usually only
>> takes a minute or so - whether doing that gets you a complete updated
>> server or not depends entirely on what the steam binary pulls in.
>> Nothing else.
>> You can't blame nemrun or something else when the steam binary exits
>> with a 0 return code and says "HLDS Installation Up To Date".
>>
>> Cheers.
>>
>> _______________________________________________
>> To unsubscribe, edit your list preferences, or view the list archives,
>> please visit:
>> https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlds_linux
>>
>> _______________________________________________
>> To unsubscribe, edit your list preferences, or view the list archives,
>> please visit:
>> https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlds_linux
>
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlds_linux
>


_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlds_linux

Reply via email to