Errors when user posts


#1

Getting a lot of errors when users attempt to post. Any idea what could could be causing this?

Job exception: Wrapped ActiveRecord::RecordNotFound: Couldn't find Post with 'id'=86 [WHERE ("posts"."deleted_at" IS NULL)]

10 hrs ago
!

Job exception: Couldn't find Post with 'id'=98 [WHERE ("posts"."deleted_at" IS NULL)]

9 hrs ago
!

Job exception: Wrapped ActiveRecord::RecordNotFound: Couldn't find Post with 'id'=98 [WHERE ("posts"."deleted_at" IS NULL)]

9 hrs ago
!

Job exception: Couldn't find Post with 'id'=86 [WHERE ("posts"."deleted_at" IS NULL)]

6 hrs ago
!

Job exception: Wrapped ActiveRecord::RecordNotFound: Couldn't find Post with 'id'=86 [WHERE ("posts"."deleted_at" IS NULL)]

6 hrs ago
!

Job exception: Couldn't find Post with 'id'=98 [WHERE ("posts"."deleted_at" IS NULL)]

5 hrs ago
!

Job exception: Wrapped ActiveRecord::RecordNotFound: Couldn't find Post with 'id'=98 [WHERE ("posts"."deleted_at" IS NULL)]

5 hrs ago


(Ken Cooper) #2

I’m seeing this too, quite a bit.

I think this bug is in post_alert.rb (I don’t have a fork of Discourse installed, sorry, so no pull request):

def execute(args)
  # maybe it was removed by the time we are making the post
  if post = Post.find(args[:post_id])
    # maybe the topic was deleted, so skip in that case as well
    PostAlerter.post_created(post) if post.topic
  end
end

It looks like the find should be a find_by_id.


(Jeff Atwood) #3

Maybe @eviltrout can you have a look?


(Robin Ward) #4

You are seeing this when users post? Because that error is from a background job and the code path should not be triggered until after the post goes through.

Can you provide more of the logs from when these errors occur? We are not seeing the same thing in our logs and I’d like to find out exactly where it’s happening.


(Sam Saffron) #5

yeah curious, what is the end user impact here? if the bg job fails its just log noise (log noise that we should fix)


(Ken Cooper) #6

No end user impact AFAICT. Just log noise. But as a noob it’s comforting not to see error messages in my log.

BTW, what’s the best way to report other error messages I’m seeing? Just post them as bug topics? Do you care?

Also, major kudos for the log system. Love it that JS errors appear there as well.


(Jeff Atwood) #7

We need the complete stack trace, can you please post it here?


(Sam Saffron) #8

Feel free to report errors as you go, in existing topics or new ones. Or even submit PRs if you can.

This one does look like an oversight, easily fixable. Indicates that the post was deleted by the time the job queue caught up to creating alerts


(Ken Cooper) #9

Ok, but I think this one’s pretty obvious.

/var/www/discourse/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/relation/finder_methods.rb:324:in `raise_record_not_found_exception!'
/var/www/discourse/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/relation/finder_methods.rb:444:in `find_one'
/var/www/discourse/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/relation/finder_methods.rb:423:in `find_with_ids'
/var/www/discourse/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/relation/finder_methods.rb:71:in `find'
/var/www/discourse/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/querying.rb:3:in `find'
/var/www/discourse/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.4/lib/active_record/core.rb:131:in `find'
/var/www/discourse/app/jobs/regular/post_alert.rb:6:in `execute'
/var/www/discourse/app/jobs/base.rb:154:in `block (2 levels) in perform'

(Jeff Atwood) #10

If that’s the case we should ignore this set of conditions @eviltrout.


(Ken Cooper) #11

Whenever I create a forked repo, it gets tempting to make my own changes… :doughnut:

But I do see the value.


(Robin Ward) #12

Thanks. It looks like the code tried to do this but used find which does not return nil for missing posts.

Fixed here:

https://github.com/discourse/discourse/commit/971af6a762d64afc24cc6a0c451322672a9d68fc


(Jeff Atwood) #13