What will a miner do when a high-fee transaction comes but he has constructed his block and is solving the puzzle? As far as I have known, the mining process is as follows, 

step 1: collect a series of transactions and construct a block by filling required information like hash of the previous block and the Merkle tree root, etc. 

step 2: solving a puzzle by constantly changing the 'nonce' field of the block to make the hash of the block header less than a target. 

When a miner have constructed a block (step 1) and is trying to solve the puzzle (step 2), a very attractive transaction with high fee comes, will the miner give up the work he has done, reconstruct the block and restart solving the puzzle?
A modern mining system will do both.

Today, miners and mining pools have more hashpower than required to check all iterations of a nonce and extraNonce for a single block template. They get around this by consecutively operating on multiple block templates, usually varying on the block timestamp, data in the Coinbase transaction, and the list of selected transactions.

These updated block templates are constantly generated in parallel to the actual hashing operations - as more attractive transactions are discovered, the next set of block templates generated will be updated to contain those transactions. As soon as the mining hardware finishes with its current block template, it will grab a new, likely optimal template from the pool.

If a single worked discovers a valid block with a suboptimal template, miners will broadcast that block - there is little sense in discarding a block over a relatively small fee increase and giving up the entire block reward.