Start down the road based on my comment [here](https://github.com/forcedotcom/phoenix/pull/272/files#r4764297) and things will fall into place. We should aim to minimize any special casing for an index.

For this particular question, you definitely want to fail the whole operation of writing the index metadata fails. The index table will start with an INDEX_STATE of CREATE and won't be used by the query processor until it's marked as ACTIVE. The row that links the data table to the index table should be added when the index is created (it should be one of the Puts send over in the Mutation list).

Also, see my notes on PTable - it has to be immutable. It will get rebuilt automatically, though, since the creation of an index will invalidate the data table. Next time the table metadata is accessed, the server will build up a new one and send it over. We could patch this up on the client manually, but I don't think that's necessary for v1.