Restore on stable: fail on mini_racer 0.1.3


(Lapinot) #1

I have a backup that I need to restore on a fresh discourse instance but for some reason it’s a discourse 1.6.0 (postgresql 9.3) backup (actually I’m not sure what the version was, the version tag is 20160405172827). And the original instance doesn’t exist anymore), so I am trying to restore it on a fresh one.

  • If I go for the tests-passed branch (currently 1.7.0 beta), the restore fails: some tables are missing. This is unsurprising (but maybe there is some workaround here that I’m missing).
  • If I go for the stable branch (or actually any older revision) … the bootstrap fails trying to install mini_racer 0.1.3 (missing v8.h).

Developing a bit on the last failure, here is the full output of launcher bootstrap app:

http://pastebin.com/nvpUDxYa

And here is my app.yml:

##
## After making changes to this file, you MUST rebuild for any changes
## to take effect in your live Discourse instance:
##
## /var/discourse/launcher rebuild app
##
## Make sure to obey YAML syntax! You can use this site to help check:
## http://www.yamllint.com/

## this is the all-in-one, standalone Discourse Docker container template

# You may add rate limiting by uncommenting the web.ratelimited template.
# Out of the box it allows 12 reqs a second per ip, and 100 per minute per ip
# This is configurable by amending the params in this file

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"

## which TCP/IP ports should this container expose?
expose:
  - "8002:80"   # fwd host port 80   to container port 80 (http)

params:
  db_default_text_search_config: "pg_catalog.french"

  ## Set db_shared_buffers to a max of 25% of the total memory.
  ##
  ## On 1GB installs set to 128MB (to leave room for other processes)
  ## on a 4GB instance you may raise to 1GB
  db_shared_buffers: "256MB"
  #
  ## Set higher on large instances it defaults to 10MB, for a 3GB install 40MB is a good default
  ## this improves sorting performance, but adds memory usage per-connection
  db_work_mem: "40MB"
  #
  ## Which Git revision should this container use? (default: tests-passed)
  version: stable

env:
  LANG: en_US.UTF-8
  DISCOURSE_DEFAULT_LOCALE: fr

  ## TODO: How many concurrent web requests are supported?
  ## With 2GB we recommend 3-4 workers, with 1GB only 2
  UNICORN_WORKERS: 4

  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'redacted'

  ## TODO: The domain name this Discourse instance will respond to
  DISCOURSE_HOSTNAME: 'redacted'

  ## TODO: The mailserver this Discourse instance will use
  DISCOURSE_SMTP_ADDRESS: redacted
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: redacted
  DISCOURSE_SMTP_PASSWORD: redacted
  DISCOURSE_SMTP_ENABLE_START_TLS: true

  ## The CDN address for this Discourse instance (configured to pull)
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## These containers are stateless, all data is stored in /shared
volumes:
  - volume:
      host: /var/discourse/shared/app
      guest: /shared
  - volume:
      host: /var/discourse/shared/app/log/var-log
      guest: /var/log

## The docker manager plugin allows you to one-click upgrade Discourse
## http://discourse.example.com/admin/docker
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - mkdir -p plugins
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/cpradio/discourse-plugin-checklist.git
          - git clone https://github.com/discourse/discourse-tagging.git
          #- git clone https://github.com/scossar/discourse-header-links.git



## Remember, this is YAML syntax - you can only have one block with a name
run:
  - exec: echo "Beginning of custom commands"

  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  ## After getting the first signup email, re-comment the line. It only needs to run once.

  ## If you want to configure password login for root, uncomment and change:
  ## Use only one of the following lines:
  #- exec: /usr/sbin/usermod -p 'PASSWORD_HASH' root
  #- exec: /usr/sbin/usermod -p "$(mkpasswd -m sha-256 'RAW_PASSWORD')" root

  ## If you want to authorized additional users, uncomment and change:
  #- exec: ssh-import-id username
  #- exec: ssh-import-id anotherusername

  - exec: echo "End of custom commands"

I read through some other topics with some related problems (postresql 9.3 template, …) but I couldn’t get anything to work. Any hint?


Discourse failed to backup, how to debug?
(Lapinot) #2

I read here that newer discourse versions should be able to cope with old backups and restore them but I can’t get anything more than that (on tests-passed):

[2016-10-30 05:01:31] 'some_user' has started the restore!
[2016-10-30 05:01:31] Marking restore as running...
[2016-10-30 05:01:31] Restore process was cancelled!
[2016-10-30 05:01:31] Trying to rollback...
[2016-10-30 05:01:31] There was no need to rollback
[2016-10-30 05:01:31] Notifying 'blabla' of the end of the restore...

(Lapinot) #3

Okay, so finally I managed to restore my backup on a tests-passed instance with the command line (I did stop/restart to clean up everything after the restore) but now I can’t login anymore. Actually, I don’t get any error message, I type my credentials and land in the same unidentified state. Looking at the logs, the only thing I see is:

Processing by StaticController#enter as HTML
  Parameters: {"username"=>"user_name", "password"=>"[FILTERED]", "redirect"=>"https://url.com/"}
Redirected to http://url.com/
Completed 302 Found in 5ms (ActiveRecord: 0.0ms)

(Rafael dos Santos Silva) #4

How is SSL? The old site had? The new have?


(Lapinot) #5

The old had an SSL and the new also has SSL (not managed by discourse, it’s let’s encrypt on my front-end nginx). As a side note I temporarily changed the host name (to get it up and running while no one sees it), but this shouldn’t be the issue since I remaped the host and every broken image links are now fixed.


(Rafael dos Santos Silva) #6

Can you paste the location block on the outside nginx?


(Lapinot) #7

Here it is (yeah I should have gone for socketed setup but I ran into trouble a while ago):

    location / {
        proxy_pass http://127.0.0.1:8002;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

Actually thanks for the hint, looking there solved my problem! I added:

proxy_set_header        X-Forwarded-Proto $scheme;

As a side note I still couldn’t build a container based on the stable branch… It my be worth to look at.


(Helperhaps) #8

I am using the stable branch. And I can not rebuild container any more due to mini_racer.

And I can not bootstrap a new container with stable branch any more due to mini_racer.


(Lapinot) #9

Actually, my problem turned out to be more or less unrelated to the mini_racer bug, as I got my problem solved, maybe the discussion about mini racer should move to this topic.

Note to moderators: I can’t mark my last post as being a solution, it constantly toggles off.


(Régis Hanol) #10

Try again. It should work now :wink: