Hi Tristan,
1. No, it is not globally visible and it is also not visible. That’s why a prepared conflict error is returned in this case. WiredTiger visibility is determined by two mechanisms: WiredTiger txn id and timestamps. For a txn that is prepared but not committed, it is visible in terms of WiredTiger txn id and potentially visible in terms of timestamps. To prevent it from being visible to the user, we return the prepared conflict error in this case.
2. Ignore prepared config means it will read past any prepared conflict WiredTiger encounters. For example, if we have a prepared update and a committed update for a key, we will read the committed update in the first read because of the ignore prepared config. Then if we commit the prepared update, the next read of the key in the same transaction may read the prepared update, thus breaking the repeated read promise.
Hope this answers your question.
Cheers,