Comments (3)
JRuby support is not guaranteed because concurrent-ruby gem has now troubles on JRuby, if you are looking for a threaded solution you might be interested in https://github.com/rubycdp/vessel
from ferrum.
Hey @route @oshanz , I have a Sidekiq Job that opens a website and navigates through 5 pages while filling input fields and checking radio/checkboxes.
I haven't gone through entire Ferrum code, so my patch might be incorrect or doesn't make sense. But, Here's what I did to possibly fix Concurrent::MultipleAssignmentError issue in my app.
# file: lib/ferrum/browser/client.rb
def initialize
# .....
#
while message = @ws.messages.pop
if INTERRUPTIONS.include?(message["method"])
@interruptor.async.call(message)
elsif message.key?("method")
@subscriber.async.call(message)
else
# here's the change
retries_left = 3
begin
@pendings[message["id"]]&.set(message)
rescue Concurrent::MultipleAssignmentError => e
retries_left -= 1
if retries_left > 0
# retry after sleeping 200ms
sleep(0.2)
retry
end
raise e
end
end
end
# .....
end
After this patch, I am yet to see any issues in my script. Plus, app doesn't throw that exception and terminate anymore.
from ferrum.
@rajuvvadi I'm afraid it's only a hack, which doesn't solve the real issue
from ferrum.
Related Issues (20)
- Send Emulation commands to Page HOT 1
- Ferrum::BinaryNotFoundError when using docker for chrome HOT 1
- Can I allow Page.go_to take additional wait parameter?
- Cannot call `exit` from within `.on()` blocks HOT 2
- Exceptions within `.on()` blocks are mysteriously ignored HOT 1
- Browser start fails with JRuby on Windows
- Chrome error: "Unable to create temporary file" on Windows with JRuby HOT 1
- Errno::ECONNREFUSED on browser initialization HOT 3
- Headless new gives Ferrum::NoSuchPageError on screenshot HOT 2
- consider using === in network blacklist matching
- Doesn't work on ruby 3.2 HOT 1
- Saving via browser.mhtml and via cmd+S differs a lot on Youtube HOT 3
- Network.loadingFailed error preventing file from downloading HOT 13
- Conditionally Render Page header and footer template HOT 2
- browser.quit doesn't close session HOT 6
- Include type and stackTrace in logging for console API
- `wait_for_network_idle` failing due to pending requests on previous page HOT 1
- Remove `disable-gpu`default flag for Apple Silicon HOT 3
- authenticate current_user in ferrum browser
- Hang/Timeout in dialog HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ferrum.