RT 4.4.3 Beta 1 Now Available


#1

RT 4.4.3beta1 is now available for testing. The list of changes included with this release is below. We welcome any feedback or bug reports on this beta release.

(For long-time RT testers, this release is the same as what we previously called a release candidate. We have decided to change to “beta” since that has become a more familiar term for early release software.)

https://download.bestpractical.com/pub/rt/devel/rt-4.4.3beta1.tar.gz
https://download.bestpractical.com/pub/rt/devel/rt-4.4.3beta1.tar.gz.asc

SHA-256 sums

519295450b48839282a78ccf276df1d91aff5f505ca87bcb523a50750a85e189 rt-4.4.3beta1.tar.gz
ed4f010b609fc9bdaed3cf1b746d5d03a37ee0173f37ef2769b9ae1c33be8360 rt-4.4.3beta1.tar.gz.asc

General user UI

  • Show the Ticket’s Subject when modifying the ticket.
  • Re-format RT/Config.pm so the # loc comment parses correctly.
  • Sort saved searches alphabetically by name rather than by id.
  • In Self Service, provide a path to remove attachments from the session
    when they are deleted from dropzone by the user (I#32663).
  • Fix evaluation of set vs. unset custom fields on display for correct hiding.
  • Set dropzone attachment size based on RT’s MaxAttachmentSize configuration.
  • Add a configuration option TreatAttachedEmailAsFiles to treat attached email
    as a file attachment instead of parsing as regular email.
  • Restore email header parsing for items like email addresses when
    TreatAttachedEmailAsFiles is not set. This was disabled in a previous
    version.
  • Respect default queue settings in Create linked ticket dropdown (I#32884).
  • More fixes for recipient checkboxes on update. This version removes previous
    problematic fixes and gives a visual indication (shading) when RT is updating
    recipients in the background and checkboxes should not be changed (I#33027).
  • Provide a way to reset personal search preferences back to the RT system
    default (I#32854).
  • Add an Untake action to the Actions tab.
  • Add active and inactive status to query builder.
  • Re-add Queue to ‘Order by’ dropdown in Search Builder.
  • Make admin searches for queue and group case insensitive making it easier to
    find groups.
  • When editing ticket basics, always add valid default value to queue selection,
    taking into account SeeQueue rights.
  • Set dropzone parallelUploads to 1 to avoid losing attachments. Also
    set parallelUploads when the dropzone object is created.
  • Correct error messages on user rights for CF admin UI.
  • In ticket history, respect ShowHeaders option from request for
    ScrollShowHistory (I#32699).
  • Fix ExtraArgs of callback ExtraShowHistoryArguments in ScrollShowHistory.
  • In the ticket history with scroll set, continue to get transactions until all
    have been shown, even if a block has been hidden for some reason (rights, etc.).
  • Add PreferDropzone config/pref option for users. Dropzone is not accessible
    to screen readers and this enables the previous attachments interface which
    is accessible.
  • In the query builder, set operator to “IS” or “IS NOT” for NULL values.
    This fixes a regression from pre-4.4 RT behavior.
  • Don’t create ticket if user clicks “Go” buttons of “Include Article”.
  • Fix CF name escape for asset search’s spreadsheet download.
  • Show the user in single member custom roles even if the user is
    disabled (I#32949).

Administration

  • Stop wrapping ShowUser in tags to avoid unnecessary nested links.
  • When listing group members, sort by text-only representation of the
    user, not HTML (I#30771)
  • In the group admin page, stop pre-computing ShowUser.
  • In shredder, check for both id and name mismatches when loading objects.
  • Add a new rt-passwd command to make it easy to reset passwords on the
    command-line.
  • Support custom roles in RT serializer/importer tools.
  • Support catalogs and assets in RT serializer/importer tools.
  • Update RT’s module dependencies for SSL (https) to align with updates
    to the CPAN module ecosystem.
  • Add age, batchsize, and dry-run options to rt-externalize-attachments.
  • Set proper HTTP Status codes on Abort.
  • The value for converting the owner dropdown to an autocomplete textbox can
    now be updated in configuration with DropdownMenuLimit.
  • Switch to Clone::clone to copy config structures in Obfuscate callbacks. This
    restores support for REGEXP and CODE configuration on the System Configuration page.
  • Provide a way to pass more options to Net::LDAP from LDAPImport configuration.
  • Provide more debug output on connection failures in LDAPImport.
  • Store log messages until RT::Logger is initialized. This means messages logged
    before the logger is available, like “Change of config option…” can now
    respect the configured log level.

Internals

  • Cache OCFVs to improve performance searching for duplicates when adding
    values.
  • Remove unused dependencies on File::Copy and Carp.
  • On Oracle, return the empty string instead of undef for Subject when it
    has no value on a ticket.
  • When linking, load assets by id to confirm the asset exists. This makes
    asset link handling consistent with ticket handling.
  • Various fixes for compatibility with perl 5.26.
  • Support unicode characters in constant time comparison function
  • Allow merge for tickets only, not other types like reminders (I#32700).
  • Preload Encode with UTF-8 to avoid masking other errors (I#32648).
  • Process multiple links via the REST 1.0 interface.
  • Add SLA field support on REST 1.0.
  • Build table attributes for RT::Asset. This is needed to allow assets to work
    properly with REST 2.0.
  • Avoid uninitialized value warnings with CustomField.
  • Call DoAuth only if ExternalAuthPriority is not empty, allowing use of
    ExternalAuthInfo without ExternalAuthPriority set.
  • Use “id asc” as the default sort order of GroupMembers for consistent ordering.
  • Cache OCFVs to improve performance searching for duplicates on add.
  • In CollectionAsTable, fix the uninitialized warning in case @Order is empty.
  • In rt-validator, update link checking regex to match asset links.
  • Remove trailing “/” from RT::URI::asset::LocalURIPrefix for consistency.
  • Use RT::Logger for EmailInputEncodings config warnings.
  • “Die” properly when receiving an invalid query via to FromSQL.

Developer

  • Avoid using $id in /Ticket/Display.html so callbacks can modify id in ARGS.
  • Pass the MIME entity to ParseTicketId in addition to subject.
  • Remove a ‘This is scary’ comment from code that has been running fine for
    over 10 years.
  • Improve warning tracking for automated tests.
  • Add an Initial callback to Bulk.html.
  • Don’t fail externalauth/auth_config.t tests if Net::LDAP is missing.
  • Find an idle port for LDAP test server to avoid tests hanging when running
    in parallel mode.
  • When testing, make sure DevelMode is on to catch compilation errors.
  • Avoid uninitialized warnings of empty ticket subjects on Oracle.
  • In the MessageBox template, default callback, pass $message by reference in
    MessageRef, as the variable name implies. This will break previous use of
    MessageRef as a scalar.
  • Add support for a NeverNotifyActor argument to Notify actions.

Documentation

  • Mention the RT-Attach-Message: yes header in template docs.
  • Fix incorrect path in portlet documentation.
  • In $ParseNewMessageForTicketCcs docs, mention the RT::Action::AutoAddWatchers
    extension.
  • Document queue-level template overrides.
  • Document using prove and RT_TEST_PARALLEL for tests.
  • Note in UPGRADING that RT::Extension::AdminConditionsAndActions is now in core.
  • Remove unnecessary AUTHORS sections from docs.
  • Update rt-static-docs documentation processing to fix broken links.
  • Add MariaDB support to documentation and rt-setup-fulltext-index.

Internationalization

  • Many changes to refactor sections of RT’s internationalization code.

A complete changelog is available from git by running:
git log rt-4.4.2…rt-4.4.3beta1
or visiting
https://github.com/bestpractical/rt/compare/rt-4.4.2...rt-4.4.3beta1


Release date for 4.4.3?
#3

Upgraded to 4.4.3beta1 to check if occasional attachment loosing in 4.4.2 (happens over web ui) will stop. Noticed such entries in logs:

[2641] [Wed May 23 11:39:08 2018] [critical]: RT::Attachment->Create couldn’t, as you didn’t specify a transaction (/usr/share/perl5/vendor_perl/RT/Attachment.pm:124)
[2641] [Wed May 23 11:39:08 2018] [error]: RT::Scrips=HASH(0xe0eb4e0) couldn’t load transaction (/usr/share/perl5/vendor_perl/RT/Scrips.pm:417)
[2641] [Wed May 23 11:39:08 2018] [error]: RT::Ticket=HASH(0xe43dfc8) couldn’t init a transaction Transakcja została utworzona (/usr/share/perl5/vendor_perl/RT/Ticket.pm:1726)

“couldn’t init a transaction Transakcja została utworzona” is interesting because “Transakcja została utworzona” means “Transaction Created” (Polish).

What’s happening here?


#4

Have you been able to determine what set of steps causes those messages? Is it when you create a ticket, update (reply/comment) on a ticket, add an attachment, etc. If you can give us some additional information, we can try to reproduce it.

Are you running a packaged version of RT? If so, can you note which package and Linux distro?


#5

It’s when someone for example is adding attachment to existing ticket as comment.

Unfortunately I cannot reproduce it by hand - it is some intermittent fault it seems but happens few times a day because I see it in logs and people tell my they tried to add attachment but failed. Then user tries again and attachment gets added correctly.

When problem happens user sees “Message could not be recorded”.

No sql errors are logged in rt log (I hope that rt does log sql errors if they happen because mysqld have no such feature at all).

The attachment user was trying to add was was 166KB pdf file.

It’s packaged version by me for pld-linux.org.


#6

More info (raised logging level to info now):

[32054] [Thu May 24 06:07:36 2018] [critical]: RT::Attachment->Create couldn’t, as you didn’t specify a transaction (/usr/share/perl5/vendor_perl/RT/Attachment.pm:124)
[32054] [Thu May 24 06:07:36 2018] [error]: RT::Scrips=HASH(0xd6c6350) couldn’t load transaction (/usr/share/perl5/vendor_perl/RT/Scrips.pm:417)
[32054] [Thu May 24 06:07:36 2018] [warning]: Use of uninitialized value $transactionType in string eq at (eval 700) line 20. ((eval 700):20)
[32054] [Thu May 24 06:07:36 2018] [error]: RT::Ticket=HASH(0xcdbb6d8) couldn’t init a transaction Transakcja została utworzona (/usr/share/perl5/vendor_perl/RT/Ticket.pm:1726)


#7

Noticed another, unrelated problem:

[26565] [Thu May 24 11:28:23 2018] [warning]: DBD::mysql::st execute failed: Data truncated for column ‘TimeTaken’ at row 1 at /usr/share/perl5/vendor_perl/DBIx/SearchBuilder/Handle.pm line
586. (/usr/share/perl5/vendor_perl/DBIx/SearchBuilder/Handle.pm:586)

Someone tried to enter “0,1” as TimeTaken causing a problem. Looks like some validation is needed there because "Message could not be recorded” is misleading.


#8

About loosing attachments case - still trying to figure out more details or some debug information.

I think rt is not handling a case when source IP changes.

Here we are behind nat that assigns multiple src ip on output. So for example one request can go from IP .1 and second from .2 or .3 etc. In my case it seems that user was adding comment from ip .1 but actual /Helpers/Upload request came from IP .2.

Changed NAT setting to always use IP .1 and will see if that helps.


#9

We have confirmed the TimeTaken bug and are working on a fix. We haven’t been able to reproduce the attachments issue yet.

Thanks for testing!


#10

Thanks.

I’m almost 100% sure that attachments issue is related to 2 source IP addresses used on client side. So uploading attachments comes from IP A, comment request comes from IP B.


#11

Is something wrong with origin/4.4/validate-time-worked branch since it wasn’t merged into 4.4.3 (for which I already see tarballs) ?


#12

That branch hasn’t gone through the review process and didn’t get scheduled in time for the 4.4.3 release. If you’re actively waiting for it, the best approach is to watch for it to be merged to 4.4-trunk, which indicates it has been reviewed and will be in the next release.