This is the correct behavior of Magento. Here is the explanation: (code examples taken from magento ce 1.4.0.0)
After saving the product, reindex is launched in Mage_Catalog_Model_Product :: afterCommitCallback () in the following call:
Mage :: getSingleton ('index / indexer') -> processEntityAction ($ this, self :: ENTITY, Mage_Index_Model_Event :: TYPE_SAVE);
If you look inside the processEntityAction, you will see that if your index is consistent and if the index mode is not βmanualβ, then magento starts the _processEvent method of your indexer model. When Magento shuts down, it removes the pending entry from the index_process_event table.
When reindex starts from the admin panel, Magento checks to see if there are pending entries for your index in the "index_process_event" table, if so, Magento starts the _processEvent method of your model, otherwise it starts reindexAll. Thus, in your case, it is perfectly true that magento launches reindexAll. If you want Magento to run _processEvent instead of reindexAll, you must change your index mode to "Manual" through the admin panel.
source share