Closed Bug 849808 Opened 11 years ago Closed 9 years ago

Figure out an archive strategy for old release symbols

Categories

(Infrastructure & Operations Graveyard :: WebOps: Socorro, task)

task
Not set
normal

Tracking

(Not tracked)

RESOLVED INCOMPLETE

People

(Reporter: ted, Assigned: ted)

References

Details

(Whiteboard: [kanban:https://webops.kanbanize.com/ctrl_board/2/219] )

We currently never remove symbols from release builds. This is not a great long-term strategy, especially in the modern rapid-release world. However, I can't bring myself to say that they ought to be deleted.

I'd like to figure out a way to archive symbols for old release builds to some kind of long-term storage so we can remove them from the NetApp storage. I don't care if it's tape backups or Amazon Glacier or what, as long as we can automate it at some point.
Assignee: server-ops → server-ops-webops
Component: Server Operations → Server Operations: Web Operations
QA Contact: shyam → nmaul
Component: Server Operations: Web Operations → WebOps: Other
Product: mozilla.org → Infrastructure & Operations
Component: WebOps: Other → WebOps: Socorro
We discussed Glacier as a possible back-up solution (alternatively, pushing to S3 and then using archive rules to push to Glacier...mmm, automation).  Feels like SLAs would be okay.  No concerns around backing up private symbols because we're supposed to be monitoring to prevent them.  Additionally, we discussed whether we could use NetApp's de-dup functionality, but the store may be too big for that (currently 6.4TB).  We could go through object hashes, find duplicates and rationalize duplicate objects but that may be tough given the data store size.
i have some ideas about -> s3 - lifecycle rule -> glacier. grabbing this.
Assignee: server-ops-webops → cturra
I consulted with ted and it turns out we do get at least one set of symbols on purpose that are not public. That may change our options.
FYI we were using NetApp de-dupe last I knew, but that may have changed when we moved storage backends.
is there a way to identify private symbols? if so, we can archive only public symbols and leave private ones in netapp.
Flags: needinfo?(ted)
The private symbols are easy to identify. How important is their inclusion in the backups? Do we expect to have more of them in the future?
It's a single directory in the symbol store. If it's a problem I'd say just leave them out of the backup. We will continue to get new symbol files there for the forseeable future, but I'm not overly worried about backing them up.
Flags: needinfo?(ted)
i spent some time late last week/over the weekend playing with this and have come up with a strategy i'm pretty happy with. however, before pushing terabytes of data out to s3, i thought i would run my solution by the group for a review.

i have created a small shell script on sp-admin01.phx1 that looks through all the symbols_* directories and will push files which have been changed in the last day up to an s3 bucket. it of course will exclude any of the private directories we identify.

once the files are in s3, i have configured a lifecycle rule to archive objects into Glacier after 1 day and delete them from the s3 bucket after 7 days. the following docs discuss how to restore an object:

  http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOSTrestore.html


i would be happy to hand over the access keys for the service account i created so a recovery function, etc can be written into the symbols tools.


how does this all sound?
Flags: needinfo?(ted)
I don't think that's what we want to do. The majority of symbols on the symbol store are for nightly builds and they get deleted after ~30 days. Archiving them is a waste of space. This bug as filed is for archiving symbols from release builds, of which there are way fewer.

You could archive just release symbols by doing something like:
1) Gather all -symbols.txt files whose version does not contain "a1" or "a2". The version is the second piece of the filename if you split it on '-'.
2) Gather all files listed in the contents of those -symbols.txt files.
3) Archive that entire set of files.
Flags: needinfo?(ted)
The current cleanup script (that skips release builds) is here:
http://hg.mozilla.org/build/tools/file/tip/buildfarm/breakpad/cleanup-breakpad-symbols.py
Whiteboard: [kanban:https://kanbanize.com/ctrl_board/4/644]
Whiteboard: [kanban:https://kanbanize.com/ctrl_board/4/644]
putting this back into the unassigned queue now that i am leaving mozilla.
Assignee: cturra → server-ops-webops
Whiteboard: [kanban:https://webops.kanbanize.com/ctrl_board/2/219]
(In reply to Ted Mielczarek [:ted.mielczarek] from comment #9)
> I don't think that's what we want to do. The majority of symbols on the
> symbol store are for nightly builds and they get deleted after ~30 days.
> Archiving them is a waste of space. This bug as filed is for archiving
> symbols from release builds, of which there are way fewer.
> 
> You could archive just release symbols by doing something like:
> 1) Gather all -symbols.txt files whose version does not contain "a1" or
> "a2". The version is the second piece of the filename if you split it on '-'.
> 2) Gather all files listed in the contents of those -symbols.txt files.
> 3) Archive that entire set of files.

Ted, could you write a shell script or similar that does steps one and two, and emits a set of filenames that we could backup? That would provide you certainty that we're selecting the correct files and save us from several rounds of "is this right" "no, this actually" back and forth dev time.

(Still working on the actual storage/backup side, but it'd be one less thing blocking forward progress.)
Flags: needinfo?(ted)
Yes, this should be a fairly straightforward modification of the existing cleanup script. I'll take a crack at it.
Assignee: server-ops-webops → ted
Flags: needinfo?(ted)
Time out, please re-open when you have the updated script. Thanks!
Status: NEW → RESOLVED
Closed: 9 years ago
QA Contact: nmaul → smani
Resolution: --- → INCOMPLETE
Product: Infrastructure & Operations → Infrastructure & Operations Graveyard
You need to log in before you can comment on or make changes to this bug.