dani
June 4, 2025, 12:03pm
1
Hi.
I’m running Penpot 2.6.1 and trying to update to 2.7.1. Everything seems to be starting fine, but as soon as I try to open any project, I have this
And in the backend’s log
[2025-06-04 13:56:01.452] E app.http.errors - hint="restriction error"
SUMMARY:
→ clojure.lang.ExceptionInfo: components v1 is deprecated (features.cljc:219)
DETAIL:
→ clojure.lang.ExceptionInfo: components v1 is deprecated (features.cljc:219)
at: app.common.features$check_file_features_BANG_.invokeStatic(features.cljc:219)
app.common.features$check_file_features_BANG_.invoke(features.cljc:194)
app.http.middleware$wrap_parse_request$fn__60282.invoke(middleware.clj:93)
app.rpc.commands.files$sm$get_file.invoke(files.clj:308)
clojure.lang.AFn.applyToHelper(AFn.java:156)
clojure.lang.AFn.applyTo(AFn.java:144)
clojure.core$apply.invokeStatic(core.clj:669)
clojure.core$apply.invoke(core.clj:662)
app.db$tx_run_BANG_$fn__19054.invoke(db.clj:550)
next.jdbc.transaction$transact_STAR_.invokeStatic(transaction.clj:72)
next.jdbc.transaction$transact_STAR_.invoke(transaction.clj:51)
next.jdbc.transaction$eval18718$fn__18719.invoke(transaction.clj:152)
next.jdbc.protocols$eval17010$fn__17011$G__17001__17020.invoke(protocols.clj:58)
next.jdbc$transact.invokeStatic(jdbc.clj:424)
app.http.middleware$wrap_errors$fn__60359.invoke(middleware.clj:200)
app.db$transact_BANG_.invokeStatic(db.clj:534)
app.db$transact_BANG_.invoke(db.clj:529)
app.db$tx_run_BANG_.invokeStatic(db.clj:545)
app.db$tx_run_BANG_.doInvoke(db.clj:536)
clojure.lang.RestFn.invoke(RestFn.java:445)
app.rpc$wrap_db_transaction$fn__35622.invoke(rpc.clj:156)
app.rpc.cond$wrap$fn__35242.invoke(cond.clj:66)
app.rpc$wrap_metrics$fn__35615.invoke(rpc.clj:135)
app.rpc$wrap_params_validation$fn__35635.invoke(rpc.clj:193)
app.rpc$wrap_authentication$fn__35618.invoke(rpc.clj:150)
clojure.core$partial$fn__5927.invoke(core.clj:2641)
app.rpc$rpc_handler.invokeStatic(rpc.clj:125)
app.rpc$rpc_handler.invoke(rpc.clj:90)
clojure.core$partial$fn__5927.invoke(core.clj:2641)
app.http.session$wrap_authz$fn__23462.invoke(session.clj:237)
So it looks like something was not done when running the v2 migration. I don’t remember at which version I ran it, but I kept the logs and it seems everything was fine
$ ./run.sh app.migrations.v2
+ exec /opt/jdk/bin/java -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dlog4j2.configurationFile=log4j2.xml -XX:-OmitStackTraceInFastThrow -Dpolyglot.engine.WarnInterpreterOnly=false --enable-preview -jar penpot.jar -m app.migrations.v2
I app.metrics - action="initialize metrics"
I app.db - hint="initialize connection pool", name="main", uri="postgresql://127.0.0.1:6432/penpot", read-only=false, with-credentials=true, min-size=0, max-size=60
I app.migrations - hint="running migrations", module=:app.migrations/migrations
I app.svgo - hint="initializing svg optimizer pool"
I app.svgo - hint="stopping svg optimizer pool"
Any idea what can I do to fix this ?
1 Like
Hello @dani , i’m checking this issue with the team
1 Like
david
June 5, 2025, 6:41am
3
Hej , same here. The upgrade from version 2.6.1 to 2.7 broke all projects with components. When I create a new team, I can import them, when no components are used. At the original team I get the same alert like @dani . When I import the projects to a new created team, I get the following alert: “Es scheint eine Nichtübereinstimmung zwischen den aktivierten Funktionen und den Funktionen der Datei zu geben. Die Migrationen für ‘components/v2’ müssen durchgeführt werden, bevor die Datei geöffnet werden kann.”.
Thanks for your work penpot is a great tool.
Your projects still use components v1, which was removed in 2.7.1. The migration script didn’t run properly before, even if logs seemed fine.
Fix:
Backup everything.
Downgrade to Penpot 2.2.0 (last version where the migration works).
Run: ./run.sh app.migrations.v2 and check that it actually migrates files.
Once done, upgrade again to 2.7.1.
Let me know if you have any questions
dani
June 5, 2025, 8:08am
5
with 2.2.0, migration fails
$ ./run.sh app.migrations.v2
+ exec /opt/jdk/bin/java -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dlog4j2.configurationFile=log4j2.xml -XX:-OmitStackTraceInFastThrow -Dpolyglot.engine.WarnInterpreterOnly=false --enable-preview -jar penpot.jar -m app.migrations.v2
SUMMARY:
→ clojure.lang.ExceptionInfo: Missing definitions for refs: :app.storage.s3/backend, :app.storage.fs/backend, :app.storage.s3/backend, :app.storage.fs/backend (core.cljc:212)
DETAIL:
→ clojure.lang.ExceptionInfo: Missing definitions for refs: :app.storage.s3/backend, :app.storage.fs/backend, :app.storage.s3/backend, :app.storage.fs/backend (core.cljc:212)
at: integrant.core$missing_refs_exception.invokeStatic(core.cljc:212)
integrant.core$missing_refs_exception.invoke(core.cljc:211)
integrant.core$build.invokeStatic(core.cljc:336)
integrant.core$build.invoke(core.cljc:316)
integrant.core$init.invokeStatic(core.cljc:445)
integrant.core$init.invoke(core.cljc:437)
integrant.core$init.invokeStatic(core.cljc:442)
integrant.core$init.invoke(core.cljc:437)
app.main$start_custom$fn__47377.invoke(main.clj:569)
clojure.lang.AFn.applyToHelper(AFn.java:154)
clojure.lang.AFn.applyTo(AFn.java:144)
clojure.lang.Var.alterRoot(Var.java:310)
clojure.core$alter_var_root.invokeStatic(core.clj:5555)
clojure.core$alter_var_root.doInvoke(core.clj:5550)
clojure.lang.RestFn.invoke(RestFn.java:428)
app.main$start_custom.invokeStatic(main.clj:565)
app.main$start_custom.invoke(main.clj:562)
clojure.lang.Var.invoke(Var.java:386)
app.migrations.v2$_main.invokeStatic(v2.clj:96)
app.migrations.v2$_main.doInvoke(v2.clj:87)
clojure.lang.RestFn.invoke(RestFn.java:400)
clojure.lang.AFn.applyToHelper(AFn.java:152)
clojure.lang.RestFn.applyTo(RestFn.java:135)
clojure.lang.Var.applyTo(Var.java:707)
clojure.core$apply.invokeStatic(core.clj:667)
clojure.main$main_opt.invokeStatic(main.clj:515)
clojure.main$main_opt.invoke(main.clj:511)
clojure.main$main.invokeStatic(main.clj:665)
clojure.main$main.doInvoke(main.clj:617)
clojure.lang.RestFn.applyTo(RestFn.java:140)
clojure.lang.Var.applyTo(Var.java:707)
clojure.main.main(main.java:40)
dt: {:reason :integrant.core/missing-refs,
:config
{:app.storage/storage
{:app.db/pool #integrant.core.Ref{:key :app.db/pool},
:app.storage/backends {:s3 #, :fs #, :assets-s3 #, :assets-fs #}},
:app.db/pool
{:app.db/max-lifetime 1800000,
:app.db/validation-timeout 10000,
:app.db/username "penpot",
:app.db/uri "postgresql://127.0.0.1:6432/penpot",
:app.db/name :main,
:app.db/idle-timeout 120000,
:app.db/password "b6b2ca31-3cde-d4d5-bb2b-6be30ec431f2",
:app.db/min-size 0,
...},
:app.setup/props
{:app.db/pool #integrant.core.Ref{:key :app.db/pool},
:app.setup/key "+wBekehEqLWRMODD+lu59EQ8It3VGWT/h.j_GrKMXZ5AUpoU/A",
:app.main/migrations #integrant.core.Ref{:key :app.migrations/migrations}},
:app.svgo/optimizer {},
:app.metrics/metrics
{:default
{:session-update-total #,
:audit-http-handler-concurrency #,
:rpc-climit-queue #,
:update-file-changes #,
:rpc-query-timing #,
:websocket-session-timing #,
:rpc-climit-timing #,
:executors-completed-tasks #,
...}},
:app.migrations/migrations #:app.db{:pool #integrant.core.Ref{:key :app.db/pool}},
:app.http.client/client {}},
:missing-refs (:app.storage.s3/backend :app.storage.fs/backend :app.storage.s3/backend :app.storage.fs/backend)}
dani
June 5, 2025, 8:13am
6
Downgrading to 2.0.0, the migration seems to be OK
penpot@300028d6513c:~/backend$ ./run.sh app.migrations.v2
+ exec /opt/jdk/bin/java -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dlog4j2.configurationFile=log4j2.xml -XX:-OmitStackTraceInFastThrow -Dpolyglot.engine.WarnInterpreterOnly=false --enable-preview -jar penpot.jar -m app.migrations.v2
[2025-06-05 10:09:38.606] I app.metrics - action="initialize metrics"
[2025-06-05 10:09:38.619] I app.db - hint="initialize connection pool", name="main", uri="postgresql://127.0.0.1:6432/penpot", read-only=false, with-credentials=true, min-size=0, max-size=60
[2025-06-05 10:09:38.647] I app.migrations - hint="running migrations", module=:app.migrations/migrations
[2025-06-05 10:09:39.020] I app.svgo - hint="initializing svg optimizer pool"
[2025-06-05 10:09:39.178] I app.svgo - hint="stopping svg optimizer pool"
penpot@300028d6513c:~/backend$
But if I then go back to 2.7.1, I still have the error message from my first post, and can’t open any project
david
June 5, 2025, 9:00am
7
Same here. Downgrading and run the migrate.v2 has no effect. It seems, that the component-handling has an issue. The migration.v2 script was for the upgrade from penpot version 1.x to version 2 as far as I know. The release-infos for penpot version 2.7 announces an update of the assets management, is there the components effected also? The version I has running before upgrading to version 2.7 was 2.5. An update to version 2.6.2 was no problem. The issues showing by upgrading from 2.6.2 to 2.7.0/2.7.1, by no more editing any project of an existing team. When I create a new team and migrate some projects, the projects that are using no components are running. But every project, that uses components are broken and penpot will not working.
I hope the description of the issue helps to find a solution.
Thanks for the feedback, I reported this back to the team