asserts and manadatory build instructions (was ITS#8240)
by Michael Ströder
hyc(a)symas.com wrote in ITS#8240:
> Our patch response was too hasty. There is no OpenLDAP bug here, the real
> issue is production binaries being built with asserts enabled instead of
> compiling with -DNDEBUG. That's an issue for packagers and distros to resolve.
> Closing this ITS, not an OpenLDAP bug.
Maybe I missed something. But this is the first time I've heard about -DNDEBUG
being mandatory when compiling binary packages for production use. Does it
have other effects?
And what are general rules for assert statements in OpenLDAP code?
In my own (Python) code assert statements are supposed to be only triggered if
something goes wrong *internally* (type issues etc.). If somebody manages to
trigger an assert statement with invalid input from "outside" I always
consider this to be a serious bug revealing insufficient error handling even
though e.g. web2ldap just logs the exception but won't crash. YMMV, but please
clarify.
I also wonder whether there are more mandatory rules for building packages and
where I can find them.
Please don't get me wrong: My inquiry is in good faith to avoid unnecessary
ITS based on misunderstanding.
Ciao, Michael.
1 year, 6 months
Re: RE24 testing call #2 (2.4.45) LMDB RE0.9 testing call #2 (0.9.20)
by Quanah Gibson-Mount
Please upload the testrun directory as a tar.gz to
ftp.openldap.org/incoming/ with a relevant filename, and let us know what
it is so it can be examined. It may simply be a timing issue, but I'd like
to confirm.
Thanks!
--Quanah
--On Friday, April 28, 2017 3:31 PM +0200 Abdelkader Chelouah
<a.chelouah(a)gmail.com> wrote:
>
> Built and tested OPENLDAP_REL_ENG_2_4-g66d107e (OS RHEL 7)
>
> "make mdb-its" succeded but "make mdb" failed on test018 with error
>
>
>>>>>> Starting test018-syncreplication-persist for mdb...
> running defines.sh
> Starting provider slapd on TCP/IP port 9011...
> Using ldapsearch to check that provider slapd is running...
> Using ldapadd to create the context prefix entry in the provider...
> Starting consumer slapd on TCP/IP port 9014...
> Using ldapsearch to check that consumer slapd is running...
> Waiting 5 seconds for slapd to start...
> Using ldapadd to populate the provider directory...
> Waiting 7 seconds for syncrepl to receive changes...
> Using ldapsearch to read all the entries from the provider...
> Using ldapsearch to read all the entries from the consumer...
> Filtering provider results...
> Filtering consumer results...
> Comparing retrieved entries from provider and consumer...
> Stopping the provider, sleeping 10 seconds and restarting it...
> Using ldapsearch to check that provider slapd is running...
> Waiting 7 seconds for consumer to reconnect...
> Using ldapmodify to modify provider directory...
> Using ldappasswd to change some passwords...
> Waiting 7 seconds for syncrepl to receive changes...
> Using ldapsearch to read all the entries from the provider...
> Using ldapsearch to read all the entries from the consumer...
> Filtering provider results...
> Filtering consumer results...
> Comparing retrieved entries from provider and consumer...
> test failed - provider and consumer databases differ
>>>>>> test018-syncreplication-persist failed for mdb
> (exit 1)
> make: *** [mdb-mod] Error 1
>
>
>
> On Fri, Apr 28, 2017 at 12:33 AM, Quanah Gibson-Mount <quanah(a)symas.com>
> wrote:
>
> For this testing call, we particularly need folks to test OpenLDAP with
> startTLS/LDAPS when compiled against OpenSSL (both pre 1.1 series and
> with the 1.1 series). This was reworked since the prior testing call,
> as the OpenSSL 1.1.0 work was not correct. There is currenly nothing in
> the test suite that covers encrypted connections (Although it's on my
> todo list). To build against OpenSSL 1.1 may also require cyrus-sasl HEAD
> out of the cyrus-sasl GIT repository, depending on your build options as
> the current cyrus-sasl release does not support the OpenSSL 1.1 series.
> It can be found at <https://github.com/cyrusimap/cyrus-sasl>. If you
> build with GSSAPI and use Heimdal, you will also need the Heimdal 7.1.0
> or later release (as that is where OpenSSL 1.1 support was added). It
> can be obtained from <http://h5l.org/>.
>
> Also new with this release is the ability to run "make its" in the tests/
> directory. This will run a specific set of tests around past bugs to
> ensure there are no regressions. While I've tested this with modular
> openldap builds, it has not been tested with the modules and backends
> built into slapd, so there could be some issues in that scenario.
>
> OpenLDAP 2.4.45 Engineering
> Added slapd support for OpenSSL 1.1.0 series (ITS#8353,
> ITS#8533, ITS#8634)
> Fixed libldap to fail ldap_result if the handle is already bad
> (ITS#8585)
> Fixed libldap to expose error if user specified CA doesn't
> exist (ITS#8529)
> Fixed libldap handling of Diffie-Hellman parameters (ITS#7506)
> Fixed libldap GnuTLS use after free (ITS#8385)
> Fixed slapd bconfig rDN escape handling (ITS#8574)
> Fixed slapd segfault with invalid hostname (ITS#8631)
> Fixed slapd sasl SEGV rebind in same session (ITS#8568)
> Fixed slapd syncrepl filter handling (ITS#8413)
> Fixed slapd syncrepl infinite looping mods with delta-sync MMR
> (ITS#8432)
> Fixed slapd callback struct so older modules without writewait
> should function.
> Custom modules may need to be updated for
> sc_writewait callback (ITS#8435)
> Fixed slapd-ldap/meta broken LDAP_TAILQ macro (ITS#8576)
> Fixed slapd-mdb so it passes ITS6794 regression test (ITS#6794)
> Fixed slapd-meta uninitialized diagnostic message (ITS#8442)
> Fixed slapo-accesslog to honor pauses during purge for
> cn=config update (ITS#8423)
> Fixed slapo-accesslog with multiple modifications to the same
> attribute (ITS#6545)
> Fixed slapo-relay to correctly initialize sc_writewait
> (ITS#8428)
> Fixed slapo-sssvlv double free (ITS#8592)
> Fixed slapo-unique with empty modifications (ITS#8266)
> Build Environment
> Added test065 for proxyauthz (ITS#8571)
> Fix test008 to be portable (ITS#8414)
> Fix test064 to wait for slapd to start (ITS#8644)
> Fix its4336 regression test (ITS#8534)
> Fix its4337 regression test (ITS#8535)
> Fix regression tests to execute on all backends
> (ITS#8539)
> Contrib
> Added slapo-autogroup(5) man page (ITS#8569)
> Added passwd missing conversion scripts for apr1
> (ITS#6826)
> Fixed contrib modules where the writewait callback
> was not correctly initialized (ITS#8435)
> Fixed smbk5pwd to build with newer OpenSSL
> releases (ITS#8525)
> Documentation
> admin24 fixed tls_cipher_suite bindconf option
> (ITS#8099)
> admin24 fixed typo cn=config to be slapd.d
> (ITS#8449)
> admin24 fixed slapo-syncprov information to be
> curent (ITS#8253)
> admin24 fixed typo in access control docs
> (ITS#7341, ITS#8391)
> admin24 fixed minor typo in tuning guide (ITS#8499)
> admin24 fixed information about the limits option
> (ITS#7700)
> admin24 fixed missing options for syncrepl
> configuration (ITS#7700)
> admin24 fixed accesslog documentation to note it
> should not be replicated (ITS#8344)
> Fixed ldap.conf(5) missing information on
> SASL_NOCANON option (ITS#7177)
> Fixed ldapsearch(1) information on the V[V] flag
> behavior (ITS#7177, ITS#6339)
> Fixed slapd-config(5), slapd.conf(5) clarification
> on interval keyword for refreshAndPersist (ITS#8538)
> Fixed slapd-config(5), slapd.conf(5) clarify
> serverID requirements (ITS#8635)
> Fixed slapd-config(5), slapd.conf(5) clarification
> on loglevel settings (ITS#8123)
> Fixed slapo-ppolicy(5) to clearly note rootdn
> requirement (ITS#8565)
> Fixed slapo-memberof(5) to note it is not safe to
> use with replication (ITS#8613)
> Fixed slapo-syncprov(5) documentation to be
> current (ITS#8253)
> Fixed slapadd(8) manpage to note slapd-mdb
> (ITS#8215)
> Fixed various minor grammar issues in the man
> pages (ITS#8544)
> Fixed various typos (ITS#8587)
>
>
> --
>
> Quanah Gibson-Mount
> Product Architect
> Symas Corporation
> Packaged, certified, and supported LDAP solutions powered by OpenLDAP:
> <http://www.symas.com>
>
>
>
>
--
Quanah Gibson-Mount
Product Architect
Symas Corporation
Packaged, certified, and supported LDAP solutions powered by OpenLDAP:
<http://www.symas.com>
6 years, 1 month
Re: RE24 testing call #2 (2.4.45) LMDB RE0.9 testing call #2 (0.9.20)
by Abdelkader Chelouah
Built and tested OPENLDAP_REL_ENG_2_4-g66d107e (OS RHEL 7)
"make mdb-its" succeded but "make mdb" failed on test018 with error
>>>>> Starting test018-syncreplication-persist for mdb...
running defines.sh
Starting provider slapd on TCP/IP port 9011...
Using ldapsearch to check that provider slapd is running...
Using ldapadd to create the context prefix entry in the provider...
Starting consumer slapd on TCP/IP port 9014...
Using ldapsearch to check that consumer slapd is running...
Waiting 5 seconds for slapd to start...
Using ldapadd to populate the provider directory...
Waiting 7 seconds for syncrepl to receive changes...
Using ldapsearch to read all the entries from the provider...
Using ldapsearch to read all the entries from the consumer...
Filtering provider results...
Filtering consumer results...
Comparing retrieved entries from provider and consumer...
Stopping the provider, sleeping 10 seconds and restarting it...
Using ldapsearch to check that provider slapd is running...
Waiting 7 seconds for consumer to reconnect...
Using ldapmodify to modify provider directory...
Using ldappasswd to change some passwords...
Waiting 7 seconds for syncrepl to receive changes...
Using ldapsearch to read all the entries from the provider...
Using ldapsearch to read all the entries from the consumer...
Filtering provider results...
Filtering consumer results...
Comparing retrieved entries from provider and consumer...
test failed - provider and consumer databases differ
>>>>> test018-syncreplication-persist failed for mdb
(exit 1)
make: *** [mdb-mod] Error 1
On Fri, Apr 28, 2017 at 12:33 AM, Quanah Gibson-Mount <quanah(a)symas.com>
wrote:
> For this testing call, we particularly need folks to test OpenLDAP with
> startTLS/LDAPS when compiled against OpenSSL (both pre 1.1 series and with
> the 1.1 series). This was reworked since the prior testing call, as the
> OpenSSL 1.1.0 work was not correct. There is currenly nothing in the test
> suite that covers encrypted connections (Although it's on my todo list). To
> build against OpenSSL 1.1 may also require cyrus-sasl HEAD out of the
> cyrus-sasl GIT repository, depending on your build options as the current
> cyrus-sasl release does not support the OpenSSL 1.1 series. It can be
> found at <https://github.com/cyrusimap/cyrus-sasl>. If you build with
> GSSAPI and use Heimdal, you will also need the Heimdal 7.1.0 or later
> release (as that is where OpenSSL 1.1 support was added). It can be
> obtained from <http://h5l.org/>.
>
> Also new with this release is the ability to run "make its" in the tests/
> directory. This will run a specific set of tests around past bugs to
> ensure there are no regressions. While I've tested this with modular
> openldap builds, it has not been tested with the modules and backends built
> into slapd, so there could be some issues in that scenario.
>
> OpenLDAP 2.4.45 Engineering
> Added slapd support for OpenSSL 1.1.0 series (ITS#8353, ITS#8533,
> ITS#8634)
> Fixed libldap to fail ldap_result if the handle is already bad
> (ITS#8585)
> Fixed libldap to expose error if user specified CA doesn't exist
> (ITS#8529)
> Fixed libldap handling of Diffie-Hellman parameters (ITS#7506)
> Fixed libldap GnuTLS use after free (ITS#8385)
> Fixed slapd bconfig rDN escape handling (ITS#8574)
> Fixed slapd segfault with invalid hostname (ITS#8631)
> Fixed slapd sasl SEGV rebind in same session (ITS#8568)
> Fixed slapd syncrepl filter handling (ITS#8413)
> Fixed slapd syncrepl infinite looping mods with delta-sync MMR
> (ITS#8432)
> Fixed slapd callback struct so older modules without writewait
> should function.
> Custom modules may need to be updated for sc_writewait
> callback (ITS#8435)
> Fixed slapd-ldap/meta broken LDAP_TAILQ macro (ITS#8576)
> Fixed slapd-mdb so it passes ITS6794 regression test (ITS#6794)
> Fixed slapd-meta uninitialized diagnostic message (ITS#8442)
> Fixed slapo-accesslog to honor pauses during purge for cn=config
> update (ITS#8423)
> Fixed slapo-accesslog with multiple modifications to the same
> attribute (ITS#6545)
> Fixed slapo-relay to correctly initialize sc_writewait (ITS#8428)
> Fixed slapo-sssvlv double free (ITS#8592)
> Fixed slapo-unique with empty modifications (ITS#8266)
> Build Environment
> Added test065 for proxyauthz (ITS#8571)
> Fix test008 to be portable (ITS#8414)
> Fix test064 to wait for slapd to start (ITS#8644)
> Fix its4336 regression test (ITS#8534)
> Fix its4337 regression test (ITS#8535)
> Fix regression tests to execute on all backends (ITS#8539)
> Contrib
> Added slapo-autogroup(5) man page (ITS#8569)
> Added passwd missing conversion scripts for apr1 (ITS#6826)
> Fixed contrib modules where the writewait callback was not
> correctly initialized (ITS#8435)
> Fixed smbk5pwd to build with newer OpenSSL releases
> (ITS#8525)
> Documentation
> admin24 fixed tls_cipher_suite bindconf option (ITS#8099)
> admin24 fixed typo cn=config to be slapd.d (ITS#8449)
> admin24 fixed slapo-syncprov information to be curent
> (ITS#8253)
> admin24 fixed typo in access control docs (ITS#7341,
> ITS#8391)
> admin24 fixed minor typo in tuning guide (ITS#8499)
> admin24 fixed information about the limits option (ITS#7700)
> admin24 fixed missing options for syncrepl configuration
> (ITS#7700)
> admin24 fixed accesslog documentation to note it should not
> be replicated (ITS#8344)
> Fixed ldap.conf(5) missing information on SASL_NOCANON
> option (ITS#7177)
> Fixed ldapsearch(1) information on the V[V] flag behavior
> (ITS#7177, ITS#6339)
> Fixed slapd-config(5), slapd.conf(5) clarification on
> interval keyword for refreshAndPersist (ITS#8538)
> Fixed slapd-config(5), slapd.conf(5) clarify serverID
> requirements (ITS#8635)
> Fixed slapd-config(5), slapd.conf(5) clarification on
> loglevel settings (ITS#8123)
> Fixed slapo-ppolicy(5) to clearly note rootdn requirement
> (ITS#8565)
> Fixed slapo-memberof(5) to note it is not safe to use with
> replication (ITS#8613)
> Fixed slapo-syncprov(5) documentation to be current
> (ITS#8253)
> Fixed slapadd(8) manpage to note slapd-mdb (ITS#8215)
> Fixed various minor grammar issues in the man pages
> (ITS#8544)
> Fixed various typos (ITS#8587)
>
>
> --
>
> Quanah Gibson-Mount
> Product Architect
> Symas Corporation
> Packaged, certified, and supported LDAP solutions powered by OpenLDAP:
> <http://www.symas.com>
>
>
>
6 years, 1 month
RE24 testing call #2 (2.4.45) LMDB RE0.9 testing call #2 (0.9.20)
by Quanah Gibson-Mount
For this testing call, we particularly need folks to test OpenLDAP with
startTLS/LDAPS when compiled against OpenSSL (both pre 1.1 series and with
the 1.1 series). This was reworked since the prior testing call, as the
OpenSSL 1.1.0 work was not correct. There is currenly nothing in the test
suite that covers encrypted connections (Although it's on my todo list).
To build against OpenSSL 1.1 may also require cyrus-sasl HEAD out of the
cyrus-sasl GIT repository, depending on your build options as the current
cyrus-sasl release does not support the OpenSSL 1.1 series. It can be
found at <https://github.com/cyrusimap/cyrus-sasl>. If you build with
GSSAPI and use Heimdal, you will also need the Heimdal 7.1.0 or later
release (as that is where OpenSSL 1.1 support was added). It can be
obtained from <http://h5l.org/>.
Also new with this release is the ability to run "make its" in the tests/
directory. This will run a specific set of tests around past bugs to
ensure there are no regressions. While I've tested this with modular
openldap builds, it has not been tested with the modules and backends built
into slapd, so there could be some issues in that scenario.
OpenLDAP 2.4.45 Engineering
Added slapd support for OpenSSL 1.1.0 series (ITS#8353, ITS#8533,
ITS#8634)
Fixed libldap to fail ldap_result if the handle is already bad
(ITS#8585)
Fixed libldap to expose error if user specified CA doesn't exist
(ITS#8529)
Fixed libldap handling of Diffie-Hellman parameters (ITS#7506)
Fixed libldap GnuTLS use after free (ITS#8385)
Fixed slapd bconfig rDN escape handling (ITS#8574)
Fixed slapd segfault with invalid hostname (ITS#8631)
Fixed slapd sasl SEGV rebind in same session (ITS#8568)
Fixed slapd syncrepl filter handling (ITS#8413)
Fixed slapd syncrepl infinite looping mods with delta-sync MMR
(ITS#8432)
Fixed slapd callback struct so older modules without writewait
should function.
Custom modules may need to be updated for sc_writewait
callback (ITS#8435)
Fixed slapd-ldap/meta broken LDAP_TAILQ macro (ITS#8576)
Fixed slapd-mdb so it passes ITS6794 regression test (ITS#6794)
Fixed slapd-meta uninitialized diagnostic message (ITS#8442)
Fixed slapo-accesslog to honor pauses during purge for cn=config
update (ITS#8423)
Fixed slapo-accesslog with multiple modifications to the same
attribute (ITS#6545)
Fixed slapo-relay to correctly initialize sc_writewait (ITS#8428)
Fixed slapo-sssvlv double free (ITS#8592)
Fixed slapo-unique with empty modifications (ITS#8266)
Build Environment
Added test065 for proxyauthz (ITS#8571)
Fix test008 to be portable (ITS#8414)
Fix test064 to wait for slapd to start (ITS#8644)
Fix its4336 regression test (ITS#8534)
Fix its4337 regression test (ITS#8535)
Fix regression tests to execute on all backends (ITS#8539)
Contrib
Added slapo-autogroup(5) man page (ITS#8569)
Added passwd missing conversion scripts for apr1 (ITS#6826)
Fixed contrib modules where the writewait callback was not
correctly initialized (ITS#8435)
Fixed smbk5pwd to build with newer OpenSSL releases
(ITS#8525)
Documentation
admin24 fixed tls_cipher_suite bindconf option (ITS#8099)
admin24 fixed typo cn=config to be slapd.d (ITS#8449)
admin24 fixed slapo-syncprov information to be curent
(ITS#8253)
admin24 fixed typo in access control docs (ITS#7341,
ITS#8391)
admin24 fixed minor typo in tuning guide (ITS#8499)
admin24 fixed information about the limits option (ITS#7700)
admin24 fixed missing options for syncrepl configuration
(ITS#7700)
admin24 fixed accesslog documentation to note it should not
be replicated (ITS#8344)
Fixed ldap.conf(5) missing information on SASL_NOCANON
option (ITS#7177)
Fixed ldapsearch(1) information on the V[V] flag behavior
(ITS#7177, ITS#6339)
Fixed slapd-config(5), slapd.conf(5) clarification on
interval keyword for refreshAndPersist (ITS#8538)
Fixed slapd-config(5), slapd.conf(5) clarify serverID
requirements (ITS#8635)
Fixed slapd-config(5), slapd.conf(5) clarification on
loglevel settings (ITS#8123)
Fixed slapo-ppolicy(5) to clearly note rootdn requirement
(ITS#8565)
Fixed slapo-memberof(5) to note it is not safe to use with
replication (ITS#8613)
Fixed slapo-syncprov(5) documentation to be current
(ITS#8253)
Fixed slapadd(8) manpage to note slapd-mdb (ITS#8215)
Fixed various minor grammar issues in the man pages
(ITS#8544)
Fixed various typos (ITS#8587)
--
Quanah Gibson-Mount
Product Architect
Symas Corporation
Packaged, certified, and supported LDAP solutions powered by OpenLDAP:
<http://www.symas.com>
6 years, 1 month
Re: serverID 0 and MMR
by Quanah Gibson-Mount
--On Friday, April 21, 2017 6:18 PM +0200 Michael Ströder
<michael(a)stroeder.com> wrote:
>> Perhaps a failure if someone tries to set olcMirrorMode to TRUE when
>> serverID is 0.
>>
>> That covers the MMR case, but it doesn't cover the non-MMR case where
>> unique serverIDs are required with separate masters and glued databases.
>
> Catching the MMR case would already be a real improvement.
>
> The latter case is far less common and people glueing DBs are likely more
> familiar with OpenLDAP setups.
One would hope. My experience indicates otherwise. ;)
--Quanah
--
Quanah Gibson-Mount
Product Architect
Symas Corporation
Packaged, certified, and supported LDAP solutions powered by OpenLDAP:
<http://www.symas.com>
6 years, 1 month
Re: serverID 0 and MMR (was: ITS#8609)
by Quanah Gibson-Mount
--On Thursday, April 20, 2017 11:34 PM +0200 Michael Ströder
<michael(a)stroeder.com> wrote:
> quanah(a)symas.com wrote:
>> It's fine for there to be legacy entryCSNs and a contextCSN for serverID
>> of 0. However, it is not fine for any master in an MMR setup to have a
>> specific serverID of 0.
>
> Would it be possible to check serverID during slapd startup with MMR
> setup and fail to start with an error message in case serverID is 0?
Perhaps a failure if someone tries to set olcMirrorMode to TRUE when
serverID is 0. That covers the MMR case, but it doesn't cover the non-MMR
case where unique serverIDs are required with separate masters and glued
databases.
--Quanah
--
Quanah Gibson-Mount
Product Architect
Symas Corporation
Packaged, certified, and supported LDAP solutions powered by OpenLDAP:
<http://www.symas.com>
6 years, 1 month
Re: Compile failed when configure --without-thread on git master branch
by Quanah Gibson-Mount
--On Friday, April 21, 2017 3:38 PM +0100 Howard Chu <hyc(a)symas.com> wrote:
> Qun-Ying wrote:
>> Hi,
>
> Hi. Thanks for the notice. In the future please use the ITS when you
> encounter problems like this.
They did -- ITS#8642, 4 days ago.
--Quanah
--
Quanah Gibson-Mount
Product Architect
Symas Corporation
Packaged, certified, and supported LDAP solutions powered by OpenLDAP:
<http://www.symas.com>
6 years, 1 month
Re: Compile failed when configure --without-thread on git master branch
by Howard Chu
Qun-Ying wrote:
> Hi,
Hi. Thanks for the notice. In the future please use the ITS when you encounter
problems like this.
>
> When configure with
> ./configure --without-thread
> The code in master branch will failed with:
> thr_stub.c:170:1: error: conflicting types for 'ldap_pvt_thread_pool_retract'
> ldap_pvt_thread_pool_retract (
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from thr_stub.c:21:0:
> ../../include/ldap_pvt_thread.h:237:1: note: previous declaration of
> 'ldap_pvt_thread_pool_retract' was here
> ldap_pvt_thread_pool_retract LDAP_P((
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> thr_stub.c:254:1: warning: return type defaults to 'int' [-Wimplicit-int]
> ldap_pvt_thread_pool_pausecheck( ldap_pvt_thread_pool_t *tpool )
>
> It seems the check in e12ca8b6fed6b8a2526 for "Fixes for multiple
> threadpool queues" change the API but does not update the thr_stub.c
> definition.
>
>
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/
6 years, 1 month
serverID 0 and MMR (was: ITS#8609)
by Michael Ströder
quanah(a)symas.com wrote:
> It's fine for there to be legacy entryCSNs and a contextCSN for serverID of
> 0. However, it is not fine for any master in an MMR setup to have a
> specific serverID of 0.
Would it be possible to check serverID during slapd startup with MMR setup and fail to
start with an error message in case serverID is 0?
Ciao, Michael.
6 years, 1 month