I have just spent a couple of hours remote debugging a bug that I couldn't reproduce. Imaging you limit a data table and remove some rows.
Later you call
$table->getRowFromLabel('foobar'); then it might still have the id mapped in
$this->rowsIndexByLabel even though the actual column was removed. Ideally, when a row is deleted, we would also delete the map from
$this->rowsIndexByLabel directly. Naturally you would think a
$table->setLabelsHaveChanged()would fix this but I noticed it does actually not unset all previously stored links so under circumstances
$table->getRowFromLabel('foobar'); might actually return a row with a completely different label. This is especially problematic when eg trying to rename something like
Archiver::LABEL_NOT_DEFINED. In this case a completely different row was renamed to "Not defined"
This could actually explain a couple of odd issues and may be worth merging into Piwik 2 as well.
That's an excellent & tricky find :8ball: