Service become zombie when a flow node is configured wrong

When a change node is configured wrong (value is passed in place of an object), persister become zombie.
Although all services are UP,  dojot is not operational: persister doesn't receive messages.

logs:

persister_1                   | [10/05/19 - 18:10:10] |messenger| INFO: Emitting new event message for subject device-data@admin
persister_1                   | [10/05/19 - 18:10:10] |persister| INFO: Received data: {'metadata': {'deviceid': 'a15de8', 'tenant': 'admin', 'timestamp':<PHONE_NUMBER>435}, 'attrs': {'bool': True}}
persister_1                   | [10/05/19 - 18:10:10] |persister| DEBUG: got data event b'{"metadata":{"deviceid":"a15de8","tenant":"admin","timestamp":1557511809435},"attrs":{"bool":true}}'
persister_1                   | [10/05/19 - 18:10:11] |messenger| INFO: Emitting new event message for subject device-data@admin
persister_1                   | [10/05/19 - 18:10:11] |persister| INFO: Received data: {'attrs': 'teste do nó device template', 'metadata': {'timestamp':<PHONE_NUMBER>457, 'tenant': 'admin', 'deviceid': 'd9c5c0'}}
persister_1                   | [10/05/19 - 18:10:11] |persister| DEBUG: got data event b'{"attrs":"teste do n\xc3\xb3 device template","metadata":{"timestamp":1557511810457,"tenant":"admin","deviceid":"d9c5c0"}}'

flowbroker_1                  | <18:10:10 10/05/2019> -- DEBUG: Got a message in topic 4048ed43-0920-42d5-a849-17ca17f49300.
flowbroker_1                  | <18:10:10 10/05/2019> -- DEBUG: There are 1 callbacks registered.
flowbroker_1                  | <18:10:10 10/05/2019> -- |messenger -- DEBUG: Received message: { value: <Buffer 7b 22 6d 65 74 61 64 61 74 61 22 3a 7b 22 64 65 76 69 63 65 69 64 22 3a 22 61 3
1 35 64 65 38 22 2c 22 74 65 6e 61 6e 74 22 3a 22 61 64 6d 69 6e 22 2c ... >,
flowbroker_1                  |   size: 99,
flowbroker_1                  |   key: null,
flowbroker_1                  |   topic: '4048ed43-0920-42d5-a849-17ca17f49300',
flowbroker_1                  |   offset: 2,
flowbroker_1                  |   partition: 0,
flowbroker_1                  |   timestamp:<PHONE_NUMBER>435 }
flowbroker_1                  | <18:10:10 10/05/2019> -- |messenger -- DEBUG: Emitting new event message for subject device-data@admin
flowbroker_1                  | <18:10:10 10/05/2019> -- DEBUG: Queued event [object Object]
flowbroker_1                  | <18:10:10 10/05/2019> -- DEBUG: Pre-processing event {"source":"device","message":"{\"metadata\":{\"deviceid\":\"a15de8\",\"tenant\":\"admin\",\"timestamp\":155
7511809435},\"attrs\":{\"bool\":true}}"}
flowbroker_1                  | retriving data related to admin:a15de8 from cache
flowbroker_1                  | <18:10:10 10/05/2019> -- DEBUG: [ingestor] got new device event: { metadata: { tenant: 'admin', timestamp:<PHONE_NUMBER>435 },
flowbroker_1                  |   event: 'publish',
flowbroker_1                  |   data: { attrs: { bool: true, serial: 'indefinido' }, id: 'a15de8' } }
flowbroker_1                  | [executor] will handle node switch
flowbroker_1                  | debug: Executing switch node...
flowbroker_1                  | debug: ... switch node was successfully executed.
flowbroker_1                  | [executor] hop (switch) result: [{"payload":{"bool":true,"serial":"indefinido"}}]
flowbroker_1                  | [executor] will handle node change
flowbroker_1                  | debug: Executing change node...
flowbroker_1                  | debug: ... change node was successfully executed.
flowbroker_1                  | [executor] hop (change) result: [{"payload":{"bool":true,"serial":"indefinido"},"saida":"teste do nó device template"}]
flowbroker_1                  | [executor] will handle node multi device out
flowbroker_1                  | debug: Executing multi-device-out node...
flowbroker_1                  | debug: Updating device...
flowbroker_1                  | debug: Message is: { attrs: 'teste do nó device template',
flowbroker_1                  |   metadata: { timestamp:<PHONE_NUMBER>457, tenant: 'admin' } }
flowbroker_1                  | <18:10:10 10/05/2019> -- |messenger -- DEBUG: Trying to publish someting. Current producer topics are { 'dojot.device-manager.device': { admin: '6be83756-dbff-4
064-acd7-d216b99a1d59' },
flowbroker_1                  |   'device-data': { admin: '4048ed43-0920-42d5-a849-17ca17f49300' },
flowbroker_1                  |   'dojot.notifications': { admin: '4cbde50a-6b02-4644-97bd-806875eb4f97' } }
flowbroker_1                  | debug: ... device was updated.
flowbroker_1                  | debug: ... multi-device-out node was successfully executed.
flowbroker_1                  | [executor] hop (multi device out) result: undefined
flowbroker_1                  | <18:10:11 10/05/2019> -- DEBUG: Got a message in topic 4048ed43-0920-42d5-a849-17ca17f49300.
flowbroker_1                  | <18:10:11 10/05/2019> -- DEBUG: There are 1 callbacks registered.
flowbroker_1                  | <18:10:11 10/05/2019> -- |messenger -- DEBUG: Received message: { value: <Buffer 7b 22 61 74 74 72 73 22 3a 22 74 65 73 74 65 20 64 6f 20 6e c3 b3 20 64 65 76 6
9 63 65 20 74 65 6d 70 6c 61 74 65 22 2c 22 6d 65 74 61 64 61 74 61 22 ... >,
flowbroker_1                  |   size: 116,
flowbroker_1                  |   key: null,
flowbroker_1                  |   topic: '4048ed43-0920-42d5-a849-17ca17f49300',
flowbroker_1                  |   offset: 3,
flowbroker_1                  |   partition: 0,
flowbroker_1                  |   timestamp:<PHONE_NUMBER>458 }
flowbroker_1                  | <18:10:11 10/05/2019> -- |messenger -- DEBUG: Emitting new event message for subject device-data@admin
flowbroker_1                  | <18:10:11 10/05/2019> -- DEBUG: Queued event [object Object]
flowbroker_1                  | <18:10:11 10/05/2019> -- DEBUG: Pre-processing event {"source":"device","message":"{\"attrs\":\"teste do nó device template\",\"metadata\":{\"timestamp\":155751
1810457,\"tenant\":\"admin\",\"deviceid\":\"d9c5c0\"}}"}
flowbroker_1                  | retriving data related to admin:d9c5c0 from cache
flowbroker_1                  | <18:10:11 10/05/2019> -- DEBUG: [ingestor] got new device event: { metadata: { timestamp:<PHONE_NUMBER>457, tenant: 'admin' },
flowbroker_1                  |   event: 'publish',
flowbroker_1                  |   data: { attrs: 'teste do nó device template', id: 'd9c5c0' } }
flowbroker_1                  | will ignore  /red/keymap.json
flowbroker_1                  | debug: asJson: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Objec
t],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object].
flowbroker_1                  | Received reply [{"payload":{"payload":{}},"requestId":"ff726289-2520-435d-a727-d26b77f70764"}]

iotagent-mqtt_1               | <18:10:09 10/05/2019> -- DEBUG: Authenticating MQTT client
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- |iotagent -- INFO: Getting device from http://device-manager:5000/device/a15de8
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- INFO: Parameters are: url: http://device-manager:5000/device/a15de8, headers: { authorization: 'Bearer and0IHNjaGVtYQ==.eyJzZXJ2aWNlIjoiYWRtaW4iLCJ1c2VybmFtZSI6ImlvdGFnZW50LW1xdHQifQ==.ZHVtbXkgc2lnbmF0dXJl' }, method: get, TAG
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- DEBUG: Connection authorized for
iotagent-mqtt_1               | {"pid":10,"hostname":"dfb3e494cadc","name":"MoscaServer","level":30,"time":1557511809432,"msg":"client connected","client":"admin:a15de8","v":1}
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- INFO: client up
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- DEBUG: Authorizing MQTT client admin:a15de8 to publish to /admin/a15de8/attrs
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- DEBUG: Expected topic is /admin/a15de8/attrs
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- DEBUG: Device published on topic /admin/a15de8/attrs
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- DEBUG: Authorized client admin:a15de8 to publish to topic /admin/a15de8/attrs
iotagent-mqtt_1               | {"pid":10,"hostname":"dfb3e494cadc","name":"MoscaServer","level":30,"time":1557511809433,"msg":"closed","client":"admin:a15de8","v":1}
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- INFO: client down
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- DEBUG: ignoring internal message
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- DEBUG: Published data: {"bool":true}, client: admin:a15de8, topic: /admin/a15de8/attrs
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- |messenger -- DEBUG: Trying to publish someting. Current producer topics are { 'device-data': { admin: '4048ed43-0920-42d5-a849-17ca17f49300' } }
iotagent-mqtt_1               | <18:10:09 10/05/2019> -- DEBUG: ignoring internal message
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- DEBUG: Authenticating MQTT client
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- |iotagent -- INFO: Getting device from http://device-manager:5000/device/a15de8
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- INFO: Parameters are: url: http://device-manager:5000/device/a15de8, headers: { authorization: 'Bearer and0IHNjaGVtYQ==.eyJzZXJ2aWNlIjoiYWRtaW4iLCJ1c2VybmFtZSI6ImlvdGFnZW50LW1xdHQifQ==.ZHVtbXkgc2lnbmF0dXJl' }, method: get, TAG
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- DEBUG: Connection authorized for
iotagent-mqtt_1               | {"pid":10,"hostname":"dfb3e494cadc","name":"MoscaServer","level":30,"time":1557512217799,"msg":"client connected","client":"admin:a15de8","v":1}
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- INFO: client up
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- DEBUG: Authorizing MQTT client admin:a15de8 to publish to /admin/a15de8/attrs
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- DEBUG: Expected topic is /admin/a15de8/attrs
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- DEBUG: Device published on topic /admin/a15de8/attrs
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- DEBUG: Authorized client admin:a15de8 to publish to topic /admin/a15de8/attrs
iotagent-mqtt_1               | {"pid":10,"hostname":"dfb3e494cadc","name":"MoscaServer","level":30,"time":1557512217801,"msg":"closed","client":"admin:a15de8","v":1}
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- INFO: client down
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- DEBUG: ignoring internal message
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- DEBUG: Published data: {"bool":true}, client: admin:a15de8, topic: /admin/a15de8/attrs
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- |messenger -- DEBUG: Trying to publish someting. Current producer topics are { 'device-data': { admin: '4048ed43-0920-42d5-a849-17ca17f49300' } }
iotagent-mqtt_1               | <18:16:57 10/05/2019> -- DEBUG: ignoring internal message
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- DEBUG: Authenticating MQTT client
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- |iotagent -- INFO: Getting device from http://device-manager:5000/device/a15de8
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- INFO: Parameters are: url: http://device-manager:5000/device/a15de8, headers: { authorization: 'Bearer and0IHNjaGVtYQ==.eyJzZXJ2aWNlIjoiYWRtaW4iLCJ1c2VybmFtZSI6ImlvdGFnZW50LW1xdHQifQ==.ZHVtbXkgc2lnbmF0dXJl' }, method: get, TAG
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- DEBUG: Connection authorized for
iotagent-mqtt_1               | {"pid":10,"hostname":"dfb3e494cadc","name":"MoscaServer","level":30,"time":1557512601059,"msg":"client connected","client":"admin:a15de8","v":1}
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- INFO: client up
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- DEBUG: Authorizing MQTT client admin:a15de8 to publish to /admin/a15de8/attrs
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- DEBUG: Expected topic is /admin/a15de8/attrs
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- DEBUG: Device published on topic /admin/a15de8/attrs
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- DEBUG: Authorized client admin:a15de8 to publish to topic /admin/a15de8/attrs
iotagent-mqtt_1               | {"pid":10,"hostname":"dfb3e494cadc","name":"MoscaServer","level":30,"time":1557512601061,"msg":"closed","client":"admin:a15de8","v":1}
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- INFO: client down
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- DEBUG: ignoring internal message
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- DEBUG: Published data: {"int":0}, client: admin:a15de8, topic: /admin/a15de8/attrs
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- |messenger -- DEBUG: Trying to publish someting. Current producer topics are { 'device-data': { admin: '4048ed43-0920-42d5-a849-17ca17f49300' } }
iotagent-mqtt_1               | <18:23:21 10/05/2019> -- DEBUG: ignoring internal message

flow created:

flowbroker_1                  | debug: Creating new flow...
flowbroker_1                  | debug: Checking 'enabled' field...
flowbroker_1                  | debug: ... 'enabled' field was checked.
flowbroker_1                  | debug: Parsing new flow...
flowbroker_1                  | debug: New flow: ParsedFlow {
flowbroker_1                  |   heads: [],
flowbroker_1                  |   devices: [],
flowbroker_1                  |   templates: [],
flowbroker_1                  |   nodes: {},
flowbroker_1                  |   red:
flowbroker_1                  |    [ { id: 'Aa9bcdea6d132f', type: 'tab', label: 'Flow 1' },
flowbroker_1                  |      { id: 'A3c2de66e2570fa',
flowbroker_1                  |        type: 'device template in',
flowbroker_1                  |        z: 'Aa9bcdea6d132f',
flowbroker_1                  |        name: '',
flowbroker_1                  |        device_template: { id: 8 },
flowbroker_1                  |        status: 'false',
flowbroker_1                  |        device_template_id: 8,
flowbroker_1                  |        x:<PHONE_NUMBER>078125,
flowbroker_1                  |        y:<PHONE_NUMBER>2939453,
flowbroker_1                  |        wires: [ [ 'A24f051ccffebae' ] ] },
flowbroker_1                  |      { id: 'Ad58df69ab18508',
flowbroker_1                  |        type: 'change',
flowbroker_1                  |        z: 'Aa9bcdea6d132f',
flowbroker_1                  |        name: '',
flowbroker_1                  |        rules:
flowbroker_1                  |         [ { t: 'set',
flowbroker_1                  |             p: 'saida',
flowbroker_1                  |             pt: 'msg',
flowbroker_1                  |             to: 'teste do nó device template',
flowbroker_1                  |             tot: 'str' } ],
flowbroker_1                  |        action: '',
flowbroker_1                  |        property: '',
flowbroker_1                  |        from: '',
flowbroker_1                  |        to: '',
flowbroker_1                  |        reg: false,
flowbroker_1                  |        x:<PHONE_NUMBER>901367,
flowbroker_1                  |        y:<PHONE_NUMBER>980469,
flowbroker_1                  |        wires: [ [ 'A129a1707890dd9' ] ] },
flowbroker_1                  |      { id: 'A24f051ccffebae',
flowbroker_1                  |        type: 'switch',
flowbroker_1                  |        z: 'Aa9bcdea6d132f',
flowbroker_1                  |        name: 'TRUE',
flowbroker_1                  |        property: 'payload.bool',
flowbroker_1                  |        propertyType: 'msg',
flowbroker_1                  |        rules: [ { t: 'true' } ],
flowbroker_1                  |        checkall: 'true',
flowbroker_1                  |        outputs: 1,
flowbroker_1                  |        x:<PHONE_NUMBER>705078,
flowbroker_1                  |        y:<PHONE_NUMBER>1860352,
flowbroker_1                  |        wires: [ [ 'Ad58df69ab18508' ] ] },
flowbroker_1                  |      { id: 'A129a1707890dd9',
flowbroker_1                  |        type: 'multi device out',
flowbroker_1                  |        z: 'Aa9bcdea6d132f',
flowbroker_1                  |        name: '',
flowbroker_1                  |        device_source: 'configured',
flowbroker_1                  |        devices_source_dynamic: '',
flowbroker_1                  |        devices_source_dynamicFieldType: 'msg',
flowbroker_1                  |        devices_source_configured: [ 'd9c5c0' ],
flowbroker_1                  |        attrs: 'saida',
flowbroker_1                  |        _devices_loaded: true,
flowbroker_1                  |        x:<PHONE_NUMBER>921875,
flowbroker_1                  |        y:<PHONE_NUMBER>3916016,
flowbroker_1                  |        wires: [] } ] }
flowbroker_1                  | debug: Ignoring 'tab' node.
flowbroker_1                  | debug: ... flow was successfully parsed.
flowbroker_1                  | debug: Inserting flow into the database...
flowbroker_1                  | debug: ... new flow was successfully inserted into the database.

Affected Version: 61.1-20190423

I believe @giovannicuriel resolved it in the PR dojot/history#43

Test NOK.

Data is published and the flow is executed.
Persister has been locked.
Real-time does not work.

Tested on Version: 62.2-20190524

Test OK.
The solution of #893 corrected the problem.

wrong configuration:

flowbroker_1                  | <17:42:29 04/06/2019> -- ERROR: [ingestor] device-manager event ingestion failed: TypeError: Cannot create property 'protocol' on string 'configuraÃ§Ã£o errada do nÃ³ change'
flowbroker_1                  | <17:42:29 04/06/2019> -- ERROR: Problem on pre process event. Reason: Failed to process device event

persister_1                   | [04/06/19 - 17:42:30] |messenger| INFO: Emitting new event message for subject device-data@admin
persister_1                   | [04/06/19 - 17:42:30] |persister| INFO: Received data: {'metadata': {'deviceid': '9dabf6', 'tenant': 'admin', 'timestamp':<PHONE_NUMBER>465}, 'attrs': {'int': 1}}
persister_1                   | [04/06/19 - 17:42:30] |persister| DEBUG: got data event b'{"metadata":{"deviceid":"9dabf6","tenant":"admin","timestamp":1559670147465},"attrs":{"int":1}}'
persister_1                   | [04/06/19 - 17:42:30] |messenger| INFO: Emitting new event message for subject device-data@admin
persister_1                   | [04/06/19 - 17:42:30] |persister| INFO: Received data: {'attrs': 'configuraÃ§Ã£o errada do nÃ³ change', 'metadata': {'timestamp':<PHONE_NUMBER>479, 'tenant': 'admin', 'deviceid': '329685'}}
persister_1                   | [04/06/19 - 17:42:30] |persister| DEBUG: got data event b'{"attrs":"configura\xc3\xa7\xc3\xa3o errada do n\xc3\xb3 change","metadata":{"timestamp":1559670148479,"tenant":"admin","deviceid":"329685"}}'
persister_1                   | [04/06/19 - 17:42:30] |persister| WARNING: Expected attribute dictionary, got <class 'str'>
persister_1                   | [04/06/19 - 17:42:30] |persister| WARNING: Bailing out

correct configuration:

persister_1                   | [04/06/19 - 17:55:40] |messenger| INFO: Emitting new event message for subject device-data@admin
persister_1                   | [04/06/19 - 17:55:40] |persister| INFO: Received data: {'metadata': {'deviceid': '9dabf6', 'tenant': 'admin', 'timestamp':<PHONE_NUMBER>950}, 'attrs': {'int': 1}}
persister_1                   | [04/06/19 - 17:55:40] |persister| DEBUG: got data event b'{"metadata":{"deviceid":"9dabf6","tenant":"admin","timestamp":1559670939950},"attrs":{"int":1}}'
persister_1                   | [04/06/19 - 17:55:42] |messenger| INFO: Emitting new event message for subject device-data@admin
persister_1                   | [04/06/19 - 17:55:42] |persister| INFO: Received data: {'attrs': {'str': 'configuraÃ§Ã£o correta dos nÃ³s'}, 'metadata': {'timestamp':<PHONE_NUMBER>448, 'tenant': 'admin', 'deviceid': '329685'}}
persister_1                   | [04/06/19 - 17:55:42] |persister| DEBUG: got data event b'{"attrs":{"str":"configura\xc3\xa7\xc3\xa3o correta dos n\xc3\xb3s"},"metadata":{"timestamp":1559670941448,"tenant":"admin","deviceid":"329685"}}'

Tested on Version: 62.3-20190603


W: GPG error: https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 Release:

This error occurred after adding the 3.6 mongo signature according to the installation instructions

The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 58712A2291FA4AD5
W: The repository 'https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 Release' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.

I used the instructions here to resolve the GPG error.


[Glue] Implement delete_job

@bblommers I applied the last small change. If all the checks are good, please merge my changes 🙂


Have a process for updating libraries.md

libraries.md is kinda outdated (and has been for a while) because there's not a process to update it.  That process shouldn't be terribly difficult to come up with.

That information is now located at https://github.com/emissary-ingress/emissary/blob/master/DEPENDENCIES.md and is maintained on a regular basis as part of the build.


Race condition in AndroidContextPlugin breaking segment.device.id initialization

Describe the bug
After migrating to analytics-kotlin we noticed that a lot of events are send with an empty context.device.id property.
As per the official documentation, device id initialization is asynchronous, so we were expecting very few initial events (i.e. Application Installed) to be sent with empty device id. However, we can clearly see that for a lot of users, the device id is not set at all and remains an empty string for the entire user session.
To Reproduce
Tested the issue using Samsung Galaxy S9+, Android Emulator and Nexus 5. We managed to reproduce this issue locally once, when using Nexus 5 (our slowest device). The issue is difficult to reproduce as it is caused by a race condition.
Steps to reproduce the behavior:

Initialize Segment SDK with collectDeviceId == false (this is important)
Start sending events
Observe than segment.device.id property is always set to "" (if the race condition occurs)

Expected behavior
segment.device.id should initially be set to an empty string "" (default value when the SDK is initializing), but it should instantly be set to anonymousId.
Platform (please complete the following information):

Library Version in use: 1.13.1
Platform being tested: Android
Integrations in use: Firebase, Amplitude, Braze, Appsflyer, custom plugins (this is probably unrelated)

Additional context
This is most probably a race condition in AndroidContextPlugin:
internal fun getDeviceId(collectDeviceId: Boolean, fallbackDeviceId: String): String {
        if (!collectDeviceId) {
            return storage.read(Storage.Constants.AnonymousId) ?: "" // RACE CONDITION between loading `anonymousId` and setting it properly in `storage` / shared prefs
        }
[...]
    }

When AndroidContextPlugin runs its setup and tries to load Storage.Constants.AnonymousId before the shared preference file is initialized, getDeviceId() will return an empty string - and will not fall back to fallbackDeviceId.
Because of the code in loadDeviceId method, that empty string will be considered a valid device id:
if (deviceId != fallbackDeviceId) { // deviceId == "", fallbackDeviceId == UUID.randomUUID()
    device = updateJsonObject(device) {
        it[DEVICE_ID_KEY] = deviceId
    }
}

When using DRM-based ID (collectDeviceId == true), the issue does not occur, because the code will always fall back to fallbackDeviceId when a timeout or an error occurs.
Fix suggestions

add proper synchronization so that getDeviceId() is called only after shared preferences file is initialized with defaults (i.e. so that anonymousId can be read properly).
use fallbackDeviceId properly when collectDeviceId == false

hi @kslesinski-godaddy. Thanks for report. I'm looking into this.

While we're waiting for the official fix, are there any suggestions on how/if we can tackle this client-side? I.e. delaying AndroidContextPlugin initialization until storage is initialized properly, or using a custom plugin to overwrite segment.device.id with random/properly re-initialized UUID?

hey @kslesinski-godaddy, yes, you can overwrite it through plugin like this:
class DeviceIdPlugin : EventPlugin {
    override val type: Plugin.Type = Plugin.Type.Enrichment
    override lateinit var analytics: Analytics

    override fun execute(event: BaseEvent): BaseEvent? {
        event.context = updateJsonObject(event.context) { context ->
            context["device"]?.safeJsonObject?.let { device ->
                context["device"] = updateJsonObject(device) {
                    it["id"] = analytics.anonymousId()
                }
            }
        }

        return event
    }
}

we're working on this issue. please expect a new release this week.

hey @kslesinski-godaddy, 1.13.2 is out with the fix. please have a try and let us know if you're still experiencing the issue.


Newer versions of algorithms

There are a lot of new algorithms that have been added to the aima-pseudocode repository. Please have a look at this pull request for the changes to the algorithms.

Open an issue for the task that you are willing to do.
Ask as many doubts as possible to avoid any extra work.

These algorithms may require some extra APIs to work with. You can start with the simplest task and iteratively add more complex parts later.

Do we need to implement the new algorithm? Or the task is something else?

@vksngh19 You have to develop the APIs for the newer versions of the algorithms.

@samagra14  I would like to work on this issue. I have seen the pseudo code for the  algorithms Monte carlo tree search, correcting square root etc., I would like to work on them. Can you please tell me the further steps ??

Hi @JameerBabu. You should first go to the AIMA4e branch and check if there exist APIs that can support the algorithm. If they exist your task is easy, just implement the algorithm. If they don't, then I will advise you to read a bit regarding the algorithm (for eg what kind of data structures are required etc.). And then design the respective APIs along with the algorithm.


Circular Queue Data structure in C-Plus-Plus

Proposal
Circular Queue data structure is an enhancement of linear queue data structure. It is a linear data structure based on the First In First Out (FIFO) principle.
Have you read the Contributing Guidelines on Pull Requests?
Yes, I have read the contributing guidelines.
Motivation
I am participating in GSSoC'21, so I want to contribute to this project. Apart from this, I found this repository very knowledgeable, consisting data structures and algorithms of different programming languages.
Pitch
There are some disadvantages of linear queue, which can be easily solved using circular queue data structure. Circular queue are very helpful in real world also. Circular queue data structure is useful in memory management in our electronic devices. The scheduling of tasks done by CPU, is also a real world application of circular queue. So, circular queue is a very important data structure, which helps us to solve many simple and complex problems.
I would like to implement circular queue data structure using C-Plus-Plus programming language, with proper comments.
So, I request you to kindly assign this issue to me.

You can assign the Issue for yourself by using the '/assign' command. Make sure The algorithm/ data structure you are trying to add doesn't already exist. read the Doc before you proceed

@anuragmukherjee2001 Hi, I assigned you. Happy Coding!😊


[SPARK-6505][SQL]Remove the reflection call in HiveFunctionWrapper

according @liancheng‘s  comment in https://issues.apache.org/jira/browse/SPARK-6505,  this patch remove the  reflection call in HiveFunctionWrapper, and implement the functions named "deserializeObjectByKryo" and "serializeObjectByKryo" according the functions with the save name in
org.apache.hadoop.hive.ql.exec.Utilities.java

Can one of the admins verify this patch?

ok to test

Test build #30848 has started for   PR 5660 at commit 0b522a7.

Would like to add some background about this change:
Spark SQL repackaged Hive jars to remove unnecessary shading and dependencies. One of them is Kryo. Hive shades Kryo to package org.apache.hive.com.esotericsoftware. Normally this should be fine. However, MapR replaces Spark SQL's repackaged Hive dependencies with genuine Hive packages, thus the reflection call mentioned in this PR couldn't find Kryo because it's moved into another package. On the other hand, the two reflected methods are actually quite simple. That's why we chose to reimplement them in Spark SQL instead of using them via reflection.

add to whitelist

Test build #30849 has started for   PR 5660 at commit 0b522a7.

Test build #30848 has finished for   PR 5660 at commit 0b522a7.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30848/
Test PASSed.

Test build #30849 has finished for   PR 5660 at commit 0b522a7.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30849/
Test PASSed.

Test build #30892 has started for   PR 5660 at commit ae61ec4.

Test build #30892 has finished for   PR 5660 at commit ae61ec4.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30892/
Test PASSed.

can this patch be merged? :)

Thanks for working on this! I'm merging this to master.

@baishuo what's your Apache JIRA username? I can assign you to the JIRA to credit you.

hi @srowen ,  my jira name is also baishuo
https://issues.apache.org/jira/secure/ViewProfile.jspa?name=baishuo
thanks :)


Postgre - Should Never Have A Field Length For TEXT

This PR fixes an issue where a table definition in Forge has a length value for type TEXT. Postgre does not support a length for the TEXT type.
Its probably possible for a developer just to set length null when developing on Postgre. This PR is useful when using the same table definition across different DBMS.
The following query works fine for Mysql, Sqlite but fails on Postgre:
        $this->forge->addColumn('actions', [
            'summary'     => ['type' => 'varchar', 'constraint' => 255],
            'description' => ['type' => 'text', 'constraint' => 255],
        ]);

https://www.postgresql.org/docs/current/datatype-character.html
Checklist:

[x] Securely signed commits
[x] Component(s) with PHPDoc blocks, only if necessary or adds value
[ ] Unit testing, with >80% coverage
[ ] User guide updated
[x] Conforms to style guide

Thank you for sending PR.
If this PR is a bug fix, it should go to develop branch.

Its not a bug per se, You can assign the constraint as null and it will not cause a problem.
This PR just allows using the same table definition to work between databases.
Put another way, Forge allows you to assign an illegal constraint. This PR will just ignore such illegal constraint if exists.
SQLSRV has same issue. I can add here.

Okay, this PR is an enhancement.
Can you add a test to prove this enhancement?

Added test and another fix for SQLSRV.
SQLSRV adds a constraint whenever a column is defined with a default value.  Whenever dropColumn is called the current code drops all indexes associated with the column but it doesn't drop the default constraints. These use a slightly different command as well: Instead of DROP INDEX they use DROP CONSTRAINT. These constraint names are generated by the system and do not list in getIndexData(). There has been an attempt to name these in the modifyColumn() method however they are not named in createTable(). These are kind of annoying and I'm not sure why they don't automatically drop with the column name.

The test demonstrates that these two simple commands can now execute successfully on all DBMS
        $result = $this->forge->addColumn('user', [
            'text_with_constraint' => ['type' => 'text', 'constraint' => 255, 'default' => ''],
        ]);

        $result = $this->forge->dropColumn('user', 'text_with_constraint');

Without this PR Postgre and SQLSRV would fail.

Shows what I know, I didn't think MySQL could have a length spec for TEXT 🤦♂

It seems you used git merge, but we recommend to use git rebase when updating the PR branch.
See https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/workflow.md#updating-your-branch


Implement REST API interface for naver api & mapgo server

This revision includes rest api interface implementation

Naver Cloud API & Open API client
Geocoding API interface
Naver Search API interface (building, image)
MapGo API client
MapGo server Checkin, Recommendations interface
Models for building, image, checkin and recommendation
Unit testing for rest api connection

References

https://square.github.io/retrofit/
https://www.ncloud.com/
https://developers.naver.com/docs/common/openapiguide/

@lijm1358 Thanks for reviewing !

LGTM


How to use connectedhomeip as a submodule of a real openwrt project?

Hi @ksperling-apple,
Thanks a lot for your work for building matter on Openwrt - this is very useful stuff! 😀
With the help of the openwrt gn package and scripts/configure I managed to build my matter bridge daemon p44mbrd, but needed to patch two small obstacles, see below.
The basic difference between the provided example build of lighting-app in the matter-netmon package and my setup is that in the latter, connectedhomeip is itself a submodule of the main project, while in the former the root repo is connectedhomeip itself, and the project lives in the example subdirectory. To make it work:

scripts/configure requires that --project is relative to the connectedhomeip directory (but ../.. style paths work), and insists that the project is a subdirectory, and not a parent (check on line 93). I just commented out line 92 and 93 for now. I think --project should also accept absolute paths outside connectedhomeip, I'll post a PR for that.

the new openwrt build system option PKG_SOURCE_SUBMODULES only works on the first level, so with connectedhomeip as a submodule it does not help, because it is one level deeper where we want to select only a few modules from the large set in the SDK. Also before trying to build in openwrt, I solved this by adding update = none and ignore = all to all entries in .gitmodules.

These fixes need using a modified connectedhomeip tree, but as I need some not-yet accepted PR anyway, for now I use my own fork where I rebase my set of small mods onto master from time to time.
But I guess any non-example matter app will not have its sources in the connectedhomeip tree, and most of them would want to avoid pulling 34GB of unneeded submodules - so establishing generic mechanisms in the SDK to do so would be nice 😉

@ksperling-apple As promised, I just posted a PR in connectedhomeip to allow scripts/configure to work with project roots outside the chip repo: https://github.com/project-chip/connectedhomeip/pull/29627

Thanks, merged project-chip/connectedhomeip#29627. The Matter SDK has scripts/checkout_submodules.py that attempts to help with checking out the right submodules (though what's considered required for a particular platform is still pretty broad), but that doesn't really with an OpenWrt style build.
Maybe PKG_SOURCE_SUBMODULES can be modified to work with nested submodules? It would involve dropping the --recursive option in favor of something like working out which paths are nested inside other paths and then separately initializing those iteratively.

Maybe PKG_SOURCE_SUBMODULES can be modified to work with nested submodules? It would involve dropping the --recursive option in favor of something like working out which paths are nested inside other paths and then separately initializing those iteratively.

What about:

not loading submodules at all in the first step (PKG_SOURCE_SUBMODULES:=skip)
then downloading the CHIP repo without --recursive in a separate step as described in Download Override in the OpenWrt Wiki.
then patching .gitmodules to disable auto-download of all the submodules not needed (could be the standard OpenWrt patch mechanism doing that)
only then calling git submodule update --init --recursive

I think working with nested submodules is something the OpenWrt build system should support without complicated contortions in the package Makefile... alternatively hooking in a custom download mechanism could be made less complicated (the re-packaging into a tar should really be separate from the actual download to make it easier to implement a custom method).
I think this is an issues for core OpenWrt though rather than this repo.

I think working with nested submodules is something the OpenWrt build system should support without complicated contortions in the package Makefile... alternatively hooking in a custom download mechanism could be made less complicated (the re-packaging into a tar should really be separate from the actual download to make it easier to implement a custom method).
I think this is an issues for core OpenWrt though rather than this repo.

Basically, I agree. It would be nice to have better support for nested submodules in OpenWrt, and worth trying to find a implementation for that.
But as your PKG_SOURCE_SUBMODULES  patch does not seem to make it into 23.05, let alone 22.03, or at least it seems to take months (I have similar experiences with other openwrt contribution attempts) and I am developing a OpenWrt based real world app now, I am wondering about more pragmatic solutions right now 😉. But here's the wrong place, I agree.

Yeah it's unfortunate that that patch didn't get picked up for 23.05 at least...


Update recommended value for HDUCLASS in hduclass.rst

This request updates the recommended value for the HDUCLASS header keyword from "CTA" to "GADF" as already introduced e.g. here.

There was quite some discussion here on what value to put for this key in the context of CTA:
https://github.com/cta-observatory/ctapipe/issues/308#issuecomment-296487892
It's mostly me suggesting to put "GADF" for "gamma-astro-data-formats" and @jknodlseder  saying we should use OGIP.
I think when we ( @TarekHC , @cboisson, @bkhelifi ) discussed this at the DL3 f2f meeting, we agreed to put "GADF" and did that everywhere in the spec, and this one remaining mention of "CTA" is an oversight?
Just for context: @lmohrmann is updating the HESS FITS exporter, and we want to finalise this now that the HESS FITS test data release is approved, and produce files that are up to this spec.
To me "CTA" (what's mentioned there now) isn't a great choice, since this is something that existing IACTs also want to use and it's not been approved or decided on in CTA, and other places in the spec currently mention "GADF" already.
I would suggest to merge this now, and then if / when in CTA there's a DL3 group that can decide something in the coming years, the discussion on whether to put "OGIP" or "CTA" instead can continue.

I would suggest to merge this now, and then if / when in CTA there's a DL3 group that can decide something in the coming years, the discussion on whether to put "OGIP" or "CTA" instead can continue.

I'm ok with this change. In fact, in every IRF described, we suggest to use the "GADF", so probably this line was simply missing to be updated.
So I would not re-open the discussion and directly merge it.


ValueError when using the latest commit

Hi, I am facing the ValueError when I try to train dmhouse with the code from the latest commit. The error is gone if I revert the commit(2c87a2d).

Hi, I am facing the ValueError when I try to train dmhouse with the code from the latest commit. The error is gone if I revert the commit(2c87a2d).

Hi, I encountered the same problem. I tried to change the code as you proposed, but the error still exists.

Hi, I am facing the ValueError when I try to train dmhouse with the code from the latest commit. The error is gone if I revert the commit(2c87a2d).

I noticed there are only two sample batches in the tuple based on the code in storage.py, so is this the core problem?


Potential typo? super().init()

In this code :
https://github.com/michuanhaohao/reid-strong-baseline/blob/master/modeling/backbones/resnet.py#L93
super().init() should be replaced by super(ResNet, self).init()

Thank you very much. Did you encounter a bug with 'super().init()'?

yes, I guess super keyword doesn't work without class name

Python2 or Python3? We have not encountered it yet.

Oh I'm using python2

We recommend using Python3.
This is another repo implemented by Python2.
https://github.com/wangguanan/Pytorch-Person-REID-Baseline-Bag-of-Tricks


Strip the generated default values for :required fields

Lancaster generates default values for required record fields. I believe this to be undesired behavior, and have submitted an issue here: https://github.com/deercreeklabs/lancaster/issues/20
Chad brings up an interesting discussion there, which I intend to have here.
This issue, however, is simply about short-term remedy of the problem that validation is made impossible by the generation of a default value.
So: change the code such that required fields will have no default values, allowing for validation by end users.

It's debatable whether this is actually a bug, but since it is a current feature that doesn't work as desired, I think "bug" serves as a decent description.

By the way, note this in the Avro spec:

default: A default value for this field, only used when reading instances that lack the field for schema evolution purposes. The presence of a default value does not make the field optional at encoding time.

After having read more about Avro and schema evolution, it is almost certainly desired to have default values for fields.
I've laid it out in more detail here.


[BUG] Urgent - Chat downloader broken again

Basic information

Program version: 0.2.6
Operating system: Linux / arm64

Describe the bug
ChatDownloader().get_chat(chatLink);
failing to get any stream's chat data , for example :
chatLink =  https://www.twitch.tv/videos/1827185140

So kind of Twitch to completely change everything :') Fixing now.

Should be fixed in v0.2.7 (https://pypi.org/project/chat-downloader/)
Update with:
pip install --upgrade chat-downloader

Let me know if you have any other questions.


Enable per pod PID namespace setting

If the pid namespace mode is set to POD, then the container's namespace
should be set to the namespace of the pod infra container.
To test this, make sure to add FEATURE_GATES="${FEATURE_GATES},PodShareProcessNamespace=true" to hack/local-cluster-up.sh - this enable the feature.
Signed-off-by: umohnani8<EMAIL_ADDRESS>

I think the CRI-O side of this needs to be a bit more nuanced than “ignore EnableSharedPIDNamespace if the kublet asks us to”.  Can we deprecate EnableSharedPIDNamespace?  What purpose does it serve now that CRI covers that idea?
#1280 is also in flight in this space, although it needs a rebase.  I'm fine with this PR going in first and don't expect significant conflicts; just something to be aware of.

I think that we can get rid of the flag as kube has a similar flag to enable/disable the feature.

Removed the EnableSharedPIDNamespace flag.
@mrunalp should I get rid of the namespace tests as the flag has been removed? Not sure how to test my changes as the pid namespace mode will be coming from kube.

@umohnani8 Yes, we should remove the existing tests that use that flag and add another integration test that sets pid namespace sharing to pod in the sandbox config. Take a look at my PR to update k8s that we merged. It has some similar changes to network namespace handling in the integration tests.

Added test and update the main.yaml file.
Vendoring from last commit of release-1.10.

/test all

Since we have tests passing, should we merge now and get the man page fixes in a different PR?

@runcom should we run tests on this?

/test all

restarted travis

/test all


Error in /instant.io-master/server/index.js

Hello,
just leaving a bugfix that there is an issue with code located here
app.use(express.static(path.join(__dirname, '../static')))
my editor does not seem to like express.static
(static comes up as red)
Let me know if anyone figured it out or if it is just my coder.
Cheers
K!

This is not an issue. Your editor probably thinks static is a keyword, but it's okay to use static as a property name in JavaScript.


Autocompletion

Thanks for this extension!
I know that the name of the extension is highlight, but it would VERY useful if it would also provide autocompletion. Like https://github.com/styled-components/vscode-styled-components does.

Hi Mosh, I am glad to receive your feedback. I was intended to add this feature when I built this extension, however, it seems not easy for embedded languages at that time.
Now, I find that VSCode adds more supports on embedded language, which may make it possible. I will try to implement it.

Thanks!
My case is for Custom Web Component, because the "official" way to inject css is by strings.
Maybe you can give it as an example in an hypothetical docs' section "Typical usages" to grab some traffic from search engines :)

This issue will be closed, as I am trying to build a new extension called Power-Embedded-Langs to support more language features for embedded languages. The new extension supports basic auto-completion and hove prompt now.
It is still under development and not published to VSCode marketplace. You can try this extension by installing the current pre-release vsix at here. If you have any question, please feel free to open issues on that repo.

Thanks.
I just downloaded and tried it but probably I'm missing something.
Here is the code I've added into a .js file.
// *js.*
const script = `
  const bar = 8;
  for (let i = 0; i < ba)
`;
// *!js.*

I'd expect to get autocomplete for ba as bar but nothing.
Also, there is no highlight.

Oh, the sign pairs in the doc are raw regex patterns. So the signs should be // js and // !js in code.
I will make the doc more clear in next update.

Nice! It is working.
But notice that it's not a "real" autocomplete but the "Words autocomplete".

compared to

You are right. It is one of the reasons why I call it basic support for auto-completion.


Bug: Cannot align tables

Lexical 0.21
Applying alignment to a table doesn't take effect. Currently one cannot centre a table. I guess we are missing formatting properties on TableNode-level

In Firefox the CSS is such that the table is always full width, might make sense to tackle both at the same time if we are to support horizontal alignment for tables.

Oh wow, I didn't even realize we even have different CSS for Firefox...

Well, the CSS is the same but Firefox does not render it the same way the other engines do. I think it regressed when the column width stuff was merged #6625 due to the width: fit-content instead of width: max-content.

Since there is no support at the library level, I solved the problem in my project with an additional TableWrapper node.
It wraps the table node in an additional div, with display: flex; flex-direction: column, and align-items according to ElementNode::getFormatType.
https://github.com/user-attachments/assets/4ac12563-5200-4aee-b918-759981ac280f
Works fine overall, but it would be nice to have an out-of-the-box solution.


[CPU][ArmSME] Add -arm-sme-vector-legalization to ArmSME pipeline

This is needed to legalize vector types larger than a single SME tile, and for various small ArmSME-specific rewrites.

Could someone land this for me (I don't have commit access).
Thanks in advance :)

Could someone land this for me (I don't have commit access).
Thanks in advance :)

Done! (Enabled auto merge)


Version bump: 0.10

Codecov Report
Patch and project coverage have no change.

Comparison is base (8c58e13) 68.33% compared to head (273000c) 68.33%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #379   +/-   ##
=======================================
  Coverage   68.33%   68.33%
=======================================
  Files          27       27
  Lines        3610     3610
=======================================
  Hits         2467     2467
  Misses       1143     1143

Flag
Coverage Δ

unittests
68.33% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Add support for MLFlow logger

📝 Description
This PR integrates MLFlow into Anomalib.
Addresses https://github.com/openvinotoolkit/anomalib/discussions/1206
✨ Changes
Select what type of change your PR is:

[ ] 🐞 Bug fix (non-breaking change which fixes an issue)
[ ] 🔨 Refactor (non-breaking change which refactors the code base)
[ x] 🚀 New feature (non-breaking change which adds functionality)
[ ] 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] 📚 Documentation update
[ ] 🔒 Security update

✅ Checklist
Before you submit your pull request, please make sure you have completed the following steps:

[ ] 📋 I have summarized my changes in the CHANGELOG and followed the guidelines for my type of change (skip for minor changes, documentation updates, and test enhancements).
[x ] 📚 I have made the necessary updates to the documentation (if applicable).
[ ] 🧪 I have written tests that support my changes and prove that my fix is effective or my feature works (if applicable).

For more information about code review checklists, see the Code Review Checklist.

I saw that DCO failed. I'm not sure if any of the solutions under "Details" are applicable. Could someone kindly provide some guidance or recommendations on how to address this issue?

I saw that DCO failed. I'm not sure if any of the solutions under "Details" are applicable. Could someone kindly provide some guidance or recommendations on how to address this issue?

Hi @DoMaLi94, it's passing now. Thanks for creating this PR.
The team will review it, and get back to you

After my new commits DCO fails again. Is it safe to follow the instructions under Details and perform a rebase in this state? My newer commits now include a Signed-off-by line :).

After my new commits DCO fails again. Is it safe to follow the instructions under Details and perform a rebase in this state? My newer commits now include a Signed-off-by line :).

it's alright, I've now set DCO to pass and triggered the CI.

The tests are failing due to 601_mlflow_logging.ipynb. We will need to have a look at it

The tests are failing due to 601_mlflow_logging.ipynb. We will need to have a look at it

The test fails due to the "magic command" !mlflow server, which runs infinitely. I'll take care of it.

Hey,
J'ai créé une intégration mlflow pour yolov9
L'architecture initale entre yolov9 et anomalib est un peu similaire
Mais l'intégration mlflow n'a pas besoin d'etre à proprement parlé un logger car les arguments peuvet être passé par variables d'environnements.
Je vous laisse jeter un oeil pour vous en inspirer, si cela vous permet de reussir à construire le logger pour Anomalib
https://github.com/WongKinYiu/yolov9/pull/87
Cheers !


-Update to RxSwift 6

Codecov Report

Merging #13 (2b41d1e) into master (cc0109a) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##            master       #13   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            4         4
  Lines          118       118
=========================================
  Hits           118       118

Flag
Coverage Δ

ios
100.00% <ø> (ø)

macos
?

tvos
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update cc0109a...2b41d1e. Read the comment docs.


Using composer to create a new page can result in a blank page and an Exception thrown

When selecting composer for certain page types in 8RC2, the user is greeted with a blank screen on the Composer page and the following error in the logs. No exception is thrown on the Composer page itself.
Exception Occurred: (folder name is wrong it's using RC2) /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Filesystem/FileLocator.php:70 Object of class Concrete\Core\Entity\Package could not be converted to string (4096)
This was working in 7, I'm assuming this is a custom attribute/block that is causing this.
It works for most of the composer pages we have but not for one. So replicating it is a problem, I'm working on trying to replicate the issue consistently now.

Just looking at the composer page, I can see something has happened to the blocks neither of them have the block types echoed out on the composer form

If I remove the block and add it again this appears to resolve the issue

The question is what in the upgrade (from 7-8) removed the block type from the composer form.

Managed to get the stack trace
Whoops\Exception\ErrorException thrown with message "Object of class Concrete\Core\Entity\Package could not be converted to string"

Stacktrace:
#36 Whoops\Exception\ErrorException in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Filesystem/FileLocator.php:70
#35 implode in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Filesystem/FileLocator.php:70
#34 Concrete\Core\Filesystem\FileLocator:getCacheKey in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Filesystem/FileLocator.php:93
#33 Concrete\Core\Filesystem\FileLocator:getRecord in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Foundation/Environment.php:52
#32 Concrete\Core\Foundation\Environment:getRecord in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Page/Type/Composer/Control/BlockControl.php:308
#31 Concrete\Core\Page\Type\Composer\Control\BlockControl:inc in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Page/Type/Composer/Control/BlockControl.php:255
#30 Concrete\Core\Page\Type\Composer\Control\BlockControl:render in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Page/Type/Composer/FormLayoutSetControl.php:100
#29 Concrete\Core\Page\Type\Composer\FormLayoutSetControl:render in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/elements/page_types/composer/form/output/form.php:47
#28 include in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/View/View.php:440
#27 Concrete\Core\View\View:element in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Legacy/Loader.php:39
#26 Concrete\Core\Legacy\Loader:element in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Page/Type/Type.php:1213
#25 Concrete\Core\Page\Type\Type:renderComposerOutputForm in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Application/Service/Composer.php:19
#24 Concrete\Core\Application\Service\Composer:display in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/views/panels/details/page/composer.php:11
#23 include in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/View/View.php:233
#22 Concrete\Core\View\View:renderInnerContents in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/View/View.php:211
#21 Concrete\Core\View\View:renderViewContents in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/View/AbstractView.php:151
#20 Concrete\Core\View\AbstractView:render in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Routing/ControllerRouteCallback.php:41
#19 Concrete\Core\Routing\ControllerRouteCallback:execute in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Routing/Router.php:149
#18 Concrete\Core\Routing\Router:execute in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/DefaultDispatcher.php:114
#17 Concrete\Core\Http\DefaultDispatcher:handleDispatch in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/DefaultDispatcher.php:54
#16 Concrete\Core\Http\DefaultDispatcher:dispatch in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/Middleware/DispatcherDelegate.php:39
#15 Concrete\Core\Http\Middleware\DispatcherDelegate:next in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/Middleware/ThumbnailMiddleware.php:60
#14 Concrete\Core\Http\Middleware\ThumbnailMiddleware:process in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/Middleware/MiddlewareDelegate.php:38
#13 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/Middleware/FrameOptionsMiddleware.php:39
#12 Concrete\Core\Http\Middleware\FrameOptionsMiddleware:process in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/Middleware/MiddlewareDelegate.php:38
#11 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/Middleware/CookieMiddleware.php:37
#10 Concrete\Core\Http\Middleware\CookieMiddleware:process in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/Middleware/MiddlewareDelegate.php:38
#9 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/Middleware/ApplicationMiddleware.php:29
#8 Concrete\Core\Http\Middleware\ApplicationMiddleware:process in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/Middleware/MiddlewareDelegate.php:38
#7 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/Middleware/MiddlewareStack.php:86
#6 Concrete\Core\Http\Middleware\MiddlewareStack:process in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Http/DefaultServer.php:85
#5 Concrete\Core\Http\DefaultServer:handleRequest in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Foundation/Runtime/Run/DefaultRunner.php:111
#4 Concrete\Core\Foundation\Runtime\Run\DefaultRunner:run in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/src/Foundation/Runtime/DefaultRuntime.php:102
#3 Concrete\Core\Foundation\Runtime\DefaultRuntime:run in /var/www/public/updates/concrete<IP_ADDRESS>RC1/concrete/dispatcher.php:39
#2 require in /var/www/public/concrete/bootstrap/configure.php:52
#1 require in /var/www/public/concrete/dispatcher.php:18
#0 require in /var/www/public/index.php:2

Running a var_dump on $keys I get the following:
array(7) {
[0]=> string(11) "application"
[1]=> string(7) "package"
[2]=> object(Concrete\Core\Entity\Package)#1321 (8) { ["pkgID":protected]=> int(8) ["pkgHandle":protected]=> string(8) "custom_pkg" ["pkgVersion":protected]=> string(6) "1.0.10" ["pkgIsInstalled":protected]=> bool(true) ["pkgAvailableVersion":protected]=> NULL ["pkgDescription":protected]=> string(38) "Package to contain client domain logic" ["pkgDateInstalled":protected]=> object(DateTime)#1318 (3) { ["date"]=> string(26) "2016-11-11 12:46:10.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } ["pkgName":protected]=> string(4) "custom" }
[3]=> string(4) "core"
[4]=> string(6) "blocks"
[5]=> string(6) "button"
[6]=> string(12) "composer.php" } Array


Add content template

I think making content a template would be useful for people who want to do some automatic processing across the whole site. An example of that can be to enable people to add support for wiki-style links (as described here: https://github.com/matcornic/hugo-theme-learn/pull/469) on their own, even if Hugo or the theme don't support it natively.
People can just add something like this to their own site under layouts/partials/content.html:
{{- $wikilinks := .Content | findRE `\[\[[^\]]+\]\]` }}
{{- $content := .Content }}
{{- range $wikilinks }}
    {{- $text := . }}
    {{- $title := $text | strings.TrimPrefix "[[" | strings.TrimSuffix "]]" }}
    {{- range where site.Pages "Params.title" $title | first 1 }}
        {{- $content = replace $content $text (printf `<a href="%s">%s</a>` .RelPermalink $title) }}
    {{- end }}
{{- end }}
{{- $content | safeHTML }}

Another use case I have is that I'd like to automatically "linkify" JIRA tickets with a given pattern XYZ-1234.

The patch seems reasonable and I don't expect any migration issues.
Nevertheless I must admit, although I am a programmer in real life, I am a go and Hugo noob. Some syntax still puzzles me and I have only hit the tip of Hugo's feature iceberg.

Will the template for content also make it easier for applying content changes on a mass/site level ?  I'm in the middle of making changes to suit the site content, and wonder if I have to redo some changes in the event of a complete re-installation of the theme ?  At present the content changes are simply copied from a backup.

Will the template for content also make it easier for applying content changes on a mass/site level ?

That depends on the kind of changes you want to apply. But in my general fealing I'ld say "Yes".

wonder if I have to redo some changes in the event of a complete re-installation of the theme ?

Without knowing you site's code it's hard to say. In the best case you have to only move some code around from one file to the overriden content template.


Can't shuffle at compile time

Currently, this module can't be used to shuffle an array of random numbers at compile time.
Here is some sample code:
import random/xorshift

proc randomArray( seed: uint64 ): array[0..255, int] =
    for i in 0..255:
        result[i] = i
    var prng = initXorshift128Plus(seed)
    prng.shuffle(result)

const table = randomArray( 12345 )

The compile error is:
.nimble/pkgs/random-0.5.1/random/common.nim(97, 16) Error: VM is not allowed to 'cast'

I can't do anything about this. Cast is required in this implementation. Not only shuffle is unavailable at compile time. In fact pretty much only the things that are NOT in common.nim are available.


inclusion of extra themes

Hi,
I use sigal for a photo gallery that integrates with a static site built with jekyll and lunr js search. To acheive this, I built a custom theme which can be viewed at swalladge/sigal-jekyll. It's not exactly polished yet for publishing quality, but wondering if anyone maintaining sigal would be interested in it - either for linking to from your docs (I can't seem to find any other alternate themes?) or considering including with this project.
Interested to hear anyone's thoughts. 😃

Hi @swalladge ,
To my knowledge there are not many alternative themes, which is a bit sad. I'm happy to include more choices directly in sigal, to make it easier for users. And if someday there are too many themes we can consider splitting them from the main package, but I doubt it!

@saimn great! I'll see about polishing it up and submitting a pull request. :)

I have also created my own version ( https://github.com/153957/153957-theme/ ) of the galleria theme.
Perhaps we could add a list of all known custom themes to the docs ( http://sigal.saimon.org/en/latest/themes.html ), and also indicate the existence of those themes in the readme.

@153957 - Yes sure, we could add a (sub)section for external themes. Please feel free to do so.
I saw that your theme must be activated using the plugins setting instead of theme. Maybe this could be improved ? I understand that you need of way to specify the theme path, I think a cleaner way would be something like this:
import 153957_theme
theme = 153957_theme.get_path()

However I don't get what the 153957_theme.full_menu plugin is for ?

FWIW, here's another theme with justified gallery: https://github.com/krylovsk/sigal-justlight

@krylovsk - Nice! I added a link in the wiki.


Integration does not load in 0.102.x

Integration does not load in 0.102.x, likely some behind the scene changes.

Same, I'm getting the following on the logs:
Thu Dec 05 2019 14:47:41 GMT-0800 (Pacific Standard Time) Error while setting up platform mail_and_packages Traceback (most recent call last):   File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 148, in _async_setup_platform     task = async_create_setup_task()   File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 104, in async_create_setup_task     platform.setup_platform, AttributeError: module 'custom_components.mail_and_packages.sensor' has no attribute 'setup_platform'

@jseidl This is due to having configuration entries in your config files, I'm working on allowing that as well as the integration configuration.

I've added the mail_package.yaml from includes/packages/ file into my packages folder. Isn't supposed to add that?

No the instructions need adjusting as well, sorry, all you need is the custom_component directory.

Where should the configuration for the email server be entered?

I've found the integration, took a while because the strings are not showing up for me.

This should be fixed in PR #17


Ionic2 Modals not Clickable

Hi,
First, thank you for this amazing plugin.
I'm trying to use this plugin for our app and we have a big problem with putting HTML elements on top of the map. Our app works with modals and each time we push a Modal to the NavController the modal is not clickable.
We already tried data-tap-disabled="true", scroll="false" on ion-content. The main problem is that we cannot put all the modals inside the map Div.
Please help us !!!

The current version does not support the modal dialog.
You have to put HTML elements UNDER the map div.
https://github.com/mapsplugin/cordova-plugin-googlemaps/wiki/Map#put-html-elements-on-the-map

Or you can disable the map during the modal dialog is displayed.
map.setClickable(true / false)

ok perfect, I'll try


Fixed register functionality bug

Related Issue or bug

Fixed register functionality bug

Fixes: #284
Describe the changes you've made
A clear and concise description of what you have done to successfully close your assigned issue. Any new files? or anything you feel to let us know!
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Code style update (formatting, local variables)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce.
Describe if there is any unusual behaviour of your code(Write NA if there isn't)
A clear and concise description of it.
Checklist:

[ ] My code follows the style guidelines of this project.
[ ] I have performed a self-review of my own code.
[ ] I have commented my code, particularly in hard-to-understand areas.
[ ] I have made corresponding changes to the documentation.
[ ] My changes generate no new warnings.
[ ] I have added tests that prove my fix is effective or that my feature works.
[ ] New and existing unit tests pass locally with my changes.
[ ] Any dependent changes have been merged and published in downstream modules.

Screenshots

Original
Updated

original screenshot
updated screenshot

@coding-geek21 Rebase the code and add a new commit.

@coding-geek21 Rebase the code and add a new commit.

@swapnilsparsh  Done


Fix test explorer zsh

WHAT
copilot:summary
copilot:poem
copilot:emoji
WHY
I couldn't get the single tests to run on zsh. I wasn't getting anything useful out of the message Test run exitCode.
I took what what it was running and got this output:
 dotnet test "/workspaces/IcedTasks/tests/IcedTasks.Tests/IcedTasks.Tests.fsproj" --framework:"net7.0" --logger:"trx;LogFileName=/home/vscode/.vscode-server/data/User/workspaceStorage/cb18f208f0b841c60c9d3407677860ba/Ionide.Ionide-fsharp/TestResults/tests/IcedTasks.Tests/IcedTasks.Tests.trx" --noLogo --no-build --filter (FullyQualifiedName=IcedTasks.CancellableTask.CancellableTaskBuilder.Return.Simple Return)
zsh: unknown username ''

Turns out we need to quote the filter expression.
Future things:

I still couldn't get any useful logs out of the stdout/stderr to dotnet test Process.execWithCancel. Not sure what we need to do here to make this better.
It seems we always assume the process doesn't fail. It used the last run which passed and showing incorrect.

we should probably delete the old trx before each test run
Maybe we should do the promise.reject here instead

HOW
copilot:walkthrough

cc @farlee2121

Makes sense to me.
I'd hoped that appending the process output to the test console would help with diagnosing most problems, but there are some issues that still don't return useful information.
That's part of why I output the test command to the F# - Test Adapter output channel.


Staged completions

Can we get a check box or some kind of indicator that a job has progress pass stage 1 or stage 2. At the moment the only way to see this is to see the budgeted and acutal job planning lines.
I'd like to see at an overview what job tasks percentage is completed and a bi report to match.

Document details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b7d0e112-8f96-e1b0-ce39-4998bc7db75e
Version Independent ID: 5fe8db51-1f8b-2a0b-a22a-f243448ac043
Content: Job Tasks using Resources and Time Sheets - Business Central
Content Source: business-central/projects-manage-projects.md
Service: dynamics365-business-central
GitHub Login: @edupont04
Microsoft Alias: edupont

Hi Ben,
Thank you for your feedback! Since this is a feature request rather than a correction to the docs, you might want to make the suggestion on the Ideas site at https://aka.ms/bcideas


Add changelog information to CONTRIBUTING information

1. Why is this change necessary?
I always forget that the information on the guidelines for the changelog are located in adr.
2. What does this change do, exactly?
This PR adds a link to the document in the CONTRIBUTING.md which I first look at if I search for this document.
Is a changelog for this change required? :thinking:
3. Describe each step to reproduce the issue or behaviour.
Make a change and forget how exactly you should write the changelog.
4. Please link to the relevant issues (if any).
-
5. Checklist

[ ] I have written tests and verified that they fail without my change
[x] I have squashed any insignificant commits
[ ] I have created a changelog file with all necessary information about my changes
[ ] I have written or adjusted the documentation according to my changes
[ ] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfil them.

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/NEXT-11728
Please use this issue to track the state of your pull request.

Thank you for your contribution, @aragon999 ! :tada: :grin:


CS: Ordering use statements

Should I do sth else in this PR @Ocramius ?

@keradus I'd keep this sort of CS fix as last due to the huge amount of possible conflicts with PRs still open for 2.4.0

I see. Thanks for info!

Closing. The size of this is huge, and I think it will be easier to do this successfully when we do the component split following the 2.4 release.

:(


Proper alignment of the footer

The content to be assembled in a div bar of the footer.Please assign me gssoc'24 extd badge and hacktoberfest badge.

I would like to work on this issue , as I have a strong background in CSS and HTML. Please assign me under GSSOC'24 extended


read-text-dirs: add option for reading labels from subdirectories

Added an option for specifying a root directory so that its subdirectories could become labels (equivalent for listing all of them on the command line).
This is similar to mallet's import-dir.  This is a convenience feature, particularly applicable when the number of labels is large.

Thanks!


How to add Full-Text Search into 2017-CU16

Since we are not able to enable Full-Text Search through environment variable as we do with Agent, I was trying to follow the code in mssql-agent-fts-ha-tools.
And then, I changed the code below to eliminate the rest of the file maintenance.
FROM mcr.microsoft.com/mssql/server:2017-CU16-ubuntu
RUN wget -O /etc/apt/sources.list.d/mssql-server-2017.list https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2017.list && \
    export DEBIAN_FRONTEND=noninteractive && \
    apt-get update && \
    apt-get install -y mssql-server-fts && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists

Next, I realized installing mssql-server-fts installed mssql-server "again". So I wonder if the version it installed is different than the original mcr.microsoft.com/mssql/server:2017-CU16-ubuntu image, or did it install it into the same place?
ii  mssql-server             14.0.3223.3-15    amd64             Microsoft SQL Server Relational Database Engine
ii  mssql-server-fts         14.0.3223.3-15    amd64             Microsoft SQL Server Full Text Search.

Which could be a problem when you have a new latest version (such as 2017-CU17) of the mssql-server-fts which then will install that even I derived from 2017-CU16-ubuntu
I tried to locate the Dockerfile to see how did you install the mssql-server but I couldn't find it in anywhere, and the one in this repo is two years old.
So, to understand it better, can you provide me a link to see Dockerfile of the mcr.microsoft.com/mssql/server:2017-CU16-ubuntu, please? If it is an internal thing, can you put me to the correct path?
I am looking forward to having an environment variable for Full-Text search too.

You're getting two installed because of your first line FROM mcr.microsoft.com/mssql/server:2017-CU16-ubuntu
Go back to https://github.com/Microsoft/mssql-docker/blob/master/linux/preview/examples/mssql-agent-fts-ha-tools/Dockerfile and use the FROM similar to that file

The following dirty hack worked for me (2019-CU9 official container running ubuntu 18.04). I downloaded the corresponding mssql-server-fts package as per https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list and installed it ignoring all the dependencies via dpkg.
The container is no production use for me, so this quick solution was just fine for my testing purposes.


CMS 5-RC. Regression tests: Option to reset an MFA method doesn't work proper with YubiKey

Description
After I did reset, I cannot use new MFA (YubiKey) method. Form shows loader, but then again require to insert key.
In Network section in browser I get "500 Internal Server Error" or "message: "Verification failed: Unable to load the data"".
All works fine with MFA auth with authenticator app.
Steps to reproduce

I'm already existing user and using MFA method with YubiKey
I go to /admin/myprofile
I have a list of MFA which have been applied to my account
I click the option to reset an MFA method and follow the instructions
I log out
I log back in, and can use the new MFA setting post-reset (Failed)

When trying to use my YebiKey I get a 401 response with:
{"message":"Verification failed: Unable to load the data"}

I wasn't able to replicate on SCPS or locally
I did replicate on SC - graylog wasn't too helpful though, all I got was this:
2023-04-24T17:13:51.357472+12:00 ip-11-22-33-44 SilverStripe_audit[22650]: INFO<EMAIL_ADDRESS>(ID: 116) failed to verify using MFA method {"method":"SilverStripe\\WebAuthn\\Method","attempts":1,"attempt_limit":5} {"real_ip":null,"url":"/Security/login/default/mfa/verify/web-authn?SecurityID=12345678902c549e2fd6eaebe483a3e10085cc40","http_method":"POST","server":"somesite-uat.sites.silverstripe.com","referrer":"https://somesite-uat.sites.silverstripe.com/Security/login/default/mfa"}

Tested theory that it was related to the removal of padding issue with the upgrade to web-auth/webauthn-lib 4.1.0+ - https://github.com/silverstripe/silverstripe-webauthn-authenticator/commit/0523fed85f2813852b903bc20e1663e3ebcb6972
I did try moving around where the padding removal was happening - i tried moving it to auth.js btoa(...) on my local - however while this did strip the trailing = for the request send to the server (normally it sends 1x =), not surprisingly I got back a {"errors":["Registration failed: Unable to load the data"]} - also as said before I can't replicate this issue locally so it seems very likely that it's not a javascript issue
This is a hard one, looks like we need to debug UAT, somehow

PR merged


Go Toolchain Version Does Not Exist

When I try to build the project it fails. The reason is the go version is specified as '1.22' in go.mod file. When I try to build, I get:
go: downloading go1.22 (darwin/arm64)
go: download go1.22 for darwin/arm64: toolchain not available

this is as expected since there is no downloadable release for go 1.22 (because it is not a specific version). The release version should be go 1.22.0. So, we should either use 1.22.0 or specify toolchain version with:
toolchain go1.22.0

Starting with go1.21, the first release format is changed to 1.N.0. See: https://go.dev/doc/go1.21

toolchain directive is optional though?

It is optional but if it is not specified it is the same as go version. In this case, that version does not exist.

I'm still unclear. Plenty of projects do what we do at the moment and they also work fine.
https://sourcegraph.com/search?q=context:global+go\+1.22%24+file:go.mod&patternType=regexp&sm=0

Some of those specify explicit go toolchain versions:
https://sourcegraph.com/github.com/etcd-io/etcd/-/blob/go.mod?L5
https://sourcegraph.com/github.com/hashicorp/vault/-/blob/go.mod?L15
https://sourcegraph.com/github.com/authelia/authelia/-/blob/go.mod
I think the rest specify it in different places?
We don't have to specify a specific version in go.mod file. In that case, is there a script in this repo that I can run to build the project? I read the README, but couldn't find such a script. Also, thank you for the quick responses :)

I'm fairly sure if you have go1.22 installed on your machine, "go build" would work just fine.

You're right. I checked my local version. I was on go1.21.3. Since the go.mod file doesn't specify a toolchain version nor I have GOTOOLCHAIN environment variable set, go was trying to download go1.22 toolchain. Because it doesn't exist, I was getting the error I posted. I updated my go version to latest and now I can build the project since go tries to use the toolchain bundled with go version and it is greater than go1.22 (I installed go1.22.5).
I guess it is a matter of taste. A downside of not specifying a patch version is, users will have to update their go version manually when the project go version is updated.


Add country code

Add a country code generator to the phone numbers!

I am working on this.

@lavika how is the progress on this issue?

@gkunwar I closed the PR due to inactivity. Do you want to work on it?

@vbrazo , Hey I noticed this issue got a PR already and almost to be fixed, I added what is needed and updated the PR because it seems to be to old.
Check it and tell me your feedback, please.


PR 2280 followups

@eugeneius -- can you review my refactoring here and confirm my refactoring here is functionality equivalent to what you had before?

This looks great - traversing the example group hierarchy is much clearer 👍

@rspec/rspec can someone review this?  Then I'll merge and get this (and #2280) released in 3.5.1.

Good work!


Touch on Edge does not drag blocks

Expected Behavior
When I touch and drag blocks on Edge, the blocks should move.
Actual Behavior
Edge triggers the "back" action - as if touch events don't call preventDefault or something.
Steps to Reproduce
On a touchscreen device running Edge, attempt to drag blocks using touch
Operating System and Browser
Windows 10 15063.138, Edge 40.15063.0.0

This is a Blockly issue, tracking here: https://github.com/google/blockly/issues/943
Edge uses pointer events instead of touch events and mouse events.  Blockl was originally built with mouse events, with touch event handling added on.  Safari will never support pointer events, so we can't move fully to them, but we should eventually be able to support them.

Pointer events are objectively better than touch events. How do you think people are going to use their fancy styli in scratch 3 without pointer events?

Hey there,
Pointer events vs touch events is actually a really interesting space.
The specification for pointer events is a living document.  It's hosted on the w3c github, but it's in active development.  You can flip through the issues there to get an idea of what sorts of complicated cases they're trying to deal with.
There are some pretty major caveats in the spec as well.  For instance:

This specification does not provide any advice on the expected behavior of user agents that support both Touch Events (as defined in [TOUCH-EVENTS]) and Pointer Events. For more information on the relationship between these two specifications, see the Touch Events Community Group.

And this one, which is relevant to any thoughts of multitouch or pinch-to-zoom:

Some user agents support touch actions triggered by interactions of multiple concurrent pointers (e.g. multi-touch). Methods for processing or associating the touch-action values of multiple concurrent pointers is out of scope for this specification.

And as mentioned above, Safari won't support pointer events at all (and were snarky in saying so).
Basically, pointer events are pretty excellent but switching to using them isn't simple for us because our core interactions don't map well to what pointer events are optimized for.  While we may be able to use the Pointer Events Polyfill to switch fully to pointer events, we need to evaluate that in terms of compressed size (among other things) and make sure that it doesn't blow up our code.
We are not ignoring them, but I have not yet had the bandwidth to work out a clean, maintainable solution for our use case.

If any of this sounded interesting to you, I encourage you to go play around with touch events and pointer events.  It's a wild and wacky world, where you have to pay attention to all sorts of browser-specific behaviour, but it'll give you a new perspective on just about every interaction with your computer or phone.

Scratch with a stylus would be a use-case I'd really like to see happen. Unfortunately, without pointer events you can't detect stylus pressure, buttons, or upside down "erase mode"
Switch to pointer events and use touch events exclusively as a fallback on Safari.

It looks like you're responding to my comment from two days ago.  You should read my longer comment from yesterday so that you have context on this issue.

Pointer event have been implemented and this appears solved.


Correction for raw affiliation Bone and Joint Institute, Western University

Correction needed for raw affiliation Bone and Joint Institute, Western University
raw_affiliation_name: Bone and Joint Institute, Western University
new_rors: 02grkyz14
previous_rors: 05167c961
works_examples: W4322617172;W4367301719;W4389938404
contact: 5fb58646fe3b09ae4b4626523ec71e74:e2f602e74933b071 @ uwo.ca

This issue was accepted and ingested by the OpenAlex team on 2024-12-19. The new affiliations should be visible within the next 7 days.


fix git clone command line by reverting upstream patch

I reviewed a change up in LLVM.org LLDB to support checking out git faster with a --depth=1 flag.  This change had bad ramifications in GitHub swift-lldb, where checking out LLVM/clang/swift/etc. through this script for normal workflow is commonplace.  The depth-limited checkout is not a useful style of repository for those longer-lived use cases.  This change reverts that commit.

@swift-ci Please test Linux platform


Order results not working...

I can't order/sort the result (highlighted issue in the snapshot, 2 showing first then 1)  using the MS SQL Connector despite of being defined in SQL query to do so.  I have not tried custom built connector at this time, but I do see that from screenshots that the results are in random in its display pattern.
I'll appreciate any tips to overcome the issue.

Thanks,

Hey @gretchunkim, is this related to any of the samples in this repo?
That said, the results you're seeing are based on search, not on the SQL query that you're using for ingesting content. This means, that the order of results will be determined by their relevance for your search query rather than one of the properties. If you'd like to use a custom order, then it would have to be a part of your query.

@waldekmastykarz
This is regarding all Graph Connectors, regardless of samples. I can provide another sample example ,here:
How can we  modify relevance of search query modified without being as a pat of query?
Expect: Since Ipad is in query, then show Ipad (1st result), then show other items order by number in asc order.

Thanks for clarifying. Issues in this repo are meant only for issues and questions about the samples in this repo, not generic connectors functionality. For generic questions, please post them on support forums such as Microsoft Q&A, Stack Overflow or on social.

Okay. I'll go ahead and do that. Thanks


Reordering files doesn't seem to work properly (--reorderFiles)

Hey,
I'm having issues with this compiler as it doesn't seem work properly. The files are reordered a bit yet it still doesn't seem to work - I'm still getting the annoying TypeError: Cannot read property 'prototype' of undefined error.
The source code of my project can be found here: github.com/Janne252/jannengine
I'm using the following command to compile the project:
tsc-plus -p "tsconfig.json" --reorderFiles (Executed in the folder where the project's index.html is located)
The generated .js seems to have a somewhat proper order but not entirely. I've also tried
/// <reference path="..." /> directives. They seem to be properly defined but for whatever reason the default TypeScript compiler seems to ignore them.
Thank you for your work so far. I hope you can assist me with this.

Fixed, for reference please see https://github.com/Microsoft/TypeScript/issues/12395

@Janne252 Sorry for taking so long to reply, I didn't notice the notifications from github. If you still have any problem of reordering files, feel free to let me know.  :)


remove duplicated control for flush mesage control

Motivation:
the !doneWork's control is duplicated and confused with runsSinceFlush > 2
if on the first run:the queue size is 20
donework will be set to true and not do flush due to the size<50 and runsSinceFlush<2.
if on the second run. the queue size is 0,
donework will be reset to false and not set to true due to no new items in queue, but the flush will be triggered due to:
if (!doneWork || runsSinceFlush > 2 || flushed.size() > 50)
now the runsSinceFlush is 2. so in actual, its function is similar with runsSinceFlush>1.
so it is no need to keep it so that the code is confused and duplicated.
Modifications:
remove it
Result:
after remove it, it will more clear and no confused.

Hi,
This repository is just a mirror and does not accept pull requests.
Could you open a JIRA ticket and attach your patch to it?
Thanks

@blerer  I had request in https://issues.apache.org/jira/browse/CASSANDRA-11070, can you take a look? 3ks


otioview effects

If a clip has effects, there should be a visual indicator in otioview so you can quickly locate them in the timeline, rather than clicking on each one hunting around for them.

addressed by #310

Addressed by #457


Prefilled tags without providing options

As mentioned in #33 I would like to be able to prefill tags by only using the v-model. Currently (v1.3.3) I need to provide :options with matching tags to prefill the tags input even when setting the new showOptions/show-options property to false.
That's redundant imo.

You can do that by using object values, otherwise Multiselect wouldn't know the label of an item.


Webpack plugins don't get added

Craco: 6.1.0
CRA: 4.0.1
I've recently tried to add the CspHtmlWebpackPlugin to my craco.config.js file in order to dynamically inject a Content Security Policy into my site only during production builds. It seems the plugin is not being added correctly, and a number of other plugins I've tested don't get added either. This is especially odd because my config already had the BundleAnalyzerPlugin plugin being added which did work.
const { whenProd } = require("@craco/craco");
const CspHtmlWebpackPlugin = require("csp-html-webpack-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  webpack: {
    plugins: {
      add: [
        ...whenProd(() => [
          // None of these get added correctly
          new HtmlWebpackPlugin(),
          new CspHtmlWebpackPlugin(),
        ], []),
      ],
    },
  },
};

I've tried ejecting from CRA and adding the same plugins to the webpack config directly and everything works as I would expect. Maybe related to this recent change? https://github.com/gsoft-inc/craco/pull/224
Here is a minimalistic repository that repros the issue:
https://github.com/AndrewCraswell/craco-bug

I'll look into it, and come back to you soon

@AndrewCraswell your repro case doesn't look like it have craco. Is it possible you forgot to push some of your code?

@alexasselin008 Sorry about that, I've just pushed an update

I am having the same issue. Additionally remove is not working for me.

@AndrewCraswell
Are you running npm run start or npm run build?
I looked at your sandbox and it should work fine if you use build.
I created a file outputWebpackConfig.js
const { createWebpackProdConfig } = require("@craco/craco");

process.env.NODE_ENV = "production"
const cracoConfig = require("./craco.config.js");
const webpackConfig = createWebpackProdConfig(cracoConfig, {},{verbose: true});

console.log(webpackConfig)

module.exports = webpackConfig;

then i ran the following command line :
node outputWebpackConfig.js

The script console logs the webpack config, where you can see the plugins and both plugin are added.
@b-zurg would you mind detailing your issue a bit more?

@alexasselin008 Thanks for the outputWebpackConfig.js script, that's a great utility for testing! The weird thing is the discrepancy between what Craco is reporting is in the config, and what's actually being executed. When you run yarn build you can verify that the CSP the plugin should inject into the index.html file is never added.
<meta http-equiv="Content-Security-Policy" content="base-uri 'self'; object-src 'none'; script-src 'unsafe-inline' 'self' 'unsafe-eval' 'nonce-5c504VCl7tqV5T87ckQxUA==' 'nonce-dU8Pu5WgPBXD7M02R2B+Gg==' 'nonce-SU0gjUzE62GbUHoh9Afdpw=='; style-src 'unsafe-inline' 'self' 'unsafe-eval' 'nonce-tL5Q1BDaTYqEUp4oCH/X1w=='">

However, if I eject, and add the same plugin in the same order that Craco reported having added it, everything works as expected and the plugin is executed.
I've added a PR to the repro repository to show how just ejecting and adding the plugin works:
https://github.com/AndrewCraswell/craco-bug/pull/1
It's worth mentioning that I've experienced this with a number of plugins as well, this isn't the only one.
As an aside, there's also some wonkiness with the Craco remove plugin functionality. Take for example this config:
module.exports = {
  webpack: {
    plugins: {
      remove: [...whenProd(() => ["HtmlWebpackPlugin"], [])],
      add: [
        ...whenDev(
          () => [
            {
              inject: true,
              template: paths.appHtml,
            },
          ],
          []
        ),
        ...whenProd(
          () => [
            new HtmlWebpackPlugin({
              inject: true,
              template: paths.appHtml,
              minify: {
                removeComments: true,
                collapseWhitespace: true,
                removeRedundantAttributes: true,
                useShortDoctype: true,
                removeEmptyAttributes: true,
                removeStyleLinkTypeAttributes: true,
                keepClosingSlash: true,
                minifyJS: true,
                minifyCSS: true,
                minifyURLs: true,
              },
            }),
            new CspHtmlWebpackPlugin(),
          ],
          []
        ),
      ],
    },
  },
};

My expectation is that this would remove the HtmlWebpackPlugin which comes default with CRA, then add the HtmlWebpackPlugin and CspHtmlWebpackPlugin plugins. What actually occurs is that the no instances of HtmlWebpackPlugin make it into the config at all.

As an aside, there's also some wonkiness with the Craco remove plugin functionality. Take for example this config:
module.exports = {
  webpack: {
    plugins: {
      remove: [...whenProd(() => ["HtmlWebpackPlugin"], [])],
      add: [
        ...whenDev(
          () => [
            new HtmlWebpackPlugin({
              inject: true,
              template: paths.appHtml,
            }),
          ],
          []
        ),
        ...whenProd(
          () => [
            new HtmlWebpackPlugin({
              inject: true,
              template: paths.appHtml,
              minify: {
                removeComments: true,
                collapseWhitespace: true,
                removeRedundantAttributes: true,
                useShortDoctype: true,
                removeEmptyAttributes: true,
                removeStyleLinkTypeAttributes: true,
                keepClosingSlash: true,
                minifyJS: true,
                minifyCSS: true,
                minifyURLs: true,
              },
            }),
            new CspHtmlWebpackPlugin(),
          ],
          []
        ),
      ],
    },
  },
};

My expectation is that this would remove the HtmlWebpackPlugin which comes default with CRA, then add the HtmlWebpackPlugin and CspHtmlWebpackPlugin plugins. What actually occurs is that the no instances of HtmlWebpackPlugin make it into the config at all.

It's hard to tell if this is a problem with Craco, or with HtmlWebpackPlugin. With more testing, I found that any plugin that requires HtmlWebpackPlugin doesn't work when added via the Craco config. But it does work if ejected and added to the Webpack config directly.
The only way I've been able to get these plugins to work from the Craco config is by (1) removing the HtmlWebpackPlugin plugin from the Webpack config in CRA, and adding it into the Craco config. That is to say, it's not enough to just add a second copy of the plugin via Craco. Furthermore, when removing HtmlWebpackPlugin from the CRA config and adding via Craco, that will break the other plugins in the CRA Webpack config (InterpolateHtmlPlugin and InlineChunkHtmlPlugin both rely on it).
A workaround is to remove the CRA plugins via Craco, then also use Craco to add a new instance configured in an identical way, then add any new plugins (ex: CspHtmlWebpackPlugin) that also depend on HtmlWebpackPlugin. This is how it would look:
module.exports = {
  webpack: {
    plugins: {
      remove: [...whenProd(() => ['HtmlWebpackPlugin', 'InterpolateHtmlPlugin ', 'InlineChunkHtmlPlugin'], [])],
      add: [
        ...whenProd(
          () =>
            [
              new HtmlWebpackPlugin({
                inject: true,
                template: paths.appHtml,
                minify: {
                  removeComments: true,
                  collapseWhitespace: true,
                  removeRedundantAttributes: true,
                  useShortDoctype: true,
                  removeEmptyAttributes: true,
                  removeStyleLinkTypeAttributes: true,
                  keepClosingSlash: true,
                  minifyJS: true,
                  minifyCSS: true,
                  minifyURLs: true,
                },
              }),
              new InterpolateHtmlPlugin(),
              new CspHtmlWebpackPlugin(),
              shouldInlineRuntimeChunk && new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/runtime-.+[.]js/]),
            ].filter(Boolean),
          []
        ),
      ],
    },
  }
};

This should work, except for the issue mentioned in the previous comment about the remove directive occurring after the add, making it impossible to replace any plugin defined in the CRA Webpack config. I've submitted a PR with a small change to resolve that and at least enable the workaround to function:
https://github.com/gsoft-inc/craco/pull/245

This the fix that enables a workaround is merge, I'm going to close this. I suspect the issue is related to weirdness in the HtmlWeboackPlugin module. This theory is slightly confirmed seeing that Craco has its own plugin which wraps InterpolateHtmlPlugin and has to do special work to get it to function as expected.

I think this issue might be related to this comment
So far I came accross 2 things:

plugins added by craco.webpack.plugins.add  are prepended to the beginning of plugins array. However, cspHtmlWebpackPlugin doc explicitly says it depends on hooks provided by htmlWebpackPlugin. So its necessary to first remove the plugin and then add it in the correct order.
cspHtmlWebpackPlugin only generates hashes for scripts that are already in the html file (based on the comment above). Again, by only adding cspHtmlWebpackPlugin no hashes will be generated because InterpolateHtmlPlugin and InlineChunkHtmlPlugin are called later on, so there’s nothing to be signed.

What might solve the issue (feature request) would be pushing new plugins to the end of plugins array (or have this configurable.)

So I would propose changing this
function addPlugins(webpackConfig, webpackPlugins) {    webpackConfig.plugins = webpackPlugins.concat(webpackConfig.plugins || []);}

into something like this:
function addPlugins(webpackConfig, webpackPlugins) {    webpackConfig.plugins = (webpackConfig.plugins || []).concat(webpackPlugins);}

I am not sure if this would be a breaking change tho.