Hello,
there is a hint on the issue below by reading in James Server Wide
Configuration (https://james.apache.org/server/config-system.html):
Note for postgresql databases: Add standard_conforming_strings=off to
your postgresql.xml, otherwise you will get ""Invalid escape string
Hint: Escape string must be empty or one character. {prepstmnt 174928937
SELECT t0.mailbox_id, t0.mailbox_highest_modseq, t0.mailbox_last_uid,
t0.mailbox_name, t0.mailbox_namespace, t0.mailbox_uid_validity,
t0.user_name FROM public.james_mailbox t0 WHERE (t0.mailbox_name LIKE ?
ESCAPE '\\' AND t0.user_name = ? AND t0.mailbox_namespace = ?)
[params=?, ?, ?]} [code=0, state=22025]"
The postgresql.conf has standard_conforming_strings = off, and so it is
configured in the postgresql instance I am using. As the documentation
mentions postgresql.xml, is that a typo or is it pointing to some other
configuration somewhere else ? Any feedback here ?
Pablo
On 21.11.20 11:27, Pablo Pita Leira wrote:
Hello,
I have compiled the current james-project from linagora's github
repository. Then built the jpa docker server. I took the files that
would get installed in the docker image to used them as installation
in a debian server with PostgreSQL as database.
When testing this installation, I have encounter two issues which seem
related to openjpa.
The first, is regarding the Sieve mailet, and a problem mapping a
column of an entity:
9507 Global INFO [main] openjpa.Runtime - Starting OpenJPA 3.1.2
9744 Global INFO [main] openjpa.jdbc.JDBC - Using dictionary class
"org.apache.openjpa.jdbc.sql.PostgresDictionary".
18173 Global INFO [main] openjpa.jdbc.JDBC - Connected to
PostgreSQL version 11.9 using JDBC driver PostgreSQL JDBC Driver
version 42.2.18.
24017 Global WARN [main] openjpa.jdbc.Schema - Existing column
"activation_date_time" on table "public.JAMES_SIEVE_SCRIPT" is
incompatible with the same column in the given schema definition.
Existing column:
Full Name: JAMES_SIEVE_SCRIPT.activation_date_time
Type: timestamp
Size: 35
Default: null
Not Null: false
Given column:
Full Name: JAMES_SIEVE_SCRIPT.ACTIVATION_DATE_TIME
Type: unknown(2014)
Size: 0
Default: null
Not Null: false
The second, is that the imap server throws a persistence exception. It
seems that the sql to find the mailbox has a ESCAPE '\' part that is
not OK.
Wrapped by: org.apache.openjpa.persistence.PersistenceException:
Unterminated string literal started at position 213 in SQL SELECT
t0.mailbox_id, t0.mailbox_highest_modseq, t0.mailbox_last_uid,
t0.mailbox_name, t0.mailbox_namespace, t0.mailbox_uid_validity,
t0.user_name FROM public.JAMES_MAILBOX t0 WHERE (t0.mailbox_name LIKE
? ESCAPE '\' AND t0.user_name = ? AND t0.mailbox_namespace = ?).
Expected char {SELECT t0.mailbox_id, t0.mailbox_highest_modseq,
t0.mailbox_last_uid, t0.mailbox_name, t0.mailbox_namespace,
t0.mailbox_uid_validity, t0.user_name FROM public.JAMES_MAILBOX t0
WHERE (t0.mailbox_name LIKE ? ESCAPE '\' AND t0.user_name = ? AND
t0.mailbox_namespace = ?)} [code=0, state=42601]
at
org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:5278)
at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:5238)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:134)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:115)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:67)
at
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.handleCheckedException(SelectResultObjectProvider.java:162)
at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:42)
at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1311)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1062)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:912)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:843)
at
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:601)
at
org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:297)
at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:314)
at
reactor.core.publisher.MonoFlattenIterable.subscribeOrReturn(MonoFlattenIterable.java:87)
... 45 common frames omitted
Wrapped by: org.apache.james.mailbox.exception.MailboxException:
Search of mailbox UserBound{namespace=Optional[#private],
user=Optional[Username{localPart=pablo.pita,
domainPart=Optional[Domain : pitagoral.com]}],
mailboxNameExpression=org.apache.james.mailbox.model.search.PrefixedRegex@9365af5b}
failed
at
org.apache.james.mailbox.jpa.mail.JPAMailboxMapper.lambda$findMailboxWithPathLike$13(JPAMailboxMapper.java:175)
at reactor.core.publisher.Flux.lambda$onErrorMap$29(Flux.java:6479)
Anyway, the emails somehow arrived at the destination, and I could
also read emails from thunderbird.
The upgrade to OpenJPA 3.1.2 from version 3.1.0, particularly because
OpenJPA 3.1.1 claims to solve some issues related to date/time
mappings
(http://openjpa.apache.org/openjpa-3.1.x.html#changes-in-openjpa-311),
did not solve the issues.
Any feedback for the problems here ?
Pablo
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org
For additional commands, e-mail: server-user-h...@james.apache.org