by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Aug 04 16:57
    pitr-ch commented #856
  • Aug 03 15:11
    shawn42 commented #856
  • Jul 22 19:58

    pitr-ch on master

    Consider falsy value on `Concur… Merge pull request #879 from mt… (compare)

  • Jul 22 19:58
    pitr-ch closed #879
  • Jul 22 19:57
    pitr-ch labeled #879
  • Jul 22 19:57
    pitr-ch assigned #879
  • Jul 22 19:52
    pitr-ch labeled #868
  • Jul 22 19:52
    pitr-ch labeled #868
  • Jul 22 19:52
    pitr-ch commented #868
  • Jul 21 23:01
    timriley commented #868
  • Jul 21 23:00
    timriley commented #868
  • Jul 21 22:59
    timriley commented #868
  • Jul 21 17:08
    mtsmfm opened #879
  • Jul 21 14:49
    pitr-ch unlabeled #863
  • Jul 21 14:49
    pitr-ch assigned #863
  • Jul 21 14:49
    pitr-ch unassigned #863
  • Jul 21 14:49
    pitr-ch assigned #863
  • Jul 21 14:49

    pitr-ch on master

    Remove outdated documentation a… Merge pull request #878 from ma… (compare)

  • Jul 21 14:49
    pitr-ch closed #878
  • Jul 21 14:49
    pitr-ch closed #863
Charles Oliver Nutter
@headius
concurrent-ruby-ext appears to be just the extension but I'm not sure how that fits in
It also appears that the tzinfo only needs only a small part of concurrent-ruby
Charles Oliver Nutter
@headius
ok
yah unfortunate this has such a complex build process but I think your best option right now is to just download a JRuby tarball and put it in the env
then things should build ok
the Rakefile for the project explicitly tries to build the jar
it also uses a separate library "ruby-compiler" to do that build, which wants a full JRuby install available
patching those to work will require a cascade of changes
ndjhartman
@ndjhartman
Sorry for the ignorance, but does gem build invoke rake?
Charles Oliver Nutter
@headius
but if you download a JRuby tarball and unpack it and point JRUBY_HOME at it, I think this all will work
ah I see what you're sayting
saying
no it does not...that might be an ok workaround for you if you're ok with the CRuby extension building when you install the gem
I thought you might be wanting to precompile everything
gem build will just literally include the files listed in the gemspec
if that resulting gem works for you I think you're ok
ndjhartman
@ndjhartman
Great!
Thanks a million for your help
I really appreciate you taking the time to explain things
Charles Oliver Nutter
@headius
sure, hopefully this works ok for you
Farid Zakaria
@fzakaria
Hey @headius ;
I have a question -- are you aware of any JRuby bugs on previous versions where after a Thread#kill was issued; the thread hung around?
I am investigating an issue where we are starting a watchdog thread (heartbeat); and eventually calling Thread#kill on it.
The thread seems to be alive afterwards though.
Farid Zakaria
@fzakaria
nvm
Olle Jonsson
@olleolleolle
@pitr-ch I'm attempting to configure Rubinius for CI, so that the project does not have all this Rubinius-supporting code for nothing.

Using https://travis-ci.org/ruby-concurrency/concurrent-ruby/jobs/659471195

Rubinius
osx, Xcode: xcode8 Ruby: rbx-3.107

Olle Jonsson
@olleolleolle
I figured it out, had to use Trusty dist, then it actually finds it!
Denis Semenenko
@Hyperc0der_twitter

Hey. I have a Javascript Promise/A+ background. Trying to understand the API reference, cause it's hard to find any examples for the library usage in the Net.

The question is how to create a pending Promise?

I use multiple constructor functions like: Concurrent::Promises.future and Concurrent::Promises.zip_futures (aka Promise.all) and both start to invoke resolver immediately.
I want to be able to resolve explicitly with the wait/result/value method.
Instead, now I need to add an unneeded condition like this:
result.wait unless result.fulfilled?

Thanks.

Ben Sheldon (he/him)
@bensheldon_twitter

@Hyperc0der_twitter here's a GitHub search that has plenty of code examples:

https://github.com/search?q=Concurrent%3A%3APromises.zip+-filename%3Apromise.rb+-filename%3Apromises.rb+extension%3Arb&type=Code&ref=advsearch&l=&l=
#

I do though think most usages are executing the promise and resolving.

Aditya C S
@adityacs
Hi All
How do we close Thread which is started by Channel.go
?
If we have code like below
Concurrent::Channel.go do
  loop do
    Concurrent::Channel.select do |s|
        s.take(somechannel) {
          #do something
         }
        s.take(otherchannel) {
          # dosomething
        }
     end
  end
end
Thread started by Channel.go is always active. Is there any way we can close this thread explicitly?
closing the channels will stop the loop and selection. However, the Channel.go thread will always remain active
Ben Sheldon (he/him)
@bensheldon_twitter
@adityacs hi! I don't have much experience with channels, but I have two questions:
  1. Have you verified the loop is broken? For example, by puts-ing a message after the loop-end. I don't see an block-breaking return or throw in what you posted.
  2. Concurrent ruby typically runs things on a global thread pool that will manage, reuse and recycle threads on its own. So if you're confident that the thread isn't doing any work, it shouldn't need to be actively killed.
Aditya C S
@adityacs
@bensheldon_twitter Yeah, the loop is broken and thread is not doing any work
Tomek Wałkuski
@tomekw
Hi all! Do you recommend any resources on testing Async and TimerTask enabled classes?
Ben Sheldon (he/him)
@bensheldon_twitter
@tomekw hi! I didn't find sources in testing, but I went towards integration testing. You could probably extract and test the task method themselves. Here's what I did with RSpec if your curious:
tuantv-0547
@tuantv-0547

Hi all. I have a problem when converting a js function to ruby, using concurrent-ruby gem.

JS code:

async function test_js(redis) {
  const arrPromises = [];

  arrPromises.push(
    redis.delAsync("key1")
  );
  arrPromises.push(
    redis.delAsync("key2")
  );

  await Promise.all(arrPromisses);
  logger.info('remove success');
}

Ruby code:

promises = []

promises << Concurrent::Promise.new do
  redis.del("key1")
end
promises << Concurrent::Promise.new do
  redis.del("key2")
end

promises.each { |j| j.execute }
Concurrent::Promise.all?(*promises).
  then{|result| puts "remove success" }.
  rescue { |reason| puts reason }.execute

I'm quite confused cause Promise.all(arrPromisses) will execute all promisses in this array at the same time, while promises.each { |j| j.execute } delay a litle bit cause they're in loop.
Is there any better way to convert this js function to ruby code?
Thank you (bow)

Mikael Henriksson
@mhenrixon

I think that first of all you should prefer the Concurrent::Promises (plural) which seems to do the trick for me.

Let’s see if I can find the code...

@tuantv-0547 I did something like this:
Concurrent::Promises.zip(*tasks).value!.flatten.compact.uniq

def tasks
  files.map do |original_file|
    Concurrent::Promises.future(original_file) { |file| process_file(file) }.rescue do |exception|
      Rails.logger.error(exception)
      Bugsnag.notify(exception)
      []
    end
  end
end

def process_file(file)
  ProcessFile.perform(file: file, dir: dir, declaration_uuid: declaration_uuid)
end
If I am not mistaken this was kind of the whole point about the Promises api to provide better support for the exact thing you are trying to achieve.
Shawn Anderson
@shawn42
Not sure if this is the right place, but can anyone here describe the roadmap of getting this PR merged: ruby-concurrency/concurrent-ruby#856 ?
It's blocking my use of concurrent-ruby in production now (which makes me sad, because concurrent-ruby is awesome!)