The ‘Try’ repository and its evolution

Recently (the past few years actually) we’ve been experiencing that Mercurial has problems scaling to it’s activity. Here are some statistics for example: 24550 Mercurial heads (this is reset every few months) Head count correlated with the degraded performance 4.3 GB in size, 203509 files without a working copy One of the methods we’re attempting is to modify try so that each push is not a head, but is instead a bundle that can be applied cleanly to any [mozilla-central](https://hg.

Mozilla’s “try” repository

We have quite a bit of infrastructure around this including Tinderbox Pushlog (TBPL) and more. This post deals with the infrastructure and problem we face while trying to scale the ’try’ repository. A few statistics: The try repository currently has 17943 heads. These heads are never removed. The try repository is about 3.6 GB in size. Due to Mercurial’s on-wire HTTP protocol, this number of heads causes HTTP cloning to fail There are roughly 81000 HTTP requests to try per day To fix problems (mentioned below), the try repository is deleted and re-cloned from mozilla-central every few months There are a number of problems associated with such a repository.

Measuring the performance improvement of Mercurial (NFS vs local disk)

The Mercurial developers were concerned about race conditions and concurrent write/reads causing service inconsistency between hosts. This became evident when stale file handles started appearing in our apache logs. An extension we wrote (pushlog) was also being served off of NFS. This is a problem not because we have multiple hosts writing at once, but because the file is kept in memory for the lifetime of the hgweb-serving WSGI process, and we’ve experienced that sometimes requests to the pushlog can be served old information.

Solving connectivity problems

This year the prestigious Hacker Beach event is taking place on the island of Lamu off the eastern coast of Kenya. The island is serviced by a single UMTS tower located above the hospital in the main town of Lamu City. However, our accommodation is on the other side of the island. Our accommodation had a previously installed directional antenna on the roof to provide internet access. Unfortunately the access was very slow, with only 14% signal strength.

Day 51

For the next week (and the previous week) I’m spending time in Paris. This turned out to be largely a convenient set of circumstances, since I had an excellent experience when I was here two weeks ago, and I wished I could spend more time here. I was fortunate enough to be here for two concerts I wanted to attend, namely Morcheeba and Parov Stelar. Both were at the excellent venue L’Olympia.

Concerning Hackers and Beaches

For the uninitiated, Hackerbeach involves a group of hackers (historically 15-20) gathering in a tropical location for a month to hack on various open source projects. It can be thought of as a month-long hackathon or code sprint for nomadic open source developers. All of the code so far has been focused on the open web ecosystem. Last year it took place on a small island of Vietnam named Phú Quốc.

Day 1 (2013/09/26-2013/09/27)

Woke up with a sore throat. A bad omen for a long travel stint. I hadn’t packed the night before, so it was all done day-of, which surprisingly didn’t result in me not packing important items (that I can think of yet). Maybe I’m getting used to this, or maybe I’m just being more reserved in what I consider necessary. Managed to get to the airport 2 hours early and thanks to my GlobalEntry card, was able to bypass the security line affording me enough time to sit at Rogue and enjoy some nourishing lunch before catching my 10 hour flight from Portland to Amsterdam.

Flying in India

In order to enter the airport, you must show proof of identity and flight documentation (such as an itinerary) to uniformed, armed guards stationed outside the entrance of the airport. After reading a bit, this heightened security must be due to some of the recent bombings in Mumbai. Metal detecters are everywhere in the country, including the entrance to shopping malls and other high profile public places. Ironically, none of the places that employ these devices actually CARE about the result.

Hiring an Auto in Bangalore

That said, they’re an excellent way to access the city. They’re affordable, readily available, and their open-air nature really allows one to take in the spectacles, cacophony, and (sometimes) smells of the city. One of the perils of being a westerner in India (or really anybody that one can identify as not being born and raised locally) is that often others will try to take advantage of you. This certainly isn’t restricted to auto drivers either, as this will also happen on the street, in shopping malls, at the airport, and generally everywhere.

Modern push notifications with Weechat and NMA

Sign up for an account on www.notifymyandroid.com. Log in, click on ‘My Account’, then ‘Generate New Key’ Install the NMA Android app (around $3 USD) onto your android device. Launch the app and login Install pynma.py and nma.py to $HOME/.weechat/python. (Optional) Symlink nma.py to $HOME/.weechat/python/autoload In weechat: /python load python/nma.py /set plugins.var.python.nma.apikey "$myapikey" (Optional) To inly send notifications when detached from the screen: install and load the screen_away.py, then /python load python/screen_away.