mozilla-services/android-sync — comment on commit ba1f454342e84ad5f2321f3c6aede11b382c832c
File: src/main/java/org/mozilla/gecko/sync/synchronizer/SynchronizerSession.java line 258
By rnewman:

I don't want to do this here.

The failure to store a record is not necessarily a cause to abort. It might mean that the record should be tracked for redownloading, or skipped, or we might abort.

Example, in `RecordsChannel`:

```
@Override
public void store(Record record) {
try {
sink.store(record);
} catch (NoStoreDelegateException e) {
Logger.error(LOG_TAG, "Got NoStoreDelegateException in RecordsChannel.store(). This should not occur. Aborting.", e);
delegate.onFlowStoreFailed(this, e);
this.abort();
}
}

…

@Override
public void onRecordStoreFailed(Exception ex) {
this.consumer.stored();
delegate.onFlowStoreFailed(this, ex);
// TODO: abort?
}
```

Note that us *not* aborting in `onRecordStoreFailed` is what allows us to continue syncing if a single item fails to apply. `RecordsChannel` aborts its source and sink if there's no delegate, but otherwise it notifies and expects things to continue.

Until we untangle the knot of which class should be deciding whether to abort if a store failed (which we'll do when we implement failed item tracking: ) I'd like to leave this behavior untouched.

Make sense?