ruby-pg icon indicating copy to clipboard operation
ruby-pg copied to clipboard

Ractor Binary Copy Error

Open LRFalk01 opened this issue 1 year ago • 2 comments
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.

LRFalk01 avatar Oct 15 '24 16:10 LRFalk01

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!

larskanis avatar Oct 16 '24 09:10 larskanis

I'm happy that RubyPG has Ractor support! 😂

LRFalk01 avatar Oct 17 '24 11:10 LRFalk01