Neo4j TransactionMemoryLimit

I am running Neo4j (v4.1.5) community edition on a server node with 64GB RAM. I set the heap size configuration as follows:

dbms.memory.heap.initial_size=31G
dbms.memory.heap.max_size=31G

During the ingestion via bolt, I got the following error:

 '{code: Neo.TransientError.General.TransactionMemoryLimit} {message: Can't allocate extra 512 bytes due to exceeding memory limit; used=2147483648, max=2147483648}'

What I don't understand is that the max in the error message shows 2GB, while I've set the initial and max heap size to 31GB. Can someone help me understand how memory setting works in Neo4j?

I see there are two configurations related to transaction memory:

#dbms.memory.transaction.global_max_size=256m
#dbms.memory.transaction.max_size=16m

They are committed out in my conf file, and there is a comment that there is no limit by default. Do you have either of these set by chance?