To comment on my own experience:

- I have never had it miss files without verify_all
- I second the "connection reset on completion" issue, some kind of race
condition where both sides try to "hang up"?
- Never had issues with steam.inf vanishing

My setup is an overly-complicated system where config-specific files are
stored elsewhere and symlinked into the working directory before use.
Before every startup, I delete all symlinked files from the directory and do
an update check, then re-symlink the appropriate files.  This means that
many "default" files are missing when I do the update check (mapcycle, motd
ETC).  WITHOUT FAIL the update check notices the missing files and reaquires
them.  Note that this is not with a verify_all (my understanding is the
difference is that verify_all will actually do a checksum of the files; a
normal update check only downloads missing files and files tagged as being
updated)

Given the above, I literally can not conceive of a situation where an update
completes successfully but files are missing.  This is most confusing.


> - 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:hlds_linux-
> [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