puppetlabs / pupperware

Container fun time lives here.
Other
183 stars 66 forks source link

ERROR: relation "resource_events_status_for_corrective_change_idx" already exists #82

Closed amirtal closed 5 years ago

amirtal commented 5 years ago

git clone and running docker-compose up, without any changes.

error returned on deployment, at 'Applying database migration version 65':

2019-06-24 12:08:12,991 INFO [p.p.s.migrate] Applying database migration version 64 2019-06-24 12:08:12,992 INFO [p.p.s.migrate] [1/8] Cleaning up unreferenced facts... 2019-06-24 12:08:12,993 INFO [p.p.s.migrate] [2/8] Creating new fact storage tables... 2019-06-24 12:08:13,001 INFO [p.p.s.migrate] [3/8] Copying unique fact values into fact_values 2019-06-24 12:08:13,002 INFO [p.p.s.migrate] [4/8] Reconstructing facts to refer to fact_values... 2019-06-24 12:08:13,004 INFO [p.p.s.migrate] [5/8] Cleaning up duplicate null values... 2019-06-24 12:08:13,006 INFO [p.p.s.migrate] [6/8] Computing fact value hashes... 2019-06-24 12:08:13,007 INFO [p.p.s.migrate] [7/8] Indexing fact_values table... 2019-06-24 12:08:13,017 INFO [p.p.s.migrate] [8/8] Indexing facts table... 2019-06-24 12:08:13,028 INFO [p.p.s.migrate] Applied database migration version 64 in 37 ms 2019-06-24 12:08:13,028 INFO [p.p.s.migrate] Applying database migration version 65 2019-06-24 12:08:13,046 ERROR [p.p.s.migrate] Caught SQLException during migration java.sql.BatchUpdateException: Batch entry 1 alter table resource_events alter column status type text, alter column property type text, alter column containing_class type text, alter column file type text was aborted: ERROR: relation "resource_events_status_for_corrective_change_idx" already exists Call getNextException to see other errors in the batch. at org.postgresql.jdbc.BatchResultHandler.handleError(BatchResultHandler.java:148) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2179) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:479) at org.postgresql.jdbc.PgStatement.executeBatch(PgStatement.java:835) at com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:128) at com.zaxxer.hikari.pool.HikariProxyStatement.executeBatch(HikariProxyStatement.java) at clojure.java.jdbc$execute_batch.invokeStatic(jdbc.clj:563) at clojure.java.jdbc$execute_batch.invoke(jdbc.clj:556) at clojure.java.jdbc$db_do_commands$fn21283.invoke(jdbc.clj:906) at clojure.java.jdbc$db_transactionSTAR.invokeStatic(jdbc.clj:814) at clojure.java.jdbc$db_transactionSTAR.invoke(jdbc.clj:741) at clojure.java.jdbc$db_transactionSTAR.invokeStatic(jdbc.clj:754) at clojure.java.jdbc$db_transactionSTAR.invoke(jdbc.clj:741) at clojure.java.jdbc$db_do_commands.invokeStatic(jdbc.clj:905) at clojure.java.jdbc$db_do_commands.invoke(jdbc.clj:890) at puppetlabs.puppetdb.jdbc$do_commands.invokeStatic(jdbc.clj:38) at puppetlabs.puppetdb.jdbc$do_commands.doInvoke(jdbc.clj:33) at clojure.lang.RestFn.invoke(RestFn.java:421) at puppetlabs.puppetdb.scf.migrate$varchar_columns_to_text.invokeStatic(migrate.clj:1467) at puppetlabs.puppetdb.scf.migrate$varchar_columns_to_text.invoke(migrate.clj:1466) at puppetlabs.puppetdb.scf.migrate$migrateBANG$fn34737$fn34739$fn34743.invoke(migrate.clj:1793) at puppetlabs.puppetdb.scf.migrate$sql_or_die.invokeStatic(migrate.clj:1735) at puppetlabs.puppetdb.scf.migrate$sql_or_die.invoke(migrate.clj:1726) at puppetlabs.puppetdb.scf.migrate$migrateBANG$fn34737$fn34739.invoke(migrate.clj:1793) at clojure.core$map$fn5851.invoke(core.clj:2755) at clojure.lang.LazySeq.sval(LazySeq.java:42) at clojure.lang.LazySeq.seq(LazySeq.java:51) at clojure.lang.RT.seq(RT.java:531) at clojure.core$seq5387.invokeStatic(core.clj:137) at clojure.core$filter$fn5878.invoke(core.clj:2809) at clojure.lang.LazySeq.sval(LazySeq.java:42) at clojure.lang.LazySeq.seq(LazySeq.java:58) at clojure.lang.RT.seq(RT.java:531) at clojure.core$seq5387.invokeStatic(core.clj:137) at clojure.core$map$fn5851.invoke(core.clj:2746) at clojure.lang.LazySeq.sval(LazySeq.java:42) at clojure.lang.LazySeq.seq(LazySeq.java:51) at clojure.lang.Cons.next(Cons.java:39) at clojure.lang.RT.boundedLength(RT.java:1788) at clojure.lang.RestFn.applyTo(RestFn.java:130) at clojure.core$apply.invokeStatic(core.clj:667) at clojure.core$apply.invoke(core.clj:660) at puppetlabs.puppetdb.scf.migrate$migrateBANG$fn34737.invoke(migrate.clj:1800) at clojure.java.jdbc$db_transactionSTAR.invokeStatic(jdbc.clj:771) at clojure.java.jdbc$db_transactionSTAR.invoke(jdbc.clj:741) at puppetlabs.puppetdb.scf.migrate$migrateBANG.invokeStatic(migrate.clj:1788) at puppetlabs.puppetdb.scf.migrate$migrateBANG.invoke(migrate.clj:1759) at puppetlabs.puppetdb.cli.services$initialize_schema.invokeStatic(services.clj:331) at puppetlabs.puppetdb.cli.services$initialize_schema.invoke(services.clj:316) at puppetlabs.puppetdb.cli.services$init_with_db$fn34979.invoke(services.clj:363) at puppetlabs.puppetdb.cli.services$init_with_db.invokeStatic(services.clj:362) at puppetlabs.puppetdb.cli.services$init_with_db.invoke(services.clj:335) at puppetlabs.puppetdb.cli.services$start_puppetdb.invokeStatic(services.clj:458) at puppetlabs.puppetdb.cli.services$start_puppetdb.invoke(services.clj:432) at puppetlabs.puppetdb.cli.services$reify35099$service_fnk18770auto_positional$reify35110.start(services.clj:568) at puppetlabs.trapperkeeper.services$fn18607$G1858818610.invoke(services.clj:9) at puppetlabs.trapperkeeper.services$fn18607$G1858718614.invoke(services.clj:9) at puppetlabs.trapperkeeper.internal$fn19102$run_lifecycle_fn_BANG_19109$fn19110.invoke(internal.clj:198) at puppetlabs.trapperkeeper.internal$fn19102$run_lifecycle_fnBANG19109.invoke(internal.clj:181) at puppetlabs.trapperkeeper.internal$fn19131$run_lifecycle_fns19136$fn19137.invoke(internal.clj:231) at puppetlabs.trapperkeeper.internal$fn19131$run_lifecycle_fns19136.invoke(internal.clj:208) at puppetlabs.trapperkeeper.internal$fn19704$build_appSTAR19713$fn$reify19725.start(internal.clj:586) at puppetlabs.trapperkeeper.internal$fn19752$boot_services_for_app_STARSTAR_19759$fn19760$fn19762.invoke(internal.clj:612) at puppetlabs.trapperkeeper.internal$fn19752$boot_services_for_app_STAR_STAR19759$fn19760.invoke(internal.clj:610) at puppetlabs.trapperkeeper.internal$fn19752$boot_services_for_app_STARSTAR_19759.invoke(internal.clj:604) at clojure.core$partial$fn5826.invoke(core.clj:2630) at puppetlabs.trapperkeeper.internal$fn19176$initialize_lifecycle_worker19187$fn19188$fn19338$state_machine12279auto__19363$fn19366.invoke(internal.clj:251) at puppetlabs.trapperkeeper.internal$fn19176$initialize_lifecycle_worker19187$fn19188$fn19338$state_machine12279auto____19363.invoke(internal.clj:251) at clojure.core.async.impl.ioc_macros$run_state_machine.invokeStatic(ioc_macros.clj:973) at clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:972) at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invokeStatic(ioc_macros.clj:977) at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:975) at clojure.core.async$ioc_altsBANG$fn12494.invoke(async.clj:384) at clojure.core.async$do_alts$fn12434$fn12437.invoke(async.clj:253) at clojure.core.async.impl.channels.ManyToManyChannel$fn7098$fn7099.invoke(channels.clj:95) at clojure.lang.AFn.run(AFn.java:22) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.postgresql.util.PSQLException: ERROR: relation "resource_events_status_for_corrective_change_idx" already exists at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2433) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2178) ... 77 common frames omitted

running provided RSpec as described also returns failures:

Failures:

1) The docker-compose file works the cluster starts should start puppetdb Failure/Error: expect(wait_on_puppetdb_status()).to eq('running')

 Timeout::Error:
   puppetdb never entered running state

Amir.

nossralf commented 5 years ago

This is due to a change in PostgreSQL 9.6.14. If you pin the version of the postgres image to version 9.6.13, the PuppetDB container will work as expected.

This seems like a bug in the PuppetDB migrations. Edit: See https://tickets.puppetlabs.com/browse/PDB-4422

underscorgan commented 5 years ago

More information on the issue (it's a bug in the latest postgres release): https://www.postgresql.org/message-id/20190621004554.GB1626%40paquier.xyz PuppetDB has a workaround for the issue, which will make it into the pdb containers after the change is merged up: https://github.com/puppetlabs/puppetdb/pull/3010 There's also https://github.com/puppetlabs/pupperware/pull/83 that pins postgres in the interim

amirtal commented 5 years ago

thanks!