Discourse Assign - bug taking site down

I recently changed the site setting for the group(s) that are able to use Discourse Assign. Something went awfully wrong when I hit the update button, it took the whole site down.

I have since disabled Discourse Assign, which has got the site back up, but I am unable to get Discourse Assign working again. When I re-enable it, the site is taken down, and cannot change the site settings for the Discourse Assign plugin.

I am looking at the error logs, there are two:

ActiveRecord::StatementInvalid (PG::InvalidTextRepresentation: ERROR:  invalid input syntax for integer: "patently-staff"
LINE 1: ...RE "group_users"."user_id" = 1 AND (groups.id in ('patently-...
                                                             ^
: SELECT  1 AS one FROM "groups" INNER JOIN "group_users" ON "groups"."id" = "group_users"."group_id" WHERE "group_users"."user_id" = 1 AND (groups.id in ('patently-staff')) LIMIT 1)
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/patches/db/pg.rb:69:in `async_exec_params'

And:

Failed to handle exception in exception app middleware : PG::InvalidTextRepresentation: ERROR:  invalid input syntax for integer: "patently-staff"
LINE 1: ...RE "group_users"."user_id" = 1 AND (groups.id in ('patently-...
                                                             ^
: SELECT  1 AS one FROM "groups" INNER JOIN "group_users" ON "groups"."id" = "group_users"."group_id" WHERE "group_users"."user_id" = 1 AND (groups.id in ('patently-staff')) LIMIT 1

Is the discourse-assign plugin up to date in your instance? Or maybe you forked the plugin a while ago? There was a change in the discourse-assign plugin in July that seems relevant to the errors you’re seeing.

2 Likes

Hi Penar, I’m pretty sure it was up to date, I regularly update everything include plugins.

I think I’m going to have to restore, last backup was before I changed that site setting.

Hi @jerry0,

According to the logs, it looks like the plugin is up to date. Which Discourse version are you running?

2 Likes

latest, currently 2.4.0.beta4

Hmm, I see. Did you change the setting before or after updating to beta4?

Looks like somehow our automatic migration failed to update you setting, I’m going to investigate why this happened. Did you try restarting the server before enabling the plugin just in case the old value could have been cached? Let me know if this doesn’t work and I’ll provide you a ruby script to manually fix the issue.

1 Like

Thanks @Roman_Rizzi

It happened before I updated. Something weird happened as I added the new setting, I think I pressed the green tick before “adding” the new groupname.

I am not sure how to do that (btw I may have mispoken when saying “disabled/enabled” in my OP - what I meant was that I commented out the git clone url in the app.yml file to add the plugin). When I add the plugin in the yml file it crashes the site straight away (and it was previously enabled) so I can’t go in and then set it to disabled… unless I have misunderstood you?

May well be needed, would be gratefully received.

If you don’t mind, I’d like to validate one more thing before manually modifying the setting.

Can you execute this code inside a rails console and let me know the output?

DB.query_single(<<~SQL
  SELECT site_settings.value FROM site_settings WHERE site_settings.name = 'assign_allowed_on_groups'
SQL
).first.to_s.split('|')

This should tell us if we failed to migrate the setting’s value.

To access a console:

  • cd into your Discourse folder
  • Enter the container running ./launcher enter app
  • Open a Rails console running rails c
3 Likes

response is

=> [“patently-staff”]

1 Like

Thanks, Jerry.

There’s definitely something going on here. I’ll have a look and see why it’s happening.

Here’s the script:


group_id = Group.where(name: 'patently-staff').pluck(:id).join('|')

DB.exec("UPDATE site_settings SET value='#{group_id}' WHERE site_settings.name = 'assign_allowed_on_groups'")

After running it, you should be able to re-enable the plugin.

6 Likes

Perfect, that worked :grin: Thank you @Roman_Rizzi. Let me know if there is anything I can provide to assist further.

1 Like