I have continued to research this issue (between local network disruptions). 
While I have done many experiments to try and understand a rare download
failure of a 90mb payload cab file, I have focused on Rob's comment about
Burn's use of http being reliable 'with retries' (in contrast to BITS).  I
originally used the WixBA as a template for creating my mba.  So my
ResolveSource is similar to the WixBA ResolveSource, in regard to the
retries code.

        private void ResolveSource(object sender, ResolveSourceEventArgs e)
        {
            int retries = 0;

            this.downloadRetries.TryGetValue(e.PackageOrContainerId, out
retries);
            this.downloadRetries[e.PackageOrContainerId] = retries + 1;

            e.Result = retries < 3 &&
!String.IsNullOrEmpty(e.DownloadSource) ? Result.Download : Result.Ok;
        }

When I review many logs, both successful and with download failures, I do
not see any evidence that there is any retry.  I added log messages and
observed that when a package has more than one item the first retry
(retries==0) is the msi, the second retry (retires==1) is the next payload,
the third retry is the next payload, and if there are more payloads the
whole install fails.  If any one of these downloads fails, say the msi
download fails while retries==0, then the whole setup fails without any
'retries'.  By changing the above two lines in ResolveSource to use
e.PayloadId, I resolved this latter problem, since when the msi package is
downloaded both e.PackageOrContainerId and e.PayloadId are the same value. 
(I don't know if this would be the case for a container.)

The problem with the 90 mb cab file failing to download happens rarely but I
do not think that issue is addressed by this change.  I did not find a way
to increase the failure rate yet.  When I severely restrict bandwidth in the
virtual switch or memory it seems to be less likely to fail.  I have been
experimenting with adding retry code in CachePackageComplete, which based on
one experiment seems promising.  I also looked at CacheVerifyComplete and
CacheAquireComplete.

Is the use of e.PackageOrContainerId rather than e.PayloadId a bug in WixBA?  
(or maybe something that does not matter as long as WixBA does not have any
packages with more than two payloads.)




--
View this message in context: 
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Addressing-download-failures-in-Burn-driven-MSI-tp7597272p7597443.html
Sent from the wix-users mailing list archive at Nabble.com.

------------------------------------------------------------------------------
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to