What's new in this version:
- Added more intelligence to the Analyze Panel in an effort to reduce/eliminate unnecessary refreshes
- Posting entries to a task document’s log during a synchronization is now less thread intensive
- A ‘bootable’ trigger mode will now enable the EA and ACL variable attribute triggers, but only if both targets support ‘ExtendedInfoCollection’ i.e. not for connections to old versions of ChronoAgent
- Implemented an alternate technique for aggregating package files that is much faster on APFS file systems. We now use optimal package aggregation techniques depending on whether we are accessing an APFS or HFS filesystem
- Internally, all timestamp manipulations & comparisons are done with sub-second precision. The UI still floors to the nearest second, however
- The Scheduled Tasks database is now loaded and instantiated in a background thread. If you have a large schedule and/or slower computer, ChronoSync will launch faster but you’ll see a delay before scheduled entries appear
- The filesystem validation logic employed when scanning the contents of folders will now try to adapt to inconsistencies detected in the file system rather than immediately throwing an error. This is because High Sierra is reporting a lot of inconsistencies, especially with SMB mounted file servers
- If package dissection is OFF, maintaining an archive which contains package files is now much more efficient. Depending on the nature of your sync/backup task, this could yield a significant performance improvement
- Added the ‘Post more detailed information to the log’ checkbox to the Validator UI. This determines whether or not detailed info will be posted about mismatches. This used to be controlled by the Synchronizer’s equivalent property but now you can control the behavior independently
- Now prevents the system from sleeping when restoring or deleting a batch of files in the Analyze Panel
- The process of connecting to target file managers in a scheduled sync (one that runs without a user interface) is now more streamlined & efficient
- Added new Chinese and Paris endpoints to the Amazon S3 Connection Profile Editor
- When creating a folder as part of a sync operation, we now wrap the operation in a compound task
- When the system wakes from sleep, we added logic in an attempt to thwart the problem where, sometimes, the system wakes from sleep for a scheduled sync, but then goes back to sleep before the sync can be started
- Reworked the 65 second wake assertion we create after invoking a scheduled sync so that it asserts user activity during that time frame if wake-to-sync is enabled
- Added additional operations that generate diagnostics if schedulerDebug is enabled
- The application’s scheduler and scheduled items manager now waits for the background scheduler to be launched before starting themselves up (but won’t wait more than 5 seconds)
- When the system wakes from sleep, we now attempt to schedule the next system wake event. This is an attempt to thwart the problem where a system may stop sending us sleep notifications before putting the system to sleep
- We now schedule a wake event whenever a change is detected in the scheduled items database, the WakeToSync preference is enabled, or the scheduler is turned ON/RESUMED. We also remove all of our scheduled wake events whenever the WakeToSync preference is disabled, or the scheduler is turned OFF/SUSPENDED
- Implemented a scheme whereby a deadlock in the coordinated read/write of the scheduler database can be broken, thereby disabling the coordinated read-write system. The deadlock breaks after 15 seconds and an error message will be posted to the ChronoSync-Console.log or ChronoSync-Scheduler-Console.log
- Tweaked the heartbeat logic so that if it has been over 100 seconds since we last checked the schedule, we treat it as if it were an awake-from-sleep event
- We now declare user activity at the beginning and end of a scheduled sync
- /private/var/run and /private/var/tmp are no longer content- blacklisted for bootable backups
- /private/var/vm is now content-blacklisted for bootable backups
- Added logic to the bootable bless process that ensure /private/ var/vm exists on the destination
- Added logic to the bootable synchronizer that will only ‘touch’ the system extension folders if .kext were actually copied/deleted by the sync. This triggers a rebuild of the kext caches
- The Bootable Backup assistant now enables auto-mount for the destination device in all instances. It used to only do this if it was formatted as an encrypted volume by the assistant
- Deleting a .dylib file is now considered ‘copying’ one, so the dylib caches will get rebuilt at the end of a bootable backup
APFS Bootable Related:
- Added initial set of console messages that get generated when synchronizing the APFS Recovery partition fails
- When synchronizing the Recovery volume as part of an APFS bootable backup, we now dump the Recovery synchronizer’s log to the console if any errors were generated
- Added diagnostic messages that get generated when preparing/ refreshing an APFS Preboot volume
- If our initial manual prep of the Preboot volume fails, we now try to call updatePreboot to see if it can prep the volume. Previously, we only called updatePreboot after our manual prep succeeded
- Added logic to make sure the destination Preboot volume is dismounted after calling the updatePreboot utility because that utility has a tendency to leave it mounted if it produces an error
- All files and folders created while constructing an APFS Preboot volume are now owned by root:wheel
- When refreshing an APFS Preboot volume, we now completely delete the /var/db folder in the volume’s Preboot container and let the upodatePreboot utility rebuild it from scratch
- Modified the Bootable-Backup Recovery volume refresh logic to deal with situations where the source and destination volumes reside within the same APFS container
ChronoAgent Connection Related:
- Added a mechanism whereby the maximum number of pooled command sessions is limited by the maxPooledSessions property
- The prepareToSync method now sets the maxPooledSessions property (if supported) of the target file manager based on the maximum number of concurrent operations plus two
- Added logic so that if the MIME type returned by the OS does not conform to “type/subtype”, the default MIME type (typically “binary/octet-stream”) is used as the result
- Reduced the rate of update checks from the ChronoSync Scheduler to once every 24 hours (from once every 12). Our update-check server will be thankful
- Changed the animation style of the ChronoSync Organizer window to ‘none’. Having it ‘zoom’ open all the time was deemed annoying
- Added a 15 second wake assertion at application startup
- We now explicitly set the NSAppSleepDisabled = YES application preference setting when launching the main ChronoSync application
- Enhanced the DocumentRef’s ‘verify’ method (used by ChronoSync Organizer) so that changes to the ‘displayName’ property are made on the main thread. This is in response to some messages about modifying the auto-layout engine on a background thread that were observed in customer-supplied logs, even though this has never been witnessed
- Added logic to the SyncTarget’s setFileTimestamps:atPath: method which will use an alternate API for setting creation & modification date if the item resides on a non-AFP file server while running High Sierra (or later). This method is mainly used on folders
- Added more FMAudit diagnostics to the createFileNamed:inFolder:attributes:flags:newFileRef: method to try and shed light on mysterious permission errors
- We now redirect stdout to our private log files in addition to stderr
Notable bug fixes:
- Fixed a bug in the Remote Target Selector whereby folder contents presented to the user were not being sorted
- Hardened some code in the remote target selector UI to reduce the possibility of exceptions getting raised
- Fixed a validator bug whereby sockets and devices were being included in orphan counts
- Fixed a bug in the Validator whereby if the user aborted a validation, the file that was presently being compared would get reported as being mismatched. That could cause confusion with the user
- Fixed a bug in the Validator whereby it would always skip invisible items if Ignore Invisibles was enabled. It really should only skip them if the *source* item is invisible. If it is a bidirectional sync, it should only skip if *both* items are invisible. Otherwise, it could be a mismatch and should be reported
- Fixed a bug in the Validator whereby the ‘Skip Aliases’ setting was being ignored when comparing the contents of file packages
- We now clear the package aggregation cache of both target file managers before running a validation
- Fixed a relatively rare problem which can occur when working off a bootable backup of a system which had ChronoSync installed, and the default document template contains target specifications for volumes that are still online
- Fixed some bugs related to the mount-check performed prior to any mass file deletions (and periodically during a sync). The bugs would a) lead to ‘false positives’ meaning some file servers could erroneously have dismounts detected, and b) when such a dismount was detected, the error message was extremely unhelpful
- Fixed a bug whereby, sometimes, authenticating for admin access would cause the Scheduled Tasks Manager window to stay hidden after authentication
- When moving a file to an archive, we now have an exception handler to catch any exception raised in the process of enumerating a folder in the archive. It will now generate an error rather than throwing an unhandled exception
- Fixed a bug whereby having the “Don’t create empty folders” setting enabled and running a Trial Sync would skip any folders that need deletion or attribute-only syncs
- Fixed a bug whereby the display of Roll Back Errors was not interpreting the temporary pre-determination value that was set by previous invocations of the routine which would lead to it being interpreted as the status flags for other roll back warnings
- Fixed a bug whereby in some cases, posting a verbose log message about file deletion would only show the filename instead of the relative path
- Fixed a bug whereby some systems mis-report information about running processes and this was confusing ChronoSync into believing that ‘Admin Access’ was not available. The result was an inability to choose “Mounted Volumes (Admin Access)” and might also be the cause of nagging Keychain prompts that some users have reported
- Fixed a bug when performing a coordinated load of the scheduler database whereby we were briefly referencing a released object (both in ChronoSync and ChronoSync Scheduler)
- Fixed a bug when performing a coordinated load of the Connection Profiles data store whereby we were briefly referencing a disposed object
- Fixed a bug whereby agent connections (including ‘Admin Access’) that support command pooling were creating superfluous, ‘dead’ command sessions during initial connection and whenever the command session pool filled up
- Fixed a bug whereby the ChronoSync Scheduler’s system menu could get ‘stuck’ displaying the last frame of an animation. The frame would remain until the user interacted with the menu or another scheduled sync caused it to snap out of the stuck state
- Fixed a bug whereby it was possible that a popover window would get released before it had fully dismissed. This tended to cause crashes on some systems (mostly 10.11, it seems)
- We now delete the ChronoAgent port semaphore file on the destination (if it exists) during the bless phase of a bootable backup. This should eliminate the ‘Abnormal Startup’ warning that ChronoAgent will present when you boot off the destination
- Implemented the all-new 'False Mount' Readiness Test that checks to see if one of the targets is referencing a folder in the "/Volumes" folder
- Eliminated the possibility that ChronoSync would ever create a phantom volume in the "/Volumes" folder because the OS lost connection to a server or local device but failed to return an error message to ChronoSync
- Added logic to work around High Sierra bugs when renaming files on file servers as part of a Safe Copy or Archive Move operation
- The Validator and sync engine now filter out some legacy Finder Flags when detecting attribute changes
- Tweaked the IO throttling logic so that full throttle is restored after 10 seconds of system inactivity versus 30 in previous versions
- Changed auto-update checks so they are not performed when syncs are running
- Removed a bunch of unnecessary user interface updates when changing a target's volume
- Invoking the ChronoSync Organizer or Preferences window will now terminate auto-quit, if we were invoked for scheduled synchronization
- We now consistently produce data verification diagnostic output based on the DataVerificationAudit plist setting
- Improved mirrored log file behavior by recreating mirrored log file if necessary to avoid situations where the mirrored log file may have been deleted while still posting messages to it
- The ChronoSync Scheduler now tries to keep the system awake a little longer after triggering a task to run
- Improved user-controlled diagnostics for the Scheduler and Validator
Notable Bug Fixes:
- Changed how the ChronoSync Scheduler checks for missed jobs that could lead to erroneous triggering of sync jobs after a system wakes
- Fixed a bug whereby 'Run Once' scheduled items would not always run on the minute they were intended but would launch one minute later
- Fixed a bug whereby 'Run Once' scheduled items would repeatedly run after their first execution because they would not disable themselves
- We now turn off left or right target triggers if they are enabled but the target volume is not suitable for a live-trigger scheduled item
- Fixed a bug whereby adding a scheduled item from the Scheduled Task Manager window would fail if the first Sync Task document known to the program could not be found on disk
- Fixed a bug in the Validator whereby marking mismatched entries would result in forced-conflicts if the task was configured as a mirror
- Fixed a bug in the Validator whereby it could try to reference an object that doesn't exist, resulting in a crash
- Fixed a bug in the Validator whereby a NULL Finder comment was considered different from an empty Finder comment
- Fixed a bug in the Validator whereby, when NOT validating out-of-sync items, we failed to have the synchronizer refresh the attributes of each file pair. That could lead to an incorrect determination of whether or not the file-pair is considered out-of-sync
- Fixed a bug whereby the Validator had no additional logic to deal with package mismatch scenarios. It was thus prone to reporting modification date differences when one target thought a folder was a package but the other didn't
- Fixed a bug in the Validator whereby the 'Package Handling' setting of 'dissect' was not being taken into consideration when validating modification dates
- Fixed a bug whereby translated resources for the Access Restrictions user interface were never merged in with the program
- Fixed a localization bug whereby target descriptions were not being properly constructed in Japanese
- Fixed a crashing bug introduced by a change to how Google Cloud returns metadata values. The change occurred somewhere around Nov. 1st, 2017
- Fixed a bug whereby changing the connection method for a target between "Mounted Volumes" and "Mounted Volumes (Admin Access)" would revert to a "/Volumes" relative path on the boot drive
- Fixed a bug whereby the "Confirmation Test" connection role was never being sent to a ChronoAgent when testing a connection
- Fixed a bug that occurs when probing SFTP servers for their capabilities that could result in a failed connection
- Fixed a bug whereby selecting a target identical to the previous one would not clear the "Configured on a different system" readiness warning
- Fixed bug in preparing and updating the progress bar when performing a Sync Selection or Trial Sync Selection operation
- Fixed a bug whereby disabling the summary sheet in a container task window would prevent the window from being closable
- The Trial Sync Selector sheet window no longer crashes if the task is aborted behind its back (such as when targets become lost)
- Fixed a bug whereby resetting the sync history would not 'forget' certain values
- Fixed a bug whereby evaluating rules was not thread safe resulting in possible problems during concurrent operations
- Fixed a bug whereby a forced attribute sync on a folder would trick the pruning logic into pruning that folder if no child items were processed
- Fixed a bug whereby file servers could fail to refresh their displayed state in the Analyze Panel after performing a sync, deletion or restore
- Fixed a bug whereby trying to apply attributes to a folder that was really an alias to a folder (with resolve aliases enabled), would wipe out the alias
- Fixed a bug whereby resetting the status of a force-sync'd file-pair would not refresh the file pair and thus not immediately show the correct status of the file pair
- Implemented a workaround to a bug in the 'bless' utility whereby a bootable APFS volume might not appear when invoking Startup Manager (Option-Boot)
- Fixed a bug that affected the Bootable Backup assistant to ensure that if multiple volumes exist in an APFS container, only bootable volumes can be chosen as the source target
- Fixed a bug whereby presenting the Termination Window (i.e. "There are scheduled syncs running, do you really want to quit?") would eventually cause the menubar to stop animating
- Tweaked the “Optimization” phase of bootable backup tasks so that the destination volumes would boot more efficiently and reliably, especially if they contain a High Sierra installation
- When calculating the next scheduled run date of a scheduled task, the program (both ChronoSync and ChronoSync Scheduler) would hang if the next run date fell after a Daylight Savings Time-to-Standard Time transition
- Running a container task that encapsulated multiple sync/backup tasks that simultaneously process many files (via concurrent operations) was susceptible to crashing when closing the container task window
- Specifying a source or destination target that resided on an APFS filesystem would result in the “Strict volume identification” setting defaulting to OFF
- Full macOS 10.13-High Sierra compatibility
- Added a feature whereby holding OPTION down when selecting a task for any Modifier Assistants will now select/deselect ALL listed tasks
- Added the ability to schedule a free standing task document if no tasks are being tracked in the ChronoSync Organizer window. Also, holding the OPTION key down when clicking (+) in the Scheduled Task Manager window then displays the File Chooser to select a free-standing task document
- The user interface animations for all Assistants and the Validator function were reimplemented to work around High Sierra shortcomings
- The ChronoSync Installer and Uninstaller were modified to work around High Sierra bugs
- When creating a bootable backup to an APFS volume, the VM, Preboot and Recovery volume structure in the destination APFS container is constructed
- Added the correct Analyze Panel status icons (for attributes-only syncs) to the online help
- The process of blessing a destination volume in a bootable backup is now more verbose, displaying fine-grain progress to the user and posting relevant errors to the log
- When the Bootable backup assistant is presenting a warning that the destination volume is about to be erased, it checks to see if it is an APFS container with additional data volumes within it. If so, it presents those additional volume names as part of the warning
- The Readiness Warning stating that APFS destination volumes may not be bootable is only reported if APFS volume operations cannot be performed on the destination
- Fixed several bugs associated with the display of Trial Expiration notices when running the application in Trial Mode
- Fixed several bugs associated with performing automatic update checks
- Fixed a memory consumption problem that occurs in kernel_task memory when verifying large files
- Fixed a bug in the Container Editor’s task list whereby user modifications to the width of the Task Name column would not be preserved after closing the document
- Fixed a bug in the ChronoSync Organizer whereby the view that displays each document’s information would not automatically grow with the width of the window
- Fixed a bug that could cause a deadlock between the main ChronoSync application and the ChronoSync Scheduler. Under the wrong circumstances they would both wait on the other to obtain access to the scheduled items database
- Fixed a layout bug whereby unusually long task names would scroll off the top of the Scheduled Item Editor window
- Fixed a bug whereby hitting “Test” when multiple Push Receiver IDs were specified, and a space was used to separate the IDs, the test would fail. This existed in the sync task Options panel and the Notifications Assistant
- Fixed a bug whereby in the same scenario above (space between IDs), the Notifications Assistant would not store the Receiver IDs into the modified documents properly
- Enabling Push Notifications in the Notifications Assistant now forces “Only on Errors” setting OFF. Previously, it only did this if Push Notifications was OFF and it was turning them ON
- Fixed a bug whereby pausing a running sync wouldn’t necessarily pause it
- Eliminated a specific type of crash that could occur when scrolling through entries in the Trial Sync selector window
- Eliminated some data verification audit messages that were always getting posted to the console
- The Container synchronizer now properly updates the correct duration property on sync completion so that push notifications to ChronoMonitor will contain the correct duration value
- Added the ability to uniquely identify APFS volumes.
- Added the ability to determine the partitioning scheme of APFS formatted volumes.
- Added the ability to correctly identify whether or not an APFS volume has a bootable OS on it.
- Added the ability to mount Encrypted APFS volumes.
- Added the ‘APFS bootable destination’ readiness test that warns that a destination APFS volume may not be bootable which will be removed once we can guarantee APFS boot-ability.
- Added support for cut, copy, paste operations on Rules.
- Added the ability to detect when Sync Task is moved to another system.
- Added the ‘configuration system mismatch’ readiness warning that gets displayed when a Sync Task is opened on a system other than that which created/edited it.
- Improved Scheduler efficiency by reworking algorithms that calculate next item run date.
- When closing a scheduled item editor window, we now re-display the ChronoSync Organizer window, if necessary.
- Added “/Network” and “/dev” to the bootable blacklist.
- As part of the Bootable Backup, we now ensure that a “Network” folder is created on the destination and that it is marked ‘hidden.’
- The sync completion notice now displays a “View Log” button if the just-completed synchronization generated an error that was posted to the log.
- Improved Document and Window Close behavior by reordering the operations that occur when deallocating the user-interface resources.
- Standardized the behavior of focusing on the associated entry field when an particular option is turned on or selected throughout the user-interface.
- Added “.strings” to the default set of files that will be opened using OpenDiff when invoking the Compare function. This will only affect new installs.
- Updated and expanded file types covered by the “Common...” set of rule templates.
- Changed the Installer’s minimum OS requirement to 10.10.
- Added logic to detect the vendor name of any locally attached drive.
- Added many more log messages to the installer to facilitate troubleshooting failed installs.
- We now display a “Trial Expired” notification after the trial period has elapsed.
- Improved in-app Update Check Now performance.
- Added a “Buy” button to the Trial Period notice.
- Added Postbox email bridge.
- Added Airmail 3 email bridge.
- Remove QuickMail from email bridges.
- Numerous terminology changes, user-interface changes and tweaks.
- Fixed a bug where the installer was not always properly identifying an existing login item and would fail to re-launch the Scheduler at the end of the installation.
- Changed the behavior of log mirroring so that if there is a problem opening/creating the mirrored log file, we no longer disable mirroring.
- Fixed a bug whereby adding messages that spanned multiple lines to the sync log could result in out-of-sequence log messages.
- Fixed a problem in the Log window whereby highlighted error text (in red) was very difficult to read.
- Fixed a potential hang condition by reorganizing thread locks.
- The Google API was not capable of returning more than 26,000 objects in a “folder” when automatic page fetching was enabled (which is what we do). Thus “folders” would never appear as if they contained more than this many files. If backing up a folder with more than this many files in it, ChronoSync would always copy the files beyond the 26,000 count because it would look like the files did not exist up on Google Cloud, even though they might.
- Fixed a potential crash by ensuring thread safety in string formatting calls.
- Fixed a bug whereby a connection to each target’s file manager was being made when both targets were being monitored to sync-on-mount. This would fail if either target was an Admin Access target.
- Fixed a bug in the synchronizer that was keeping track of hard link references in a non-thread safe manner. This could lead to crashes when running parallel ops.
- Changing target folders and resetting sync history will no longer purge exclusions and forced synchronizations. If the folders where exclusions and forced syncs are defined still exist after the target change, they will be retained.
- Fixed a bug in the MS-DOS filename restriction readiness test that was identifying APFS as MS-DOS.
- Fixed a bug whereby duplicating a rule that appeared below an expanded rule group would raise an exception.
- Fixed a bug whereby invoking the contextual popup on a non-focus rule list and invoking ‘Duplicate’ would not duplicate the desired item.
- Added an exception handler to the rule base.
- Fixed a bug whereby disabling a rule group would result in all contained rules being disabled when the sync task document was saved.
- Fixed a bug whereby changing a target’s connection method would never preserve sync outline customizations (exclusions, forced syncs) even in cases where they could be preserved.
- Fixed a bug whereby the Analyze and Archive panels that was causing Core Animation warnings on the console and possibly the cause of intermittent crashes.
- Added logic that forces all ChronoSync Organizer window resources to load before we try to display it in an attempt to fix the intermittent ’tooltip crash’.
- Fixed a bug whereby scheduler induced sync when a container document window was opened would not set the completion flag when finished. Thus subsequent scheduled syncs would fail as long as the app was running.
- Fixed a problem whereby if a Container sync window were open and displaying the summary sheet from a previous, manually induced synchronization, a scheduled sync for that container would not be possible.
- Fixed a bug whereby the master container progress bar was being initialized on a background thread.
- Fixed a logic flaw whereby the next scheduled synchronization displayed in STM Window and the CS Menu would not always be correct. Another problem was that missed sync calculations would sometimes result in scheduled tasks running erroneously.
- Fixed a bug whereby running a scheduled sync with the corresponding sync task document window open could result in UI modification.
- Fixed a bug whereby changes to some properties of SFTP connection profiles would not get applied to existing documents that used the profile.
- Fixed a bug whereby the animated menubar icon during scheduled syncs would not occur under specific circumstances.
- Added experimental logic so that a ‘hang’ that occurs while collecting entries for a right target File Sharing Connection can actually be broken via an abort by the user.
- Worked around a nuisance bug that was causing console messages to the effect of “__weak variable at...".
- Implemented Readiness Warning to suggest 'Bootable Backup' Operation when the Startup Volume is the chosen target for any other 'Operation'
- Added logic to better preserve the currently selected Target path when changing the 'Connect to:' popup for a Target
- Updated how keychain entries are managed
- Changed the behavior of log mirroring so that if there is a problem opening/creating the mirrored log file, we no longer disable mirroring
- Fixed a bug in the AWS S3 Connection whereby the app could go into an infinite loop and eventually run out of system memory
- Fixed a bug that would trigger a crash if a container or sync document’s Log window were displayed and frontmost, but then the parent sync/container window was closed without bringing it to the front
- Fixed an exception that could be raised when closing a container document window when the window was not frontmost and instead resided behind a different type of window
- Fixed a potential problem displaying the progress window content
- Fixed a potential problem that could occur when displaying the Sync Completion window
- Fixed a problem that could result in a crash when using Admin Access
- Fixed several installer problems with variables and their use which could possibly result in the ChronoSync Scheduler not being relaunched after update
- Fixed an installer problem that was not properly identifying existing login items that could possibly result in the ChronoSync Scheduler not being relaunched after update
- Lengthened certain timeouts associated with local agent connections.
- Fixed a bug whereby the ChronoSync Scheduler would be spammed with quit notices from ChronoSync if the App was quit while a scheduled sync was running and the option was chosen to terminate all syncs.
- Fixed a bug in the ChronoSync Scheduler whereby if it received too many termination notifications in a short period of time, it would cause the scheduler to hang.
- Fixed a bug that could cause a deadlock if a Cloud Service Connection were told to disconnect while it was in the midst of collecting file system attributes.
- Fixed a bug whereby enabling “Resolve Aliases” and encountering a relative symbolic link that referenced a folder outside of the sync tree would not properly follow that link.
- Enhanced cloud sync performance by creating parallel operations to copy and destroy multiple objects.
- Enhanced Analyze Panel responsiveness by avoiding blocking during refresh.
- Improved sync document save performance.
- Improved memory use efficiency.
- Added the extension “sh” as valid script files (for pre- post- and rule- script selection).
- Enhanced container e-mail notifications.
- Added logic to better recognize and mount re-located volumes.
- Added further fall-back logic when setting file and folder attributes in an attempt to better avoid parameter errors.
- Fixed a bug to harden Sync Document loading as protection against encountering corrupted documents.
- Fixed a bug that generated erroneous errors when syncing files containing Resource Forks to Amazon S3 and Google Cloud.
- Tuned memory management options in build settings to reduce memory consumption when syncing to Amazon S3.
- Fixed a bug on the AWS S3 SDK that was causing problems if a bucket name has a period in it.
- Fixed a crash that could occur when sending e-mail notifications via certain SMTP service providers.
- Fixed an exception that could occur when closing Container Sync Documents.
- Fixed a bug that prevented display of Resource Fork information on the Analyze Panel prior to sync.
- Fixed a problem that could result in the Sync Document Log purging logged entries.
- Fixed a potential deadlock that could occur when gathering Volume information.
- Fixed a bug whereby post synchronization tasks would not be performed if pre-synchronization tasks failed.
- Eliminated a potential crash by ensuring we don't access a possibly invalid object.
- Eliminated a memory leak in the push notification delivery procedure.
- Eliminated a memory leak whereby whatever panel was initially displayed when opening a saved sync document would not be released from memory when the sync document was closed.
- Fixed several minor UI issues including misspelling.
- Implemented support for v4 authentication of AWS S3 commands
- Updated the predefined set of AWS S3 endpoints to include all the latest, v4-only regions
- Added the capability to specify a region identifier within the parenthesis to support future regions, or regions associated with S3 compatible services. If this syntax is used, the region identifier must be followed by /v4 or else v2 authentication will be used. An example of such an endpoint specification is: https://an-s3-enpoint-url.com (region-identifier/v4)
- Pre- and Post- sync shell scripts now receive an additional argument, the ‘Run Mode’ of the sync. 0=Standard, 1=Trial Sync and 2=Scheduled Sync
- Updated any 2016 references to 2017
- Added logic to work around a memory leak in a system call on macOS 10.8. This affects uploading data to AWS S3. The solution applies only to macOS 10.8 and can be disabled, if needed
- Added logic to address a problem where, in some instances, the local agent takes upwards of 10 seconds to access the local keychain. Added a retry for up to 30 seconds to account for the slow response
- Fixed a bug in the Sync Document Log and Scheduler Log whereby log entries would appear to be truncated
- Fixed a bug in the Scheduled Items editor whereby editing an item for which its corresponding sync document could not be located would not allow you to save any changes
- Fixed a bug in the ‘Choose Target’ window whereby changing the selected volume in the left table by means of using the arrow keys on the keyboard would not trigger a volume change
- Fixed a display bug in the ‘Choose Target’ window to account for the display of a scroll bar on the volumes list
- Fixed a bug whereby the volumes list in the ‘Choose Target’ window would not scroll if there were more entries than were visible. This only affected macOS 10.8 and 10.9
- Edited the Retina version of the ‘About’ dialog graphic so that it does not include a border frame
- This is a maintenance release that improves upon SFTP connection support
- Version 4.7.2 also includes a handful of user interface enhancements. This update is recommended for all users
- Significantly improved performance when syncing with Google Cloud Connections. Depending upon sync contents, up to a 20% improvement can be realized
- Significantly Improved performance when syncing with Amazon S3 Cloud Connections. Depending upon sync contents, up to a 20% improvement can be realized
- Improved tracking of DMG volume location to better handle mounting and unmounting DMGs as well as the volumes they reside on
- Tweaked bandwidth limit calculations to more accurately match desired limits set in Connection Profiles
- Fixed a bug that could cause a crash anytime after opening a Container Document even if the Container has since long been closed
- Fixed a bug whereby if a DMG on a file server were un-mounted by ChronoSync, the file server would not be un-mountable
- Fixed a bug whereby if targeting a DMG on a file server using “Mounted Volumes (Admin Access)”, the server containing the DMG would not get automatically mounted
- Fixed a problem in Admin Access that could result in a crash under ideal timing circumstances
- Fixed a bug whereby the readiness manager would erroneously state “You cannot perform a bootable backup with the current boot volume as your destination.” when switching between Bootable and Bootable Mirror operations with the same direction
- Fixed a bug in the Log Window whereby if you opened a log for a synchronizer document, then closed it while the sync was running (and generating log entries), then re-opened the Log Window, it would not ‘snap’ to the bottom of the log window
- Fixed a minor problem with Drag & Drop to the Scheduled Documents Manager Window
- Fixed a minor problem in the Registration Window and license key validation
- Fixed a problem whereby customers were being prompted for a Keychain Password
- Fixed a problem in Amazon S3 Cloud Connections whereby it was not properly setting the maximum number of concurrent operations.
- Updated Online Help so terminology is more consistent with terms used in the App