I am reading a bit of source code of temporal server. I found that the history service actually checks if the host calculated by host = lookup(hash32(workflow_id+namesapce)mod shardCount) is current host. But how could the frontend service find the correct host in the first place? I am quite confused at this point.