ruby-pg
ruby-pg copied to clipboard
Ractor Binary Copy Error
trafficstars
When attempting to run a 'copy_data' within a Ractor using binary format, I receive the following error:
lib/pg/connection.rb:223:in `copy_data': can not access non-shareable objects in constant PG::Connection::BinarySignature by non-main ractor. (Ractor::IsolationError)
This appears to be resolved if I freeze the constant:
PG::Connection::BinarySignature = "PGCOPY\n\377\r\n\0".b.freeze
When running copy_data with the default TextEncoder path, it just works. I think the fix here is probably to just freeze the constant defined here.
Alternative solution is to remove the .b from the BinarySignature. Then the frozen_string_literals come into action, so that it becomes shareable. I'll prepare a PR with test case.
Anyway I'm happy to see there is someone out there who's using the new Ractor support!
I'm happy that RubyPG has Ractor support! 😂