No synchronization happening

Hi,
I am currently trying to integrated Ensembles into an existing Mac app with Core Data. I am using the master branch of this repository and have successfully set up the project.
I have set up Ensembles according to the readme file and used the Sync Manager of the sample app as a template for my implementation. My cloud file system is iCloud. I have used iCloud before with the app and am sure that the iCloud Container is correctly set up and accessible by the app.
I can see in the log files, when verbose logs enabled, that something is happening:
[CDEICloudFileSystem repairEnsembleDirectory:completion:] line 176: Checking if repairs are needed in iCloud Drive
[CDECloudManager retrieveRegistrationInfoForStoreWithIdentifier:completion:] line 724: Retrieving registration info
[CDECloudManager retrieveRegistrationInfoForStoreWithIdentifier:completion:]_block_invoke_2 line 743: Downloading file at remote path: /Dropshare5UploadHistoryNew/stores/6646DC14-1F3B-48AE-9FFA-4F4D67B73552-28056-0000076DA851AE2F
[CDECloudManager createRemoteDirectories:withCompletion:] line 688: Creating remote directories
[CDECloudManager importNewDataFilesWithCompletion:] line 159: Transferring new data files from cloud to event store
[CDECloudManager importNewBaselineEventsWithCompletion:] line 143: Transferring new baselines from cloud to event store
[CDEBaselineConsolidator consolidateBaselineWithCompletion:] line 65: Consolidating baselines
[CDEBaselineConsolidator consolidateBaselineWithCompletion:]_block_invoke line 76: Found baselines with unique ids: (
    "FC6EA060-EEE1-4006-A065-5DA9628D524B-28056-0000076DA87A8962"
)
[CDEBaselineConsolidator consolidateBaselineWithCompletion:]_block_invoke line 108: Baselines remaining that need merging: (
    "FC6EA060-EEE1-4006-A065-5DA9628D524B-28056-0000076DA87A8962"
)
[CDEBaselineConsolidator consolidateBaselineWithCompletion:]_block_invoke_2 line 131: Finishing baseline consolidation
[CDECloudManager importNewRemoteNonBaselineEventsWithCompletion:] line 127: Transferring new events from cloud to event store
[CDEEventIntegrator integrate:] line 313: Integrating new events into main context
[CDEEventIntegrator integrate:]_block_invoke line 333: Baseline has changed. Will carry out full integration of the persistent store.
[CDECloudManager exportDataFilesWithCompletion:] line 344: Transferring data files from event store to cloud
[CDECloudManager exportNewLocalBaselineWithCompletion:] line 332: Transferring baseline from event store to cloud
[CDEEventMigrator migrateStoreModificationEvents:toFile:completion:] line 100: Migrating event store events to file
[CDECloudManager transferFilesInTransitCacheToRemoteDirectory:completion:]_block_invoke_2 line 446: Uploading file to remote path: /Dropshare5UploadHistoryNew/baselines/0_FC6EA060-EEE1-4006-A065-5DA9628D524B-28056-0000076DA87A8962_6646DC14.cdeevent
[CDECloudManager exportNewLocalNonBaselineEventsWithCompletion:] line 320: Transferring events from event store to cloud
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 584: Removing outdated files
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 603: Baseline files in cloud: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 604: Aliases for baseline files in store: {(
    "0_FC6EA060-EEE1-4006-A065-5DA9628D524B-28056-0000076DA87A8962_6646DC14.cdeevent",
    "0_FC6EA060-EEE1-4006-A065-5DA9628D524B-28056-0000076DA87A8962.cdeevent"
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 605: Baseline files to remove: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 612: Event files in cloud: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 613: Aliases for event files in store: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 614: Event files to remove: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 620: Data files in cloud: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 621: Data files in store: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 622: Data files to remove: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 635: Removing cloud files:

So, it looks like something is successfully happening at the first glance. However, the data does not seem to be synchronized. When I open the app on another Mac signed in with the same Apple ID to iCloud, I can see the very same log output (same "basefile" names as well), but the data apparently uploaded from the first Mac is not downloaded and added to the Core Data database on the second Mac.
My understanding is that with Ensembles set up like in the demo application, it should automatically add the data to the Core Data database without me interfering. Is that right? Can you give me an indication of where to look for the error?
All help appreciated. Thanks!

Hi Timo,
The logs look fine, indeed.
Some things to check:

Are you calling merge? There is no automatic sync. A merge of the cloud data only happens if the merge func gets called.
Have you implemented the delete method for did-save-merged-changes? Those have to be merged into all of your contexts, otherwise you will not see the changes arrive.

There can also be a delay with iCloud Drive, where the data takes a little while to come over.
If you still can’t get it working, send me the logs of a merge for each device.
Drew

On 23 Aug 2018, at 22:36, Timo Josten<EMAIL_ADDRESS>wrote:
Hi,
I am currently trying to integrated Ensembles into an existing Mac app with Core Data. I am using the master branch of this repository and have successfully set up the project.
I have set up Ensembles according to the readme file and used the Sync Manager of the sample app as a template for my implementation. My cloud file system is iCloud. I have used iCloud before with the app and am sure that the iCloud Container is correctly set up and accessible by the app.
I can see in the log files, when verbose logs enabled, that something is happening:
[CDEICloudFileSystem repairEnsembleDirectory:completion:] line 176: Checking if repairs are needed in iCloud Drive
[CDECloudManager retrieveRegistrationInfoForStoreWithIdentifier:completion:] line 724: Retrieving registration info
[CDECloudManager retrieveRegistrationInfoForStoreWithIdentifier:completion:]_block_invoke_2 line 743: Downloading file at remote path: /Dropshare5UploadHistoryNew/stores/6646DC14-1F3B-48AE-9FFA-4F4D67B73552-28056-0000076DA851AE2F
[CDECloudManager createRemoteDirectories:withCompletion:] line 688: Creating remote directories
[CDECloudManager importNewDataFilesWithCompletion:] line 159: Transferring new data files from cloud to event store
[CDECloudManager importNewBaselineEventsWithCompletion:] line 143: Transferring new baselines from cloud to event store
[CDEBaselineConsolidator consolidateBaselineWithCompletion:] line 65: Consolidating baselines
[CDEBaselineConsolidator consolidateBaselineWithCompletion:]_block_invoke line 76: Found baselines with unique ids: (
"FC6EA060-EEE1-4006-A065-5DA9628D524B-28056-0000076DA87A8962"
)
[CDEBaselineConsolidator consolidateBaselineWithCompletion:]_block_invoke line 108: Baselines remaining that need merging: (
"FC6EA060-EEE1-4006-A065-5DA9628D524B-28056-0000076DA87A8962"
)
[CDEBaselineConsolidator consolidateBaselineWithCompletion:]_block_invoke_2 line 131: Finishing baseline consolidation
[CDECloudManager importNewRemoteNonBaselineEventsWithCompletion:] line 127: Transferring new events from cloud to event store
[CDEEventIntegrator integrate:] line 313: Integrating new events into main context
[CDEEventIntegrator integrate:]_block_invoke line 333: Baseline has changed. Will carry out full integration of the persistent store.
[CDECloudManager exportDataFilesWithCompletion:] line 344: Transferring data files from event store to cloud
[CDECloudManager exportNewLocalBaselineWithCompletion:] line 332: Transferring baseline from event store to cloud
[CDEEventMigrator migrateStoreModificationEvents:toFile:completion:] line 100: Migrating event store events to file
[CDECloudManager transferFilesInTransitCacheToRemoteDirectory:completion:]_block_invoke_2 line 446: Uploading file to remote path: /Dropshare5UploadHistoryNew/baselines/0_FC6EA060-EEE1-4006-A065-5DA9628D524B-28056-0000076DA87A8962_6646DC14.cdeevent
[CDECloudManager exportNewLocalNonBaselineEventsWithCompletion:] line 320: Transferring events from event store to cloud
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 584: Removing outdated files
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 603: Baseline files in cloud: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 604: Aliases for baseline files in store: {(
"0_FC6EA060-EEE1-4006-A065-5DA9628D524B-28056-0000076DA87A8962_6646DC14.cdeevent",
"0_FC6EA060-EEE1-4006-A065-5DA9628D524B-28056-0000076DA87A8962.cdeevent"
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 605: Baseline files to remove: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 612: Event files in cloud: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 613: Aliases for event files in store: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 614: Event files to remove: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 620: Data files in cloud: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 621: Data files in store: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 622: Data files to remove: {(
)}
[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 635: Removing cloud files:
So, it looks like something is successfully happening at the first glance. However, the data does not seem to be synchronized. When I open the app on another Mac signed in with the same Apple ID to iCloud, I can see the very same log output (same "basefile" names as well), but the data apparently uploaded from the first Mac is not downloaded and added to the Core Data database on the second Mac.
My understanding is that with Ensembles set up like in the demo application, it should automatically add the data to the Core Data database without me interfering. Is that right? Can you give me an indication of where to look for the error?
All help appreciated. Thanks!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/drewmccormack/ensembles/issues/277, or mute the thread https://github.com/notifications/unsubscribe-auth/AAEuAPhodZ7vgH32g6swmr0-JhqwpF52ks5uTxI1gaJpZM4WKToQ.

Hi Drew,
thanks for responding so quickly!
I do indeed call the merge, equally to how it happens in the sample app. I will check back for the did-save-merged-changes and respond later today.
Thanks so far,
Timo

Some more information which might help:
I just checked on a separate Mac which has not installed the app in question, and the data seems to have been added successfully to iCloud:
baselines:
total 24
drwxr-xr-x  5 tj  staff   160B Aug 24 09:12 .
drwxr-xr-x  6 tj  staff   192B Aug 24 08:20 ..
-rw-r--r--@ 1 tj  staff   229B Aug 24 09:08 .0_297B6C72-3521-40A5-98DA-288FB42C069C-49411-00000E551C322F25_99D11266.cdeevent.icloud
-rw-r--r--@ 1 tj  staff   229B Aug 24 00:07 .0_5219CAEC-E5A5-4897-A40B-8AE3F921C953-47487-00000E2862813FFD_5A7CC120.cdeevent.icloud
-rw-r--r--@ 1 tj  staff   229B Aug 24 00:12 .0_9B9EC2F5-721E-4CF0-95B2-1C896FA7E904-50878-00000E805C45382A_83E669A0.cdeevent.icloud

data:
total 0
drwxr-xr-x  2 tj  staff    64B Aug 24 08:20 .
drwxr-xr-x  6 tj  staff   192B Aug 24 08:20 ..

events:
total 16
drwxr-xr-x  4 tj  staff   128B Aug 24 09:12 .
drwxr-xr-x  6 tj  staff   192B Aug 24 08:20 ..
-rw-r--r--@ 1 tj  staff   222B Aug 24 09:08 .1_99D11266-43D6-4FC0-8C53-5C76364060CC-49411-00000E551C074D9B_1.cdeevent.icloud
-rw-r--r--@ 1 tj  staff   222B Aug 24 09:08 .2_99D11266-43D6-4FC0-8C53-5C76364060CC-49411-00000E551C074D9B_2.cdeevent.icloud

stores:
total 16
drwxr-xr-x  4 tj  staff   128B Aug 24 08:20 .
drwxr-xr-x  6 tj  staff   192B Aug 24 08:20 ..
-rw-r--r--  1 tj  staff   351B Aug 24 00:10 83E669A0-BABB-40EC-A781-F3EF629F7C91-50878-00000E805ACFC788
-rw-r--r--  1 tj  staff   351B Aug 24 00:07 99D11266-43D6-4FC0-8C53-5C76364060CC-49411-00000E551C074D9B

So there does not seem to be a problem with actually synchronizing the data, which is good I guess.

Those filenames look odd though. Ie beginning with a . and ending in icloud. I wonder if that is how the system is keeping track of metadata for files it actually hasn’t downloaded yet.
Drew

On 24 Aug 2018, at 11:14, Timo Josten<EMAIL_ADDRESS>wrote:
Some more information which might help:
I just checked on a separate Mac which has not installed the app in question, and the data seems to have been added successfully to iCloud:
baselines:
total 24
drwxr-xr-x  5 tj  staff   160B Aug 24 09:12 .
drwxr-xr-x  6 tj  staff   192B Aug 24 08:20 ..
-rw-r--r--@ 1 tj  staff   229B Aug 24 09:08 .0_297B6C72-3521-40A5-98DA-288FB42C069C-49411-00000E551C322F25_99D11266.cdeevent.icloud
-rw-r--r--@ 1 tj  staff   229B Aug 24 00:07 .0_5219CAEC-E5A5-4897-A40B-8AE3F921C953-47487-00000E2862813FFD_5A7CC120.cdeevent.icloud
-rw-r--r--@ 1 tj  staff   229B Aug 24 00:12 .0_9B9EC2F5-721E-4CF0-95B2-1C896FA7E904-50878-00000E805C45382A_83E669A0.cdeevent.icloud
data:
total 0
drwxr-xr-x  2 tj  staff    64B Aug 24 08:20 .
drwxr-xr-x  6 tj  staff   192B Aug 24 08:20 ..
events:
total 16
drwxr-xr-x  4 tj  staff   128B Aug 24 09:12 .
drwxr-xr-x  6 tj  staff   192B Aug 24 08:20 ..
-rw-r--r--@ 1 tj  staff   222B Aug 24 09:08 .1_99D11266-43D6-4FC0-8C53-5C76364060CC-49411-00000E551C074D9B_1.cdeevent.icloud
-rw-r--r--@ 1 tj  staff   222B Aug 24 09:08 .2_99D11266-43D6-4FC0-8C53-5C76364060CC-49411-00000E551C074D9B_2.cdeevent.icloud
stores:
total 16
drwxr-xr-x  4 tj  staff   128B Aug 24 08:20 .
drwxr-xr-x  6 tj  staff   192B Aug 24 08:20 ..
-rw-r--r--  1 tj  staff   351B Aug 24 00:10 83E669A0-BABB-40EC-A781-F3EF629F7C91-50878-00000E805ACFC788
-rw-r--r--  1 tj  staff   351B Aug 24 00:07 99D11266-43D6-4FC0-8C53-5C76364060CC-49411-00000E551C074D9B
So there does not seem to be a problem with actually synchronizing the data, which is good I guess.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/drewmccormack/ensembles/issues/277#issuecomment-415702242, or mute the thread https://github.com/notifications/unsubscribe-auth/AAEuALrrbwJ-xcIARm477cgkD7HWef6Gks5uT8P5gaJpZM4WKToQ.

I have digged a little into the Ensemble implementation, and have found that the delegation method from your previous comment is never called.
In CDEEventIntegrator.m, in line 167 where it checks for changes, hasChanges is always false so it never gets to actually merge anything.
Logs from Mac 1:
2018-08-24 18:31:26.964550+0200 [61108:1865423] -[CDEICloudFileSystem repairEnsembleDirectory:completion:] line 176: Checking if repairs are needed in iCloud Drive
2018-08-24 18:31:26.967221+0200 [61108:1865423] -[CDECloudManager retrieveRegistrationInfoForStoreWithIdentifier:completion:] line 724: Retrieving registration info
2018-08-24 18:31:26.982400+0200 [61108:1865423] -[CDECloudManager retrieveRegistrationInfoForStoreWithIdentifier:completion:]_block_invoke_2 line 743: Downloading file at remote path: /Dropshare5UploadHist/stores/83E669A0-BABB-40EC-A781-F3EF629F7C91-50878-00000E805ACFC788
2018-08-24 18:31:26.992804+0200 [61108:1865423] -[CDECloudManager createRemoteDirectories:withCompletion:] line 688: Creating remote directories
2018-08-24 18:31:27.014798+0200 [61108:1865423] -[CDECloudManager importNewDataFilesWithCompletion:] line 159: Transferring new data files from cloud to event store
2018-08-24 18:31:27.015349+0200 [61108:1865423] -[CDECloudManager importNewBaselineEventsWithCompletion:] line 143: Transferring new baselines from cloud to event store
2018-08-24 18:31:27.016602+0200 [61108:1865423] -[CDEBaselineConsolidator consolidateBaselineWithCompletion:] line 65: Consolidating baselines
2018-08-24 18:31:27.016945+0200 [61108:1903104] -[CDEBaselineConsolidator consolidateBaselineWithCompletion:]_block_invoke line 76: Found baselines with unique ids: (
    "9B9EC2F5-721E-4CF0-95B2-1C896FA7E904-50878-00000E805C45382A"
)
2018-08-24 18:31:27.018075+0200 [61108:1903104] -[CDEBaselineConsolidator consolidateBaselineWithCompletion:]_block_invoke line 108: Baselines remaining that need merging: (
    "9B9EC2F5-721E-4CF0-95B2-1C896FA7E904-50878-00000E805C45382A"
)
2018-08-24 18:31:27.018180+0200 [61108:1865423] -[CDEBaselineConsolidator consolidateBaselineWithCompletion:]_block_invoke_2 line 131: Finishing baseline consolidation
2018-08-24 18:31:27.018264+0200 [61108:1865423] -[CDECloudManager importNewRemoteNonBaselineEventsWithCompletion:] line 127: Transferring new events from cloud to event store
2018-08-24 18:31:27.022295+0200 [61108:1903104] -[CDEEventIntegrator integrate:] line 313: Integrating new events into main context
2018-08-24 18:31:27.023388+0200 [61108:1903104] -[CDEEventIntegrator integrate:]_block_invoke line 333: Baseline has changed. Will carry out full integration of the persistent store.
2018-08-24 18:31:27.027697+0200 [61108:1865423] -[CDECloudManager exportDataFilesWithCompletion:] line 344: Transferring data files from event store to cloud
2018-08-24 18:31:27.028315+0200 [61108:1865423] -[CDECloudManager exportNewLocalBaselineWithCompletion:] line 332: Transferring baseline from event store to cloud
2018-08-24 18:31:27.029644+0200 [61108:1903102] -[CDEEventMigrator migrateStoreModificationEvents:toFile:completion:] line 100: Migrating event store events to file
2018-08-24 18:31:27.033065+0200 [61108:1865423] -[CDECloudManager transferFilesInTransitCacheToRemoteDirectory:completion:]_block_invoke_2 line 446: Uploading file to remote path: /Dropshare5UploadHist/baselines/0_9B9EC2F5-721E-4CF0-95B2-1C896FA7E904-50878-00000E805C45382A_83E669A0.cdeevent
2018-08-24 18:31:27.085152+0200 [61108:1865423] -[CDECloudManager exportNewLocalNonBaselineEventsWithCompletion:] line 320: Transferring events from event store to cloud
2018-08-24 18:31:27.087219+0200 [61108:1865423] -[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 584: Removing outdated files
2018-08-24 18:31:27.087795+0200 [61108:1865423] -[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 603: Baseline files in cloud: {(
)}
2018-08-24 18:31:27.087876+0200 [61108:1865423] -[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 604: Aliases for baseline files in store: {(
    "0_9B9EC2F5-721E-4CF0-95B2-1C896FA7E904-50878-00000E805C45382A.cdeevent",
    "0_9B9EC2F5-721E-4CF0-95B2-1C896FA7E904-50878-00000E805C45382A_83E669A0.cdeevent"
)}
2018-08-24 18:31:27.087907+0200 [61108:1865423] -[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 605: Baseline files to remove: {(
)}
2018-08-24 18:31:27.088098+0200 [61108:1865423] -[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 612: Event files in cloud: {(
)}
2018-08-24 18:31:27.088136+0200 [61108:1865423] -[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 613: Aliases for event files in store: {(
)}
2018-08-24 18:31:27.090815+0200 [61108:1865423] -[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 614: Event files to remove: {(
)}
2018-08-24 18:31:27.091069+0200 [61108:1865423] -[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 620: Data files in cloud: {(
)}
2018-08-24 18:31:27.091107+0200 [61108:1865423] -[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 621: Data files in store: {(
)}
2018-08-24 18:31:27.091135+0200 [61108:1865423] -[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 622: Data files to remove: {(
)}
2018-08-24 18:31:27.091162+0200 [61108:1865423] -[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 635: Removing cloud files:
2018-08-24 18:31:27:091 [61108:1865423] Merging with completion

Logs from Mac 2:
	18:30:36.361874 +0200		-[CDEICloudFileSystem repairEnsembleDirectory:completion:] line 176: Checking if repairs are needed in iCloud Drive
	18:30:36.362999 +0200		-[CDECloudManager retrieveRegistrationInfoForStoreWithIdentifier:completion:] line 724: Retrieving registration info
	18:30:36.398950 +0200		-[CDECloudManager retrieveRegistrationInfoForStoreWithIdentifier:completion:]_block_invoke_2 line 743: Downloading file at remote path: /Dropshare5UploadHist/stores/1B498FBF-B3D3-419A-BFCD-F6A44B800EA2-55410-0000921F0121F719
	18:30:36.405677 +0200		-[CDECloudManager createRemoteDirectories:withCompletion:] line 688: Creating remote directories
	18:30:36.426708 +0200		-[CDECloudManager importNewDataFilesWithCompletion:] line 159: Transferring new data files from cloud to event store
	18:30:36.427307 +0200		-[CDECloudManager importNewBaselineEventsWithCompletion:] line 143: Transferring new baselines from cloud to event store
	18:30:36.428218 +0200		-[CDEBaselineConsolidator consolidateBaselineWithCompletion:] line 65: Consolidating baselines
	18:30:36.428675 +0200		-[CDEBaselineConsolidator consolidateBaselineWithCompletion:]_block_invoke line 76: Found baselines with unique ids: (
    "585888B6-00C0-4E3E-A54F-110EFA5F1015-55410-0000921F015FF1A6"
)
	18:30:36.429938 +0200		-[CDEBaselineConsolidator consolidateBaselineWithCompletion:]_block_invoke line 108: Baselines remaining that need merging: (
    "585888B6-00C0-4E3E-A54F-110EFA5F1015-55410-0000921F015FF1A6"
)
	18:30:36.430033 +0200		-[CDEBaselineConsolidator consolidateBaselineWithCompletion:]_block_invoke_2 line 131: Finishing baseline consolidation
	18:30:36.430117 +0200		-[CDECloudManager importNewRemoteNonBaselineEventsWithCompletion:] line 127: Transferring new events from cloud to event store
	18:30:36.467005 +0200		-[CDEEventIntegrator integrate:] line 313: Integrating new events into main context
	18:30:36.472713 +0200		-[CDECloudManager exportDataFilesWithCompletion:] line 344: Transferring data files from event store to cloud
	18:30:36.473114 +0200		-[CDECloudManager exportNewLocalBaselineWithCompletion:] line 332: Transferring baseline from event store to cloud
	18:30:36.474193 +0200		-[CDEEventMigrator migrateStoreModificationEvents:toFile:completion:] line 100: Migrating event store events to file
	18:30:37.994914 +0200		-[CDECloudManager transferFilesInTransitCacheToRemoteDirectory:completion:]_block_invoke_2 line 446: Uploading file to remote path: /Dropshare5UploadHist/baselines/0_585888B6-00C0-4E3E-A54F-110EFA5F1015-55410-0000921F015FF1A6_1B498FBF.cdeevent
	18:30:38.043172 +0200		-[CDECloudManager exportNewLocalNonBaselineEventsWithCompletion:] line 320: Transferring events from event store to cloud
	18:30:38.046011 +0200		-[CDEEventMigrator migrateStoreModificationEvents:toFile:completion:] line 100: Migrating event store events to file
	18:30:38.053162 +0200		-[CDEEventMigrator migrateStoreModificationEvents:toFile:completion:] line 100: Migrating event store events to file
	18:30:38.058003 +0200		-[CDEEventMigrator migrateStoreModificationEvents:toFile:completion:] line 100: Migrating event store events to file
	18:30:38.064588 +0200		-[CDEEventMigrator migrateStoreModificationEvents:toFile:completion:] line 100: Migrating event store events to file
	18:30:38.069950 +0200		-[CDECloudManager transferFilesInTransitCacheToRemoteDirectory:completion:]_block_invoke_2 line 446: Uploading file to remote path: /Dropshare5UploadHist/events/1_1B498FBF-B3D3-419A-BFCD-F6A44B800EA2-55410-0000921F0121F719_1.cdeevent
	18:30:38.121865 +0200		-[CDECloudManager transferFilesInTransitCacheToRemoteDirectory:completion:]_block_invoke_2 line 446: Uploading file to remote path: /Dropshare5UploadHist/events/2_1B498FBF-B3D3-419A-BFCD-F6A44B800EA2-55410-0000921F0121F719_2.cdeevent
	18:30:38.173366 +0200		-[CDECloudManager transferFilesInTransitCacheToRemoteDirectory:completion:]_block_invoke_2 line 446: Uploading file to remote path: /Dropshare5UploadHist/events/3_1B498FBF-B3D3-419A-BFCD-F6A44B800EA2-55410-0000921F0121F719_3.cdeevent
	18:30:38.239890 +0200		-[CDECloudManager transferFilesInTransitCacheToRemoteDirectory:completion:]_block_invoke_2 line 446: Uploading file to remote path: /Dropshare5UploadHist/events/4_1B498FBF-B3D3-419A-BFCD-F6A44B800EA2-55410-0000921F0121F719_4.cdeevent
	18:30:38.302111 +0200		-[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 584: Removing outdated files
	18:30:38.303398 +0200		-[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 603: Baseline files in cloud: {(
)}
	18:30:38.303516 +0200		-[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 604: Aliases for baseline files in store: {(
    "0_585888B6-00C0-4E3E-A54F-110EFA5F1015-55410-0000921F015FF1A6_1B498FBF.cdeevent",
    "0_585888B6-00C0-4E3E-A54F-110EFA5F1015-55410-0000921F015FF1A6.cdeevent"
)}
	18:30:38.303586 +0200		-[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 605: Baseline files to remove: {(
)}
	18:30:38.304543 +0200		-[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 612: Event files in cloud: {(
)}
	18:30:38.304660 +0200		-[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 613: Aliases for event files in store: {(
    "1_1B498FBF-B3D3-419A-BFCD-F6A44B800EA2-55410-0000921F0121F719_1.cdeevent",
    "3_1B498FBF-B3D3-419A-BFCD-F6A44B800EA2-55410-0000921F0121F719_3.cdeevent",
    "4_1B498FBF-B3D3-419A-BFCD-F6A44B800EA2-55410-0000921F0121F719_4.cdeevent",
    "2_1B498FBF-B3D3-419A-BFCD-F6A44B800EA2-55410-0000921F0121F719_2.cdeevent"
)}
	18:30:38.304732 +0200		-[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 614: Event files to remove: {(
)}
	18:30:38.305161 +0200		-[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 620: Data files in cloud: {(
)}
	18:30:38.305240 +0200		-[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 621: Data files in store: {(
)}
	18:30:38.305316 +0200		-[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 622: Data files to remove: {(
)}
	18:30:38.305380 +0200		-[CDECloudManager removeOutdatedRemoteFilesWithCompletion:] line 635: Removing cloud files:

For what it's worth, I just tested with the Idiomatic Mac (untouched from this repository) app and also there data does not sync between the two macs.

Alright. I don't know how I did it, but now it works for both Idiomatic as well as my existing Mac App. :) I'll continue development and monitor how well it works. Thanks very much until here!


There is no example for Stochastic Gradient Descent in Chapter 8

There is no example for Stochastic Gradient Descent in Chapter 8. I have tried to write one.
print("using minimize_stochastic_batch")

x = list(range(101))
y = [3*x_i + random.randint(-10, 20) for x_i in x]
theta_0 = random.randint(-10,10)
v = minimize_stochastic(sum_of_squares, sum_of_squares_gradient, x, y, theta_0)

print("minimum v", v)
print("minimum value", sum_of_squares(v))

However, I would run into a problem of TypeError: sum_of_squares() takes 1 positional argument but 3 were given

I'm not quite sure if the solution of the problem is still actual, but I hope this will help someone.
1. First of all, in the second edition of the book the stochastic gradient descent function was rewritten and the working example was added.
2. Regarding your example, the main problem is that you call the target function (sum_of_squares) in minimize_stochastic, giving it 3 arguments (x_i, y_i, theta), but sum_of_squares requires just one - the list of elements.
minimize_stochastic:
...
value = sum( target_fn(x_i, y_i, theta) for x_i, y_i in data )
...

sum_of_squares:
def dot(v, w):
    """v_1 * w_1 + ... + v_n * w_n"""
    return sum(v_i * w_i
               for v_i, w_i
               in zip(v, w))

def sum_of_squares(v):
    """v_1 * v_1 + ... + v_n * v_n"""
    return dot(v, v)


Setup: Console warning for deprecated color-adjust

Color adjust seems to be deprecated. Locate the property and rename to print-color-adjust.

./src/styles.scss.webpack[javascript/auto]!=!./node_modules/css-loader/dist/cjs.js??
ruleSet[1].rules[6].rules[0].oneOf[0].use[1]!./node_modules/postcss-loader/dist/cjs.js??
ruleSet[1].rules[6].rules[0].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js??
ruleSet[1].rules[6].rules[1].use[0]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[6].rules[1].use[1]!./src/styles.scss - Warning:
Module Warning (from ./node_modules/postcss-loader/dist/cjs.js):
Warning

(2699:3) autoprefixer: Replace color-adjust to print-color-adjust. The color-adjust shorthand is currently deprecated.

Might be fixed with #860

I will close this issue, because there is no such warning anymore and I could not found any color-adjust statement in our code.


npm WARN deprecated<EMAIL_ADDRESS>

After installing I get

npm WARN deprecated<EMAIL_ADDRESS>CoffeeScript on NPM has moved to "coffeescript" (no hyphen)

because the gray-matter dependency is still on 2.x (even though it was upgraded in 797e820fc24e08085e1e71646110b8c92cc56c18).
Can you please tag a new release for NPM?

thanks for the reminder. There are a couple of other things to do then I'll publish this.

did you ever publish a release with the update gray-matter dependency?


build(deps): update extract-text-webpack-plugin

The current configuration only works on rc.3 and up.
Using it with rc.2 will result in schema errors

Could you update the yarn.lock file too?

Updated the yarn file myself. LGTM

Closed in<PHONE_NUMBER>01eeafae2e753edb69439480514f5e.


add method to persist tag files to deposit record in redis

We added a new method that allows us to keep a bag's tag files in the deposit record.

For this to function i believe you will need to change the MakeFOXML side of things as well, and also change the METS normalization job so everything works the same way


Waypoint is triggered infinitely inside a slide component

I'm using a waypoint library(https://github.com/civiccc/react-waypoint) in one of my slide components. It has an infinite scroll in both directions(it has overflow). When it mounts, then the waypoint upwards is triggered infinitely which causes fetching data forever even when I haven't scrolled upwards to fetch more data. This is happening ever since I'm using this library.
Im not able to find the cause or reason for this. Anyone?

The interaction is with another library and you haven't posted any code so it's hard to say what's going on. If you're still having the issue you could put together a codesandbox example demonstrating the problem.

FYI in case anyone runs into this problem, you need to set the scrollableAncestor prop of the rendered react-waypoint component to a DOM element outside of the swipeable-views container.  I set it to window, but this may not work for every use-case.


Improved address handling

Over the time it became clear that HumanAddr and CanonicalAddr are not equally important for contract developers. The developer friendlyness and JSON friendlyness made HumanAddr the primary choice for messages and APIs (such as ContractInfo::address from Env).
The goal number 1 here is to reflect that by having a primary Addr type that is more or less HumanAddr and keep CanonicalAddr for use cases where it is desired to use a compact fixed length address representation, such as the embedded addresses in the keys of the balances/allowances in erc20.
There is also a desire to store such human readable addresses in the contract's state directly, which for JSON encoded state is similarly efficient as canonicalizing and base64 encoding the address. It has been concluded that the change of address prefixes during a chain upgrade is unlikely. So goal number 2 is to make this possible. The main problem here is the validation of an address before it is written to state permanently. In #802 and address validation API is added, but nothing prevents the contract developer from forgetting it.
In order to make it very hard to forget address validation, it would be good if Addr was immutable and could only be created via Addr::unchecked(input) or let checked: Addr = deps.api.addr_validate(input)?. This also means messages sent to the contract would use String instead of Addr and Addr does not implement Deserialize because this would implicitly create unchecked addresses. This leads to the problem: how to differentiate between untrusted JSON deserialization in messages from users and trusted JSON deserialization from state? Right now this works because state and messages use different types and nobody uses CanonicalAddr for messages to the contract.
Here is a rough roadmap

[ ] Provide new address validation API (#802)
[ ] Find a safe way to ensure contract developers do not forget address validation
[ ] Create new immutable, safe Addr type
[ ] Deprecate HumanAddr, which is more or less a String alias
[ ] Encourage the use of Addr after validating String inputs in state

In order to make it very hard to forget address validation, it would be good if Addr was immutable and could only be created via Addr::unchecked(input) or let checked: Addr = deps.api.addr_validate(input)?. This also means messages sent to the contract would use String instead of Addr and Addr does not implement Deserialize because this would implicitly create unchecked addresses. This leads to the problem: how to differentiate between untrusted JSON deserialization in messages from users and trusted JSON deserialization from state? Right now this works because state and messages use different types and nobody uses CanonicalAddr for messages to the contract.

I like the idea of two ways of creating address: Addr::unchecked<T: Into<String>>(input: T) mainly designed for test code. And let checked: Addr = deps.api.addr_validate(input)? to parse and validate user input.
I think the Serialization/Deserialization issue is overkill, we want to serialize/deserialize it in state. The migration guide should say more or less "change HumanAddr -> String, change CannonicalAddr -> Addr, and then update the conversion function to be a validate function".
We cannot prevent devs from making mistakes. Maybe a simple script to check for Addr in msgs.rs file and flag those and recommend that in people's CI scripts? But I am against making nearly unusable types in the name of developer safety. If they don't follow API guidelines, there are 100s of other mistakes they can make in their code.

One way to provide warnings to user is to not implement JsonSchema for Addr. Since the standard practice is to output all user-visible messages, decorating with JsonSchema, while not providing that for the internal state.rs types, having Addr not derive JsonSchema will produce compile errors for people that follow general patterns and accidentally leave it in msgs.rs. This is probably a better check than the script I described above.

Good, thank you. Both are good ways to mitigate the problem.


URGENT! Non-logged in user can copy note

When a non-logged in user copies a note, it creates a new note with no user_id it still saves to the DB. Causes error in /notes/index route.

Resolved w/ conditional check for logged_in? in notes/copy/:id route


Spread with in constructors bombs.

let date = new Date(...[2015, 1, 1]);

Throws an Error:
TypeError: this is not a Date object.
    at Date.valueOf (native)
    at Date.toJSON (native)
    at Object.stringify (native)
    at Console.console.log (https://6to5.org/repl.html:193:27)
    at eval (eval at <anonymous> (https://6to5.org/repl.html:199:33), <anonymous>:13:9)
    at compile (https://6to5.org/repl.html:199:39)

I have enabled the experimental flag.

https://github.com/6to5/6to5/pull/203

Weird, I wonder if it's because it's a native type.

Did this go in?

@hemanth Sure did. I'll investigate shortly, it's likely due to it being a native type.

@sebmck Yes, I wrote about it. Native constructors create object from prototype and set hidden properties. Object.create can't set them. The current implementation correctly works with native constructors only if those constructor works with new as without (for example, Array). Be better add it to caveats.

Probably just going to turn:
new Date(...[2015, 1, 1]);

into
var _bind = Function.prototype.bind;
new (_bind.apply(Date, [null, 2011, 4, 3]))();

I'll take this.

@thejameskyle Already fixed. My suggestion is done only on native types for performance etc.

Damn it, I was so close to the same thing. You have a commit?

:+1:

Thanks! Fixed as of 2.6.0


Capture wrong link

Checklist

[x] I'm reporting a broken site support issue
[x] I've verified that I'm running youtube-dl version 2<IP_ADDRESS>
[x] I've checked that all provided URLs are alive and playable in a browser
[x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[x] I've searched the bugtracker for similar bug reports including closed ones
[x] I've read bugs section in FAQ

Verbose log

/root ~]# youtube-dl -s -g -f 137 https://www.youtube.com/watch?v=9lrW1bN9gHE -v
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-s', u'-g', u'-f', u'137', u'https://www.youtube.com/watch?v=9lrW1bN9gHE', u'-v']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2<IP_ADDRESS>
[debug] Python version 2.7.5 (CPython) - Linux-3.10.0-957.12.1.el7.x86_64-x86_64-with-centos-7.6.1810-Core
[debug] exe versions: ffmpeg N-49042-gcaabe1b495-static, ffprobe N-49042-gcaabe1b495-static, phantomjs 2.1.1
[debug] Proxy map: {}
https://manifest.googlevideo.com/api/manifest/dash/expire/1568270901/ei/1ZV5XZiuAtXqhAfrlreIBw/ip/MYSERVERIPHIDED/id/f65ad6d5b37d8071/source/youtube/requiressl/yes/playback_host/r2---sn-25glenez.googlevideo.com/mm/31%2C29/mn/sn-25glenez%2Csn-25ge7nsd/ms/au%2Crdu/mv/u/mvi/1/pl/24/tx/23722139/txs/23722138%2C23722139/hfr/all/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/mt/1568249048/fvip/2/itag/0/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Ctx%2Ctxs%2Chfr%2Cas%2Citag/sig/ALgxI2wwRgIhAPeEcPVmqoEr_TdpSweMxD0x_YuOHfyD6weUHRK1keQ7AiEA59BYL_7WyHKRjN_IBXf-U9UodKq3xlXttWA4Y7sDEMQ%3D/lsparams/playback_host%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl/lsig/AHylml4wRAIgKRWmcmNadX_nxsS2rPveUmc53uj7rYSV6BqrfUCRfaECIBGuW9XR_zSjfBiG2XhF8QRhjzMfALCje1sZQEW0xhbN

Description

Youtube-dl capture main dash manifest url not video url.

youtube-dl mostly mimics how browsers download videos, and DASH is used in browsers.

youtube-dl mostly mimics how browsers download videos, and DASH is used in browsers.

before today it gets download link not manifest url.

The YouTube site comes with a big change yesterday.


PostgreSQL adapter sets invalid value "panic" for client_min_messages

This has been a problem for us from 50.0 all the way up to 52.7. I see from the source in 60.x this may not be an issue anymore.
The postgresql docs (for pg versions that support client_min_messages, i.e. 10 through 13) specify the valid values for client_min_messages:

Valid values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE, WARNING, and ERROR.

Yet, the postgres adapter here (up to 52.7 at least) tries setting it to "panic":
https://github.com/jruby/activerecord-jdbc-adapter/blob/1100221417a692663936e367e9775c7e48867859/lib/arjdbc/postgresql/adapter.rb#L206-L219
https://github.com/jruby/activerecord-jdbc-adapter/blob/1100221417a692663936e367e9775c7e48867859/lib/arjdbc/postgresql/adapter.rb#L221-L235
In our app this didn't actually present a problem until we upgraded postgres to either 11 or 12 (we're on 12 now), so perhaps "panic" actually was an acceptable value in a prior version, despite the docs. In any case, it's not an acceptable value now.
The effect is that trying to set it to "panic" raises an error, which is rescued, and @standard_conforming_strings is incorrectly set to :unsupported, which causes problems later when our app constructs properly-escaped queries.
We've worked around it by monkeypatching these functions to remove the extra bits:
module ArJdbc
  module PostgreSQL
    def standard_conforming_strings=(enable)
      value = enable ? "on" : "off"
      execute("SET standard_conforming_strings = #{value}", 'SCHEMA')
      @standard_conforming_strings = ( value == "on" )
    end

    def standard_conforming_strings?
      value = select_one('SHOW standard_conforming_strings', 'SCHEMA')['standard_conforming_strings']
      @standard_conforming_strings = ( value == "on" )
    end
  end
end

As I said, it looks like this may be fixed in 60.x. Can this be backported to 52.x (or further)?

This has been a problem for us from 50.0 all the way up to 52.7. I see from the source in 60.x this may not be an issue anymore.

Actually, this was a problem before 50.x when we were on Rails 4 too.


pkg(kotlin-1.8.0): Added Kotlin 1.8.0

I bumped the JDK version to 11, as 8 is quite old.

Seems the test ran out of memory...

Oh...
Well that's interesting

No longer needed due to #587


Refactor tests

A bit of test refactoring. No test functionality should have been modified. Main improvements:

Reuse the same receive function, instead of having it declared in multiple files.
Refactorization of test_agent_async_requests through fixtures.
Add more consistency in the naming of the tests (agent.received, handler=receive...)

I fixed the whitespace between the imports, renamed the function, extracted set_received as well and removed the position change of the test to clean the git diff. I will add a PR with that change.


Document known bug in PAS 2.3 that can make cert rotation fail, also need to be merged into 2.4

Only affects customers who have opt-ed into mutual TLS for route
integrity.
Signed-off-by: David Stevenson<EMAIL_ADDRESS>

Thank you @ljarzynski!

@dsboulder no problem. I'll make sure it gets to prod soon. Should be within the half hour


PUSH_PROMISE on closed stream

We are testing @mitmproxy against http://http2-push.io, which sends pushed two streams if you request the / path. This works fine from curl and a simple h2 client.
However as soon as you try to browse to that page from Firefox things start be get weird and broken. Browsing there with a fresh session works once, and then the PUSH_PROMISE frames will fail or get swallowed.
It turns out, that if you hit the client cache for /, the server responds with a 304, but still sends the PUSH_PROMISE frames. However, at that point the original stream is already closed, which cases hyper-h2 to yield the following error message:
h2.exceptions.ProtocolError: Attempted to push on closed stream.
According to RFC 7540 Section 6.6:

PUSH_PROMISE frames MUST only be sent on a peer-initiated stream that is in either the "open" or "half-closed (remote)" state.

Looking at the received frames, we see:
HEADERS with stream_id=1,  code=304 and flags=(END_HEADERS and END_STREAM)
PUSH_PROMISE with stream_id=1, promised_stream_id=2, and a headers fragment
PUSH_PROMISE with stream_id=1, promised_stream_id=4, and a headers fragment

hyper-h2 now processes this in a way that stream 1 is closed before the PUSH_PROMISE is handled, therefore generating above error code - which is totally valid following the reasoning above.
This error does not happen if we have a clean cache, and therefore get the following frames from the server:
HEADERS with stream_id=1,  code=200 and flags=END_HEADERS
PUSH_PROMISE with stream_id=1, promised_stream_id=2, and a headers fragment
PUSH_PROMISE with stream_id=1, promised_stream_id=4, and a headers fragment
DATA with stream_id=1,  some data and flags=END_STREAM

Here is a minimal example using hyper-h2 as client to trigger that error:
import certifi
import h2.connection
import h2.events

import traceback
import errno
import socket
import ssl
import time

SERVER_NAME = 'http2-push.io'

socket.setdefaulttimeout(2)

c = h2.connection.H2Connection()
c.initiate_connection()

ctx = ssl.create_default_context(cafile=certifi.where())
ctx.set_alpn_protocols(['h2', 'http/1.1'])
ctx.set_npn_protocols(['h2', 'http/1.1'])

s = socket.create_connection((SERVER_NAME, 443))
s = ctx.wrap_socket(s, server_hostname=SERVER_NAME)

s.sendall(c.data_to_send())

headers = [
    (':method', 'GET'),
    (':path', '/'),
    (':authority', SERVER_NAME),
    (':scheme', 'https'),
    ('user-agent', 'custom-python-script'),
    # omitting this header to get a working push:
    ('cookie', "__cfduid=d5c239ad129872798300aad6d474b69021479849732; _ga=GA1.2.1109854913.1477608538"),
    (b'if-modified-since', b"Thu, 27 Oct 2016 11:02:40 GMT"),
]
c.send_headers(1, headers, end_stream=True)
s.sendall(c.data_to_send())

while True:
    data = s.recv(65536 * 256)
    if not data:
        break

    try:
        events = c.receive_data(data)
        s.sendall(c.data_to_send())
    except Exception as e:
        print(traceback.format_exc())
        break

    for event in events:
        print(event)

As far as we can tell at the moment, this seems to be a bug in whatever webserver software http2-push.io is using. Looking at the response headers, it looks like: ('server', 'cloudflare-nginx')

This is interesting.  I agree that this is a bug of http2-push.io.  It clearly violates RFC because it sends PUSH_PROMISE which is associated to the already closed stream.

Yup. @bagder, I know you know people at CloudFlare. Want to reach out to them? I'm not sure if this is a bug in their changes to nginx, or in nginx more generally, but they're probably better placed to triage than I am.
This isn't a h2 bug, but we'll use it as a tracking issue for CloudFlare's defect unless they discover that it's a nginx bug.

Any update on this? I'm still seeing this error with the above POC code.
(I had to add the magic cloudflare cookie to get it failing again)

Last I heard was confirmation from Cloudflare that they agreed it was a bug. No further details than that. =(

@Lukasa @Kriechi we are going to deploy a fix for this next week if nothing gets in the way.
In the future feel free to CC me if you see other h2-related bugs on Cloudflare, so we can cut the middle-men and get the information to the right people more quickly :)

Glad to hear it, thanks for the update @ghedo!

This seems to be resolved now - at least my example from above does not throw an error any more.
Thanks @ghedo for the fast fix!


fix: logic of additional EBS count

Error: Invalid index

  on terraform-aws-ec2-instance-group/main.tf line 171, in resource "aws_volume_attachment" "default":
 171:   )[count.index]
    |----------------
    | count.index is 2
    | local.instance_count is 8
    | var.ebs_device_names is list of string with 25 elements
    | var.ebs_volume_count is 1

The given key does not identify an element in this collection value.

/test all

/test all


Add check for missing SSH key

Description

Add check for missing SSH key
How to test

[ ] Test on Windows
[ ] Test on Linux
[ ] Test on MacOS

If you already have ssh keys, go to .ssh folder and move your keys no another folder, then run ssh-add -D
update your settings .json with "gitpod.remote.useLocalApp" : false
Connect to a gitpod workspace
You'll be prompted to copy the ownerToken to connect

@jeanp413 I think you need to add somewhere a doc how to test extension locally and add it to a PR template. I don't think it is clear what is a new approach without downloading vsix files.

Filip and me tested this on Windows and SSH_AUTH_SOCK is not defined there, need to investigate more about https://github.com/PowerShell/Win32-OpenSSH and if it's possible to connect to the ssh-agent worst case I'll just check for the public keys files manually

I think this may not work, if you have network problems then remote-ssh will try to reconnect and then once again you have to enter the password. At this point your clipboard may be empty of everything
I think there can be a prompt whether to use the need to help automatically generate a private key

Pushed 94afc09 (#1) so that the config field gets removed properly when using SSH gateway.

@jeanp413 that one removes the configuration correctly, I am not sure why it still doesn't want to remove the config for remote SSH. I tested on my Mac as well and there it removes correctly with undefined weird.

@filiptronicek @iQQBot could you test again now I checked for the files explicitly like in here https://github.com/openssh/openssh-portable/blob/fe9d87a6800a7a33be08f4d5ab662a758055ced2/readconf.c#L2529-L2542

fyi: see internal conversation for a key incompatibility (to ensure we test this scenario, also).

@filiptronicek your remote-ssh logs say your are opening /workspace/void path but gitpod logs says /workspace/test, could you out a breakpoint here and check it's /workspace/test

@jeanp413 sorry for the confusion there, I accidentally copied the log from me trying out the void repo and mixed it up. The uri.path is indeed correct and /workspace/test.

@filiptronicek so it works then?

@jeanp413 nope, still shows the same error

could you share the correct logs then? or they are the same just different path?

Yes, they are identical just with the path different.

@filiptronicek I setup my windows partition and tested it, works just fine. Will ask other team members who have windows to test it, for your case let's have a call on Monday to try and find what's the issue (maybe you have too many viruses :rofl: )

maybe you have too many viruses 🤣

😳


ARROW-16478: [C++] Refine cpu info detection

This patch separates OS and ARCH depdendent code and removes CPU
frequency detection (cycles_per_ms()) which is brittle and not very
useful in practice.
There are still many caveats, especially for Arm platform. It's better
to adopt a mature library if we want more complete functionalities.
E.g., github.com/pytorch/cpuinfo.
Below are examples of cpu info detected on various platforms (some
from virtual machines).
Intel, Linux
Vendor: Intel
Model: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
Features (set bits):  0  1  2  3  4  5  6  7  8  9  10  11  12
Cache sizes: 32768 1048576 37486592
AMD, Linux
Vendor: AMD
Model: AMD EPYC 7251 8-Core Processor
Features (set bits):  0  1  2  3  4  5  11  12
Cache sizes: 32768<PHONE_NUMBER>4432
Intel, MacOS
Vendor: Unknown
Model: Unknown
Features (set bits):  0  1  2  3  4
Cache sizes: 32768<PHONE_NUMBER>2912
Intel, Windows
Vendor: Intel
Model: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz\0\0
Features (set bits):  0  1  2  3  4  5  6  7  8  9  10  11  12
Cache sizes:<PHONE_NUMBER>152 37486592
Intel, MinGW
Vendor: Intel
Model: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz\0\0\0\0\0\0\0
Features (set bits):  0  1  2  3  4  5  11  12
Cache sizes:<PHONE_NUMBER>88 52428800
Arm, Linux
Vendor: Unknown
Model: Unknown
Features (set bits):  32
Cache sizes: 65536 1048576 Unknown
Arm, MacOS
Vendor: Unknown
Model: Unknown
Features (set bits):  32
Cache sizes: 65536 4194304 Unknown

The added test fails on s390x:
https://app.travis-ci.com/github/apache/arrow/jobs/569678317#L4649

Change to draft. Wait for appveyor CI fixes.


Fix problem sheet numbering (5.4 -> 5.3)

Seems we skipped a number there, this just fixes the numbering to avoid confusion.

Please make the change in the .jmd files

Right, forgot that these are generated with Weave. Should be fixed now.

Also week1s.jmd (I haven’t figured out how to avoid repetition)

done


Metrics are logged on each batch, but not on each accum. step

🐛 Bug
I'm not sure, that this is a bug, but it's really unexpected behavior.
Metrics are logged on each batch, as we can see here:
https://github.com/PyTorchLightning/pytorch-lightning/blob/c32e3f3ea57dd4439255b809ed5519608a585d73/pytorch_lightning/trainer/training_loop.py#L435-L439
In case of using Tensorboard logger we will see the following picture:

these vertical lines are a sets of points, logged for each individual step.
Is there any way to log aggregated metrics for each step (so that only one log point appears for each step) ?
I can set row_log_interval equal to the accumulation steps, and only one logging point will appear, but in this case, I'll not aggregate the accumulation step metrics, but only take the last one.
Environment
PyTorch version: 1.4.0
OS: Ubuntu 16.04.6 LTS
Python version: 3.7
Versions of relevant libraries:
[pip] numpy==1.18.1
[pip] pytorch-lightning==0.7.1
[pip] torch==1.4.0
[pip] torchvision==0.5.0

could you also pass the sample code you are using?

Here is my function for Trainer construction:
def get_trainer(args: argparse.Namespace, experiment_name: str) -> pytorch_lightning.Trainer:
    tb_logger_callback = pytorch_lightning.loggers.TensorBoardLogger(
        save_dir=args.tensorboard_logdir,
        version=experiment_name
    )

    model_checkpoint_callback = pytorch_lightning.callbacks.ModelCheckpoint(
        filepath=pathlib.Path(args.experiments_root) / experiment_name / 'models',
        verbose=True,
        save_top_k=args.hold_n_models
    )

    trainer_args = copy.deepcopy(args.__dict__)
    trainer_args.update(
        {
            'logger': tb_logger_callback,
            'checkpoint_callback': model_checkpoint_callback,
            'show_progress_bar': True,
            'progress_bar_refresh_rate': 1,
            'row_log_interval': 1,
            'val_check_interval': int(trainer_args['val_check_interval']),
        }
    )

    trainer = pytorch_lightning.Trainer(
        **trainer_args
    )

    return trainer

And here is the Module (some lines are omitted)
class MyModule(pl.LightningModule):
    def __init__(self, hparams: Union[dict, argparse.Namespace]):
        super().__init__()
        if isinstance(hparams, dict):
            hparams = argparse.Namespace(**hparams)

        self.hparams = hparams

        # ----------------------------------------
        # My custom fields initialization here
        # ----------------------------------------

    def prepare_data(self):
        # ----------------------------------------
        # My custom dataset creation here
        # ----------------------------------------
        pass

    def forward(
            self, data: rnd_datasets.JointCollateBatchT
    ) -> Tuple[torch.tensor, torch.tensor, torch.tensor]:
        """
        Args:
            data: list with input model data (tensors). It contains 4 tensors:
                token_ids, token_types, reply_lengths, is_distractor.

        Returns:
            Tuple with 3 losses: (loss, lm_loss, mc_loss)
        """
        loss, lm_loss, mc_loss = self._model(data)

        if self.trainer.use_dp or self.trainer.use_ddp2:
            loss = loss.unsqueeze(0)
            lm_loss = lm_loss.unsqueeze(0)
            mc_loss = mc_loss.unsqueeze(0)

        return loss, lm_loss, mc_loss

    def training_step(self, batch, batch_idx):
        loss, lm_loss, mc_loss = self.forward(batch)
        lr = self.trainer.optimizers[0].param_groups[0]['lr']
        log = {
            'MC-Loss/train': mc_loss,
            'LM-Loss/train': lm_loss,
            'Learning-Rate': lr
        }
        # Set up placeholders for valid metrics.
        if batch_idx == 0:
            loss_val = torch.tensor(np.inf).unsqueeze(0).to(loss.device) if len(loss.size()) else np.inf
            log.update({'MC-Loss/valid': loss_val, 'LM-Loss/valid': loss_val})

        return {'loss': loss, 'log': log}

    def validation_step(self, batch, batch_idx):
        loss, lm_loss, mc_loss = self.forward(batch)
        return {'val_loss': lm_loss, 'mc_loss': mc_loss, 'lm_loss': lm_loss}

    def validation_epoch_end(self, outputs):
        mc_loss = torch.stack([x['mc_loss'] for x in outputs]).mean()
        lm_loss = torch.stack([x['lm_loss'] for x in outputs]).mean()

        logs = {
            'MC-Loss/valid': mc_loss,
            'LM-Loss/valid': lm_loss
        }

        return {'val_loss': lm_loss, 'log': logs}

    def train_dataloader(self):
        return self._train_dataloader

    def val_dataloader(self):
        return self._valid_dataloader

    def configure_optimizers(self):
        parameters = self._model.parameters()
        optimizer = transformers.AdamW(parameters, lr=self._learning_rate)

        # ----------------------------------------
        # My custom lr_scheduler creation here
        # ----------------------------------------

        scheduler = {
            'scheduler': lr_scheduler,
            'interval': 'step',
            'frequency': self.trainer.accumulate_grad_batches,
            'reduce_on_plateau': True,
            'monitor': 'LM-Loss/valid'
        }

        return [optimizer], [scheduler]

Let me show more extreme case.
Here I set --accumulate_grad_batches=50
and wait 100 steps:

And this I can see on tensorboard:

Only 2 steps are logged (as expected), but each step (vertical orange lines) contains all accumulation step metrics. That's why the vertical lines are here.
On the other hand, if I set --accumulate_grad_batches=1 and wait few (5) steps a see the following picture:

This image is clear. No vertical lines. Each step corresponds to a single metric estimation.
This problem may look minor :) But in my particular case, there is a huge variance between metrics inside the one accumulation step and I don't want to plot them all, but I want to have one aggregated estimation. Without such aggregation I have a dirty messy plots:

Hope this will help to understand the problem)

@Borda any thoughts on this? I can do a PR, so you can look closer on this.

@jeffling @jeremyjordan any thought? ^^

at a quick glance i would think you'd want to use training_step_end to do the aggregation. does that resolve your issue? i'm not sure if it would apply when accumulating gradients over many timesteps, though.

Hi! Sorry for the late reply.
I think, the training_step_end won't help, because it can not aggregate accum-batches (or maybe I've missed something)

yeah we should handle that case better, would you be interested in drafting a PR to address this?

Yes, I'll try to handle this

@jeremyjordan Let me first formalize the problem.
Here are log_metrics methods for few pytorch-lightning loggers:
TensorBoardLogger:
    @rank_zero_only
    def log_metrics(self, metrics: Dict[str, float], step: Optional[int] = None) -> None:
        for k, v in metrics.items():
            if isinstance(v, torch.Tensor):
                v = v.item()
            self.experiment.add_scalar(k, v, step)

NeptuneLogger:
    @rank_zero_only
    def log_metrics(
            self,
            metrics: Dict[str, Union[torch.Tensor, float]],
            step: Optional[int] = None
    ) -> None:
        for key, val in metrics.items():
            self.log_metric(key, val, step=step)

NeptuneLogger:
    @rank_zero_only
    def log_metrics(
            self,
            metrics: Dict[str, Union[torch.Tensor, float]],
            step: Optional[int] = None
    ) -> None:
        for key, val in metrics.items():
            self.log_metric(key, val, step=step)

MLFlowLogger:
    @rank_zero_only
    def log_metrics(self, metrics: Dict[str, float], step: Optional[int] = None) -> None:
        timestamp_ms = int(time() * 1000)
        for k, v in metrics.items():
            if isinstance(v, str):
                log.warning(f'Discarding metric with string value {k}={v}.')
                continue
            self.experiment.log_metric(self.run_id, k, v, timestamp_ms, step)

CometLogger:
    @rank_zero_only
    def log_metrics(
            self,
            metrics: Dict[str, Union[torch.Tensor, float]],
            step: Optional[int] = None
    ) -> None:
        # Comet.ml expects metrics to be a dictionary of detached tensors on CPU
        for key, val in metrics.items():
            if is_tensor(val):
                metrics[key] = val.cpu().detach()

        self.experiment.log_metrics(metrics, step=step)

As we can see, each logger's method receives the step argument.
And it works great, when there is accumulate_grad_batches equals 1.
But if we set accumulate_grad_batches, for instance equal 2, then
each step will be logged twice. There will be 2 sets of metrics for step 0,
2 sets of metrics for step 1 and so on.
It happens, because the train loop calls log_metrics routine on each batch:
https://github.com/PyTorchLightning/pytorch-lightning/blob/12b39a74b4d5892c03115770b1d0b796ff941b57/pytorch_lightning/trainer/training_loop.py#L445-L449
And when we have accumulate_grad_batches != 1, batch and step are not the same thing.
So, I see here the following solutions:

Performs a step check in each logger's log_metrics method. If step is equal to the previous one, don't log metrics, but instead, aggregate them with the previous ones (sum or weighted sum).
It's a bad solution, because it'll require a lot of fixing (actually in all existing loggers) and also, it'll make it'll oblige future loggers developers to implement such the check and aggregation in their loggers.
The same as the 1, but it moves all logic (step check and metrics aggregation) to some super-class. All loggers will be inherited from this super class and such the aggregation will be performed automatically.
It's also a bad solution: it requires a lot of refactoring and also, I feel, that there are a lot of corner cases here.
Don't touch loggers, but instead, move the train loop log_metrics method in another place (where the actual optimizer step is performed). Such the refactoring assumes, that all accum. batches metrics will be stored somewhere in the train loop, aggregated and passed to the  log_metrics method after optimizer step is performed.
It's slightly better solution, than previous two, but is also assumes a portion of refactoring and structure changes.
Don't touch anything. Each user, which will faced this issue (like me) will implement custom logger for his project like it's describe in the 1. option.
Obviously, this is the most clean solution, it'll not touch any PL code, but in such case, the global problem will not be solved: the loggers will continue log metrics accumulate_grad_batches times for each optimizer step.

What do you think? maybe you have another options? Or maybe I've totally missed something, and there exists some already implemented trick in the PL, which solves this issue?

@alexeykarnachev great analysis! Personally I would not do abstraction in Trainer as it is already very large, rather I would do some abstraction in base logger classes and the logic is very similar for all particular loggers...
@PyTorchLightning/core-contributors any other thoughts?


Fixed typos and documentation errors

Fixed a few typos and documentation errors that I found in modules/gem5/_posts/2000-01-01-index.md and  modules/gem5/_posts/2000-03-01-assignment1.md.

Thanks for the corrections. I'll merge the changes with the main branch.


Add site / rebuild tests that includes a theme

See https://github.com/spf13/hugo/issues/2430

This issue has been automatically marked as stale because it has not been commented on for at least four months.
The resources of the Hugo team are limited, and so we are asking for your help.
If this is a bug and you can still reproduce this error on the master branch, please reply with all of the information you have about it in order to keep the issue open.
If this is a feature request, and you feel that it is still valuable, please open a proposal at https://discuss.gohugo.io/.
This issue will automatically be closed in four months if no further activity occurs. Thank you for all your contributions.


A few Python health fixes

What is this PR trying to achieve?

Slightly better organisation of Python code

Some linting fixes

Logs should be easier to read. pprint means logs will now look more like:
SNS response: {'MessageId': '648b4d2b-1dd1-580c-bdca-1c9f546e2a29', 'ResponseMetadata': {'RequestId': '33719136-0980-51f3-81a3-c082403ff3d6', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '33719136-0980-51f3-81a3-c082403ff3d6', 'content-type': 'text/xml', 'content-length': '294', 'date': 'Fri, 09 Jun 2017 07:00:14 GMT'}, 'RetryAttempts': 0}}

to
SNS response:
{'MessageId': '648b4d2b-1dd1-580c-bdca-1c9f546e2a29',
 'ResponseMetadata': {'HTTPHeaders': {'content-length': '294',
                                      'content-type': 'text/xml',
                                      'date': 'Fri, 09 Jun 2017 07:00:14 GMT',
                                      'x-amzn-requestid': '33719136-0980-51f3-81a3-c082403ff3d6'},
                      'HTTPStatusCode': 200,
                      'RequestId': '33719136-0980-51f3-81a3-c082403ff3d6',
                      'RetryAttempts': 0}}

Who is this change for?
Developers who want nicer logs and cleaner code.
Have the following been considered/are they needed?

[ ] Deployed new versions
[ ] Run terraform apply.

👍


Support map of array

Hi, I've just hit an error when trying to define dictionary with array value type. Seem to be not supported by guardrail yet.
Would it be possible to add this feature?
Thanks.
Definition example:
type: object
additionalProperties:
  type: array
  items:
    type: string

A workaround is to x-scala-type: Map[String, Vector[Foo]] at the top of that structure.
I think it should be possible to support this by changing the DeferredArray and DeferredMap definitions to contain references to other Deferred* classes, resolving the whole tree instead of just the closest to the top.
This should be straightforward, and if you
(or others) would be interested in taking a crack at it, that'd be very much appreciated!

#1407 adds support for very detailed structures, finally getting rid of the presumption that (tpe: Option[String], format: Option[String]) would be sufficient to describe all types.
This issue isn't resolved by the work in that PR, but it would be much easier now.


Preload does not go backwards

Open for discussion

Coverage remained the same at 81.708% when pulling c165b4615da95b4814d6d062860f2fc9cae8f123 on eatonphil:better-preload-behavior into e636fe8c2128082629532ecdf3ce73dcf6a7eaa5 on linode:master.

thanks!


A11y_Azure Tools Storage Explorer_Settings_Application_UseofColor: "Application" Link visually looks like text. There's no difference between link and other text content on page.

GitHub Tags:
#A11yMAS;#A11yTCS;#MAC;#DesktopApp;#A11ySev2;#BM_AzureToolsStorageExplorer_Mac_Dec2022;#Azure Tools Storage Explorer;#WCAG1.4.1;#FTP;#AINotInScope;
Environment Details:
Application: Microsoft Azure Storage Explore
version: 1.27.0
OS Details
Mac version: macOS Ventura 13.1
Repro Steps:

Launch Storage Explorer
Tab to Setting menu on left pane and click on it.
Tab to Application on right pane and  click on it.
"Application" screen gets opened.
Turn on voiceover and observe application, data explorer and other content on page are given as link but visually looks like a text.

Actual results:
"Application" Link visually looks like text. There's no difference between link and other text content on page.
Expected results:
"Application" Link should look like link. There should be a difference between link and other text content on page.
##User Impact:
Low vision user will face difficulty in understanding content present on the screen.
Attachments:

verified in the latest environment. Issue is fixed, Hence closing the bug

GitHubTags:#Closed;


Create/Destroy additional resource hosts locally

Implement virtual machine create/destroy functionality in vbox menu.

Added Add/Remove VM functionality. As resource host is added by installation script, "Add" button  removed and will be added later. Filtering by machine name added to show resource hosts only.


Crackstreams~!Tszyu vs Murtazaliev Live Free TV Coverage ON Reddit 20 Oct 2024

Bakhram Murtazaliev vs. Tim Tszyu live fight updates, results, highlights from IBF super welterweight title bout
🅻🅸🆅🅴🔴▶ CLICK HERE TO WATCH LIVE ONLINE
🆆🅰🆃🅲🅷🔴▶ CLICK HERE TO LIVE STREAM
Tim Tszyu looks to become a two-time super welterweight champion when he challenges Bakhram Murtazaliev for the IBF title in Orlando, Florida on Saturday, October 19 (Oct. 20 in Australia).
Murtazaliev (22-0) is aiming to make the first defence of the belt he won when he stopped Jack Culcay earlier this year, while Tszyu is hoping to bounce back from his first loss as a professional - a bloody split-decision defeat to Sebastian Fundora in March.
A win for either man will catapult them into the frame for big fights against the likes of Fundora, Errol Spence and Terence Crawford.
MORE: Who is boxing's best pound-for-pound fighter?
The Sporting News brings you all the action, as it happens:
Bakhram Murtazaliev vs. Tim Tszyu live results, updates
Mateo Tapia vs. Endry Saavedra
8:20 p.m. ET | 11:20 a.m. AEDT: Huge knockdown for Saavedra in round three! Tapia goes down for the first time in his career and a second one shortly after as Saavedra pours on the pressure. The bell rings to end an eventful round and Tapia will need something big to recover from this. A short right hook through the guard did the majority of the damage before some body shots put him down a second time.
8:15 p.m. ET | 11:15 a.m. AEDT: Two rounds in the books in an intriguing middleweight match up and, on the evidence so far, we should be in for an exciting fight with both guys putting plenty into their shots.
Bakhram Murtazaliev vs. Tim Tszyu start time
Date: Saturday, October 19 (Sunday, October 20 in Australia)
Time: 8 p.m. ET | 11 a.m. AEDT
Main event start time (approx.): 10:30 p.m. ET | 1:30 p.m. AEDT
Location: Caribe Royale Resort — Orlando, Florida
Where to watch Bakhram Murtazaliev vs. Tim Tszyu
In the U.S.:
Channel/live stream: Prime Video
Prime Video: $8.99/month | Ad-free $11.98/month
Prime Video with Prime membership: $14.99/month | Ad-free $17.98/month | $139/year
Murtazaliev vs. Tszyu is available on Prime Video in the U.S. Prime Video is available for existing Prime customers and those new to the platform. Subscribers can choose from multiple membership plans with discounts available for students. You can also enjoy a free 30-day trial before buying the product.
WATCH: Murtazaliev vs. Tszyu on Prime Video
In Australia:
Channel/live stream: Kayo
Price: $69.95
Tszyu vs. Murtazaliev is available on Kayo in Australia, with no subscription needed. The PPV price is $69.95.
WATCH: Bakhram Murtazaliev vs. Tim Tszyu on Kayo
Bakhram Murtazaliev vs. Tim Tszyu fight card
Bakhram Murtazaliev (c) vs. Tim Tszyu for the IBF super welterweight title
Yoenis Tellez vs. Johan Gonzalez; Super Welterweights
Mateo Tapia vs. Endry Saavedra; Middleweights
Tim Tszyu looks to become a two-time super welterweight champion when he challenges Bakhram Murtazaliev for the IBF title in Orlando, Florida on Saturday, October 19 (Oct. 20 in Australia).
Murtazaliev (22-0) is aiming to make the first defence of the belt he won when he stopped Jack Culcay earlier this year, while Tszyu is hoping to bounce back from his first loss as a professional - a bloody split-decision defeat to Sebastian Fundora in March.
A win for either man will catapult them into the frame for big fights against the likes of Fundora, Errol Spence and Terence Crawford.
MORE: Who is boxing's best pound-for-pound fighter?
The Sporting News brings you all the action, as it happens:
Bakhram Murtazaliev vs. Tim Tszyu live results, updates
Mateo Tapia vs. Endry Saavedra
8:20 p.m. ET | 11:20 a.m. AEDT: Huge knockdown for Saavedra in round three! Tapia goes down for the first time in his career and a second one shortly after as Saavedra pours on the pressure. The bell rings to end an eventful round and Tapia will need something big to recover from this. A short right hook through the guard did the majority of the damage before some body shots put him down a second time.
8:15 p.m. ET | 11:15 a.m. AEDT: Two rounds in the books in an intriguing middleweight match up and, on the evidence so far, we should be in for an exciting fight with both guys putting plenty into their shots.
Bakhram Murtazaliev vs. Tim Tszyu start time
Date: Saturday, October 19 (Sunday, October 20 in Australia)
Time: 8 p.m. ET | 11 a.m. AEDT
Main event start time (approx.): 10:30 p.m. ET | 1:30 p.m. AEDT
Location: Caribe Royale Resort — Orlando, Florida
Where to watch Bakhram Murtazaliev vs. Tim Tszyu
In the U.S.:
Channel/live stream: Prime Video
Prime Video: $8.99/month | Ad-free $11.98/month
Prime Video with Prime membership: $14.99/month | Ad-free $17.98/month | $139/year
Murtazaliev vs. Tszyu is available on Prime Video in the U.S. Prime Video is available for existing Prime customers and those new to the platform. Subscribers can choose from multiple membership plans with discounts available for students. You can also enjoy a free 30-day trial before buying the product.
WATCH: Murtazaliev vs. Tszyu on Prime Video
In Australia:
Channel/live stream: Kayo
Price: $69.95
Tszyu vs. Murtazaliev is available on Kayo in Australia, with no subscription needed. The PPV price is $69.95.
WATCH: Bakhram Murtazaliev vs. Tim Tszyu on Kayo
Bakhram Murtazaliev vs. Tim Tszyu fight card
Bakhram Murtazaliev (c) vs. Tim Tszyu for the IBF super welterweight title
Yoenis Tellez vs. Johan Gonzalez; Super Welterweights
Mateo Tapia vs. Endry Saavedra; Middleweights
Tim Tszyu looks to become a two-time super welterweight champion when he challenges Bakhram Murtazaliev for the IBF title in Orlando, Florida on Saturday, October 19 (Oct. 20 in Australia).
Murtazaliev (22-0) is aiming to make the first defence of the belt he won when he stopped Jack Culcay earlier this year, while Tszyu is hoping to bounce back from his first loss as a professional - a bloody split-decision defeat to Sebastian Fundora in March.
A win for either man will catapult them into the frame for big fights against the likes of Fundora, Errol Spence and Terence Crawford.
MORE: Who is boxing's best pound-for-pound fighter?
The Sporting News brings you all the action, as it happens:
Bakhram Murtazaliev vs. Tim Tszyu live results, updates
Mateo Tapia vs. Endry Saavedra
8:20 p.m. ET | 11:20 a.m. AEDT: Huge knockdown for Saavedra in round three! Tapia goes down for the first time in his career and a second one shortly after as Saavedra pours on the pressure. The bell rings to end an eventful round and Tapia will need something big to recover from this. A short right hook through the guard did the majority of the damage before some body shots put him down a second time.
8:15 p.m. ET | 11:15 a.m. AEDT: Two rounds in the books in an intriguing middleweight match up and, on the evidence so far, we should be in for an exciting fight with both guys putting plenty into their shots.
Bakhram Murtazaliev vs. Tim Tszyu start time
Date: Saturday, October 19 (Sunday, October 20 in Australia)
Time: 8 p.m. ET | 11 a.m. AEDT
Main event start time (approx.): 10:30 p.m. ET | 1:30 p.m. AEDT
Location: Caribe Royale Resort — Orlando, Florida
Where to watch Bakhram Murtazaliev vs. Tim Tszyu
In the U.S.:
Channel/live stream: Prime Video
Prime Video: $8.99/month | Ad-free $11.98/month
Prime Video with Prime membership: $14.99/month | Ad-free $17.98/month | $139/year
Murtazaliev vs. Tszyu is available on Prime Video in the U.S. Prime Video is available for existing Prime customers and those new to the platform. Subscribers can choose from multiple membership plans with discounts available for students. You can also enjoy a free 30-day trial before buying the product.
WATCH: Murtazaliev vs. Tszyu on Prime Video
In Australia:
Channel/live stream: Kayo
Price: $69.95
Tszyu vs. Murtazaliev is available on Kayo in Australia, with no subscription needed. The PPV price is $69.95.
WATCH: Bakhram Murtazaliev vs. Tim Tszyu on Kayo
Bakhram Murtazaliev vs. Tim Tszyu fight card
Bakhram Murtazaliev (c) vs. Tim Tszyu for the IBF super welterweight title
Yoenis Tellez vs. Johan Gonzalez; Super Welterweights
Mateo Tapia vs. Endry Saavedra; Middleweights
Tim Tszyu looks to become a two-time super welterweight champion when he challenges Bakhram Murtazaliev for the IBF title in Orlando, Florida on Saturday, October 19 (Oct. 20 in Australia).
Murtazaliev (22-0) is aiming to make the first defence of the belt he won when he stopped Jack Culcay earlier this year, while Tszyu is hoping to bounce back from his first loss as a professional - a bloody split-decision defeat to Sebastian Fundora in March.
A win for either man will catapult them into the frame for big fights against the likes of Fundora, Errol Spence and Terence Crawford.
MORE: Who is boxing's best pound-for-pound fighter?
The Sporting News brings you all the action, as it happens:
Bakhram Murtazaliev vs. Tim Tszyu live results, updates
Mateo Tapia vs. Endry Saavedra
8:20 p.m. ET | 11:20 a.m. AEDT: Huge knockdown for Saavedra in round three! Tapia goes down for the first time in his career and a second one shortly after as Saavedra pours on the pressure. The bell rings to end an eventful round and Tapia will need something big to recover from this. A short right hook through the guard did the majority of the damage before some body shots put him down a second time.
8:15 p.m. ET | 11:15 a.m. AEDT: Two rounds in the books in an intriguing middleweight match up and, on the evidence so far, we should be in for an exciting fight with both guys putting plenty into their shots.
Bakhram Murtazaliev vs. Tim Tszyu start time
Date: Saturday, October 19 (Sunday, October 20 in Australia)
Time: 8 p.m. ET | 11 a.m. AEDT
Main event start time (approx.): 10:30 p.m. ET | 1:30 p.m. AEDT
Location: Caribe Royale Resort — Orlando, Florida
Where to watch Bakhram Murtazaliev vs. Tim Tszyu
In the U.S.:
Channel/live stream: Prime Video
Prime Video: $8.99/month | Ad-free $11.98/month
Prime Video with Prime membership: $14.99/month | Ad-free $17.98/month | $139/year
Murtazaliev vs. Tszyu is available on Prime Video in the U.S. Prime Video is available for existing Prime customers and those new to the platform. Subscribers can choose from multiple membership plans with discounts available for students. You can also enjoy a free 30-day trial before buying the product.
WATCH: Murtazaliev vs. Tszyu on Prime Video
In Australia:
Channel/live stream: Kayo
Price: $69.95
Tszyu vs. Murtazaliev is available on Kayo in Australia, with no subscription needed. The PPV price is $69.95.
WATCH: Bakhram Murtazaliev vs. Tim Tszyu on Kayo
Bakhram Murtazaliev vs. Tim Tszyu fight card
Bakhram Murtazaliev (c) vs. Tim Tszyu for the IBF super welterweight title
Yoenis Tellez vs. Johan Gonzalez; Super Welterweights
Mateo Tapia vs. Endry Saavedra; Middleweights
Tim Tszyu looks to become a two-time super welterweight champion when he challenges Bakhram Murtazaliev for the IBF title in Orlando, Florida on Saturday, October 19 (Oct. 20 in Australia).
Murtazaliev (22-0) is aiming to make the first defence of the belt he won when he stopped Jack Culcay earlier this year, while Tszyu is hoping to bounce back from his first loss as a professional - a bloody split-decision defeat to Sebastian Fundora in March.
A win for either man will catapult them into the frame for big fights against the likes of Fundora, Errol Spence and Terence Crawford.
MORE: Who is boxing's best pound-for-pound fighter?
The Sporting News brings you all the action, as it happens:
Bakhram Murtazaliev vs. Tim Tszyu live results, updates
Mateo Tapia vs. Endry Saavedra
8:20 p.m. ET | 11:20 a.m. AEDT: Huge knockdown for Saavedra in round three! Tapia goes down for the first time in his career and a second one shortly after as Saavedra pours on the pressure. The bell rings to end an eventful round and Tapia will need something big to recover from this. A short right hook through the guard did the majority of the damage before some body shots put him down a second time.
8:15 p.m. ET | 11:15 a.m. AEDT: Two rounds in the books in an intriguing middleweight match up and, on the evidence so far, we should be in for an exciting fight with both guys putting plenty into their shots.
Bakhram Murtazaliev vs. Tim Tszyu start time
Date: Saturday, October 19 (Sunday, October 20 in Australia)
Time: 8 p.m. ET | 11 a.m. AEDT
Main event start time (approx.): 10:30 p.m. ET | 1:30 p.m. AEDT
Location: Caribe Royale Resort — Orlando, Florida
Where to watch Bakhram Murtazaliev vs. Tim Tszyu
In the U.S.:
Channel/live stream: Prime Video
Prime Video: $8.99/month | Ad-free $11.98/month
Prime Video with Prime membership: $14.99/month | Ad-free $17.98/month | $139/year
Murtazaliev vs. Tszyu is available on Prime Video in the U.S. Prime Video is available for existing Prime customers and those new to the platform. Subscribers can choose from multiple membership plans with discounts available for students. You can also enjoy a free 30-day trial before buying the product.
WATCH: Murtazaliev vs. Tszyu on Prime Video
In Australia:
Channel/live stream: Kayo
Price: $69.95
Tszyu vs. Murtazaliev is available on Kayo in Australia, with no subscription needed. The PPV price is $69.95.


fix delete, will not remove the graph from virtuoso if the prefix is different from default

one problem…. with the prefix now it is possible to create several graphs for one file… so when you delete the second one, the file wont be there and will for now throw 500 i think… what should we actually do? or we should check if the file already exists and not create the second graph?

@kurzum

we can also make different paths for files with different graphids/prefixes... but need to think about how should these paths look like

@manonthegithub I would document this in swagger:
document in swagger: 1. explain prefix better in graph/save and its behaviour and also what is used as default. 2. TBD I think that the prefix parameter should be transparent, and users should do as they wish. So there are wrong usage, e.g. "http://example.org" leads to "http://example.orgjanni/testing/group" and "http://example.org//" leads to  "http://example.org//janni/testing/group" but also they can do   "http://example.org/additionalpath/" or whatever. 3. document the current pitfall with delete, i.e. if you write a graph with prefix and delete without prefix OR upload same file with different prefixes.


add object to scala

there are nodes like object_definition in the scala treesitter, because you can do things like
object Foo {
  def dank(): Unit = println("foodank")
}
Foo.dank()

where in other languages, like java, you would do
class Foo {
  public static void dank() { System.out.println("foodank"); }
}
Foo.dank();

Is there a way to restrict the pattern a bit more? What node types is object going to match? If only object_definition is the target, it's better to leave it at that.

thanks :)


Create Pages “um-novo-começo”

Automatically generated by Netlify CMS

👷 Deploy Preview for thainara processing.

Name
Link

🔨 Latest commit
c4bad754c93cdb52ba547969dd75a5277968ab0f

🔍 Latest deploy log
https://app.netlify.com/sites/thainara/deploys/641dc39aa829a400083cfa4d


Fixed .js filename in bower.json

Fixed bower.json to match the javascript file on /dist/js

Thank you. I didn't realize I wrote it wrong!


#3arwmkm feat(diatheke/v4): add audio format to requests

	error creating review subtask in list 49214426:  UpsertTask: could not create task with url https://api.clickup.com/api/v2/list/49214426/task: ClickUp returned status 400: {"err":"Cannot make subtasks of subtasks","ECODE":"ITEM_002"}

This is outdated and if we are going to do breaking change for API we should include this with other changes.


SharedViewModel with Activity and composable functions

How can I achieve shared ViewModel using this library?
I want the activity and all the compose functions under this Navigation have same ViewModel instance.
any idea of how I can achieve it?

this has helped me. but can u please provide some explanation to me...android beginner.

Closing this. Feel free to add comments if there is anything else I can help with


Integrating React-pixi with Meteor-React

So I build a meteor-react app for a simple game and add react-pixi to it. React-pixi v6.5.0, react v17, pixi v6, meteorjs.
I tried following the documentation, and try with the simple stage component. Then I get this error

There is no other react-pixi component I use for now because I can’t fix this error.
And it seems that there is a conflict between meteorJS middleware and pixijs. But I don't know anymore.

Hi @ashlite could you create a codesandbox example?

I don't have codesandbox for now.
You can easily duplicate this by creating meteor-react project base on this doc https://react-tutorial.meteor.com/simple-todos/01-creating-app.html
then just change the App.jsx in imports/ui
import React from 'react'
import { Stage, Sprite } from '@inlet/react-pixi'

export const App = () => (
  <div>
    <Stage width={800} height={800}>
      <Sprite image="https://via.placeholder.com/300/FF0000" x={100} y={100} />
    </Stage>
  </div>
)

Try it using fresh install meteor js + react-pixi + pixi.js

I have not installed Meteor on my local machine, so I cannot test it here.. but regarding to the error message it looks like you're not using the latest React version (v17.0.2).
The react-reconciler package is considered experimental and changes over time, that's why the latest version of react-pixi is always in sync with the latest version of React.
To use an older react-reconciler implementation in react-pixi you could try to downgrade @inlet/react-pixi to v6.3.0:
npm install<EMAIL_ADDRESS>
See Releases and search for react-reconciler updates if you'd like to downgrade even further.

default meteor create will adding react v16
But even though I install the latest react version (v17), it still producing the same error.


Android: logError throws Exception

When I try to call the logError method the following stacktrace will be thrown:
2019-05-03 16:43:15.694 6898-6898/? E/ReflectiveCordovaPlugin: Uncaught exception at #logError
    java.lang.IllegalStateException: Must Initialize Fabric before using singleton()
        at io.fabric.sdk.android.Fabric.singleton(Fabric.java:301)
        at io.fabric.sdk.android.Fabric.getKit(Fabric.java:551)
        at com.crashlytics.android.Crashlytics.getInstance(Crashlytics.java:191)
        at com.crashlytics.android.Crashlytics.checkInitialized(Crashlytics.java:390)
        at com.crashlytics.android.Crashlytics.logException(Crashlytics.java:210)
        at by.chemerisuk.cordova.firebase.FirebaseCrashPlugin.logError(FirebaseCrashPlugin.java:24)
        at java.lang.reflect.Method.invoke(Native Method)
        at by.chemerisuk.cordova.support.ReflectiveCordovaPlugin$1.run(ReflectiveCordovaPlugin.java:56)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6718)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

I tried to log in debug mode and in release mode but neither is working.
Furthermore I like to ask the question if crashes in debug mode will be logged?

This code fixes the issue:
import io.fabric.sdk.android.Fabric;

// [...]

@Override
protected void pluginInitialize() {
  Fabric.with(cordova.getActivity().getApplicationContext(), new Crashlytics());
}

I haven't tested if the iOS implementation needs something like that either.
Furthermore I like to suggest to wrap log, logException and setUserIdentifier in a try/catch, since my error behavior is only visible in the native app log. When encountering an exception the callbackContext error workflow should be applied.

@RTK it's better to initialize fabric SDK on demand - automatic logging does not require it.
As for logging, on js side promise rejected with an error message. It's weird to send full native stack trace on js side, because the trace is platform-dependent.

Hi @chemerisuk, thanks for your response. Do you know of any reason I experience the exception I described in my previous post? Each solution I could find referenced the Fabric initialization.

Humm I', having the same issue: Must Initialize Fabric before using singleton()

@RTK
https://firebase.google.com/docs/crashlytics/customize-crash-reports#enable_opt-in_reporting
https://firebase.google.com/docs/crashlytics/customize-crash-reports?platform=android#enable_opt-in_reporting

By default, Firebase Crashlytics automatically collects crash reports for all your app's users. To give users more control over the data they send, you can enable opt-in reporting instead.

I guess programatic methods just allow to log extra messages in Crashlytics, but require extra steps to initialize them. Personally I only use automatic error reporting.

I see, so, basically, just install the plugin and don't use the methods from the docs?
I'd suggest to update the docs and give this heads up to the users.
Also, if this is the case, how can we test that just installing the plugin it really works and would send crashes when they happen?
Tkx

I see, so, basically, just install the plugin and don't use the methods from the docs?
I'd suggest to update the docs and give this heads up to the users.
Also, if this is the case, how can we test that just installing the plugin it really works and would send crashes when they happen?
Tkx

I approved @wilsolutions oppinion updating the docs seem required since the documentation mentions these methods. Furthermore I think these methods should at least reject the promise. The documentation should hint at your links @chemerisuk to explain why the promise is rejected and how to avoid it by deactivating automatic collection.

So, this is what I did in order to test the automatic reporting.
Did edit the CordovaActivity.java, method public void onCreate(Bundle savedInstanceState) { and did throw and exception at end (throw new RuntimeException();).
Tried to load the App and it did crash as expected however I don't see the crash in the Firebase also I there is no error messages from logcat.
Please, what did you do in order to test the automatic reporting?
ty

I don't see the crashes on the dashboard. Looks likes an initialization issue:
2019-05-13 13:09:40.267 5565-5565/com.wils.dev.demoApp D/FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
2019-05-13 13:09:40.267 5565-5565/com.wils.dev.demoApp D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.
2019-05-13 13:09:40.268 5565-5565/com.wils.dev.demoApp I/FirebaseInitProvider: FirebaseApp initialization successful
2019-05-13 13:09:40.271 5565-5565/com.wils.dev.demoApp D/Fabric: Falling back to Crashlytics key lookup from Manifest
2019-05-13 13:09:40.271 5565-5565/com.wils.dev.demoApp D/Fabric: Falling back to Crashlytics key lookup from Strings
2019-05-13 13:09:40.274 5565-5565/com.wils.dev.demoApp I/CrashlyticsInitProvider: CrashlyticsInitProvider skipping initialization

@RTK it's better to initialize fabric SDK on demand - automatic logging does not require it.

Is there any method to do this right now? Would be good to expose an API to do this in order to use methods from the docs.

@gartorware I am experimenting in my fork with a dynamic initialization.
Unfortunately I was experiencing this error: https://stackoverflow.com/questions/54706847/fabric-debug-craslytic-reports-signup-build-id-missing-apply-plugin-io-fab
To fix this, the gradle plugin "io.fabric" must be applied. For the plugin to work the project level "build.gradle" file must include the following code:

buildscript {
    repositories {
        google()
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.29.0'
    }
}

I could not find any convenient cordova way to add the repo + classpath dependency to the project build.gradle file. Each solution I looked up (https://github.com/arnesson/cordova-plugin-firebase / https://github.com/sarriaroman/FabricPlugin) uses a hook to edit the gradle-file, which I am considering a dirty solution. @chemerisuk what do you think about this issue?

@RTK this code already exists at https://github.com/chemerisuk/cordova-plugin-firebase-crash/blob/master/src/android/build.gradle

So I'm interested in using this plugin, but what I'm hearing from this issue is that in its current state, it's useless for logging js errors. JS error reporting is much bigger concern for me than native. Is there a way to use the methods described in the docs?

@distinctdan you should not use this plugin for js errors logging.

Alright, sad to hear that, but thanks for the info.

@distinctdan you should not use this plugin for js errors logging.

Interesting. Why not? Our intention was to log plugins errors (captured via js) to give info about what could be failing. Some plugins does not throws Exceptions, they just caught them and reject the js wrapper promise... Maybe is this a bad design?

@RTK this code already exists at https://github.com/chemerisuk/cordova-plugin-firebase-crash/blob/master/src/android/build.gradle

unfortunately this does not work. I have tried multiple approaches, but only when these will be added to /platforms/android/app/build.gradle directy, it will work...

@RTK plugin uses gradle variable crashlyticsEnabled to disable collection when in debug mode https://github.com/chemerisuk/cordova-plugin-firebase-crash/blob/master/plugin.xml#L61. Otherwise you could be confused by error messages from you debug builds. In order to disable this you should manually remove tag <meta-data android:name="firebase_crashlytics_collection_enabled" android:value="${crashlyticsEnabled}" /> from AndroidManifest.xml.

@RTK plugin uses gradle variable crashlyticsEnabled to disable collection when in debug mode https://github.com/chemerisuk/cordova-plugin-firebase-crash/blob/master/plugin.xml#L61. Otherwise you could be confused by error messages from debug builds. In order to disable this you should manually remove tag <meta-data android:name="firebase_crashlytics_collection_enabled" android:value="${crashlyticsEnabled}" /> from AndroidManifest.xml.

This does not work either. I have set the meta-data manually to true but the error message logged remains the same... The only way I could get this to work is to add the 'io.fabric.tools:gradle:1.29.0' classpath dependency to app/build.gradle, solely referencing it in the plugin's build.gradle won't work

Yeah it would definitely be pretty cool to be able to track both native errors and js errors too.
Setting the user Id and logging different log levels for different app parts is what Firebase Crashlytics is all about after all.

@RTK plugin uses gradle variable crashlyticsEnabled to disable collection when in debug mode https://github.com/chemerisuk/cordova-plugin-firebase-crash/blob/master/plugin.xml#L61. Otherwise you could be confused by error messages from debug builds. In order to disable this you should manually remove tag <meta-data android:name="firebase_crashlytics_collection_enabled" android:value="${crashlyticsEnabled}" /> from AndroidManifest.xml.

This does not work either. I have set the meta-data manually to true but the error message logged remains the same... The only way I could get this to work is to add the 'io.fabric.tools:gradle:1.29.0' classpath dependency to app/build.gradle, solely referencing it in the plugin's build.gradle won't work

Did you end up finding a solution for this or did you give up?


Added null check

Potential fix for #3006
My current working hypothesis is:
Here is a method from RenderableWorldImpl:
    public void onChunkLoaded(Vector3i chunkCoordinates) {
        if (renderableRegion.encompasses(chunkCoordinates)) {
            chunksInProximityOfCamera.add(chunkProvider.getChunk(chunkCoordinates));
            Collections.sort(chunksInProximityOfCamera, new ChunkFrontToBackComparator());
        }
    }

We are directly adding the retrieved chunk to a list, which is then sorted. Now, java expects objects in the list to be non-null, which in turn leads to NPEs because getChunk() sometimes returns null.
Why does a chunk for which onChunkLoaded was called is null, I can't say. Maybe because the server sent a chunkLoaded request to a player, the player took some time to process the request during which server unloaded the chunk? Not sure, but I think that's the most likely thing.
We can dig into this more properly when @oniatus starts his chunk refactor.

Hooray Jenkins reported success with all tests good!

Hooray Jenkins reported success with all tests good!


Attaching a AAC policy on brand new appliance fails

When trying to attach an access control policy using config_policy_attachments, if the appliance is brand new and no resource definitions exist on the server then the attachment fails with error FBTRBA420E The create failed because the domain value was not supplied. This is because at this point the AAC has not done a pdadmin authentication and established a credential against a domain. This is documented in https://www-01.ibm.com/support/docview.wss?uid=swg21989582.
So ideally prior to the actual call to the ISAM action ibmsecurity.isam.aac.access_control.policy_attachments.config in the underlying python module, the role should call ibmsecurity.isam.aac.access_control.policy_attachments.authenticate.

Closing as realised there is a task for the first time authentication. So the issue is resolved by including that in the playbook.


Not available in Package Control

I notice this plugin isn't available in Package Control. Just wondered if you'd consider submitting it? A colleague recommended this plugin to me, but I'd have likely found it myself had it been in package control :smile:
Instructions for submitting packages are available here.

Just submitted the pull request:  https://github.com/wbond/package_control_channel/pull/4282