bug: Update from 4.3.1 -> 4.4.0 adds ThreadManagerException to software

4.3.1 -> 4.4.0

Overview
I currently am maintaining the software package opentronsfastapi (https://github.com/Koeng101/opentronsfastapi) which allows you to easily build fastapis that run on opentrons themselves. Basically, integrating opentrons with other hardware is way too clunky currently, so we've build software to present the opentrons as a REST server that you can pass parameters to (NOT passing python scripts).
The last update, 4.4.0, has caused our software to stop working, as the following exception is raised when run on real opentrons hardware:
INFO:     <IP_ADDRESS>:49982 - "POST /api/test_competent_cells?version_only=false HTTP/1.1" 500 Internal Server Error
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "usr/lib/python3.7/site-packages/uvicorn/protocols/http/httptools_impl.py", line 385, in run_asgi
  File "usr/lib/python3.7/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
  File "usr/lib/python3.7/site-packages/fastapi/applications.py", line 149, in __call__
  File "usr/lib/python3.7/site-packages/starlette/applications.py", line 102, in __call__
  File "usr/lib/python3.7/site-packages/starlette/middleware/errors.py", line 181, in __call__
  File "usr/lib/python3.7/site-packages/starlette/middleware/errors.py", line 159, in __call__
  File "usr/lib/python3.7/site-packages/starlette/exceptions.py", line 82, in __call__
  File "usr/lib/python3.7/site-packages/starlette/exceptions.py", line 71, in __call__
  File "usr/lib/python3.7/site-packages/starlette/routing.py", line 550, in __call__
  File "usr/lib/python3.7/site-packages/starlette/routing.py", line 227, in handle
  File "usr/lib/python3.7/site-packages/starlette/routing.py", line 41, in app
  File "usr/lib/python3.7/site-packages/fastapi/routing.py", line 197, in app
  File "usr/lib/python3.7/site-packages/fastapi/routing.py", line 148, in run_endpoint_function
  File "./opentronsfastapi/__init__.py", line 198, in inner
    ctx = opentrons_env.get_protocol_api(apiLevel)
  File "usr/lib/python3.7/site-packages/opentrons/execute.py", line 93, in get_protocol_api
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/thread_manager.py", line 130, in __init__
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/thread_manager.py", line 135, in managed_thread_ready_blocking
opentrons.hardware_control.thread_manager.ThreadManagerException: Failed to create Managed Object

The machine appears to get upset at this line - https://github.com/Koeng101/opentronsfastapi/blob/5cbed98c755123051887f38f1966a185664c8b2d/opentronsfastapi/init.py#L198 where I establish a new context to be used.
This new code was added by @ahiuchingau in 475ee25cd1aa3d85accae926c69cac30e920d112 on (https://github.com/Opentrons/opentrons/commit/475ee25cd1aa3d85accae926c69cac30e920d112#diff-daa3772563c5ebc4de4a12da9e046e1612d382a5b7adcf6d1b0eb8a841304b64 , great commit message btw).
For context in opentronsfastapi - we basically have a global lock mechanism for protocols that are currently running using an SQLite server (that also acts as an activity log). I know that opentrons has a local lock built into the software, but it isn't very easy to hook that onto data to, say, tell a user which protocol is currently running, while maintaining a historical log of the activity.
Once the protocol gets a lock, it simulates the protocol (this works just fine). It then gets a protocol context, passes this into a thread that runs the protocol itself, and returns to the user a confirmation that the protocol has begun, along with a process ID and a version hash for the protocol's function. The step of get_protocol_api is what is failing here.
Any ideas of how I can fix this? I'm not too familiar with the low-downs of how this is implemented or ways I could get around it. Thanks!
Steps to reproduce
You can run our example app on a real machine to raise this error.
Current behavior
Currently, I get the above error.
Expected behavior
I expect to be able to use this ctx in our software.

Sorry that you've run into this. We are currently in a long holiday weekend, but can put time into this next week.
A couple questions:

Do you run into the same issue when using a simulator?
Sadly the the ThreadManagerException is not super helpful. The ThreadManager is simply calling this method API.build_hardware_controller(). For the sake of seeing the actual exception, could you call API.build_hardware_controller() in your code and share the exception raised?

Hey @amitlissack meant to run this today, but was taking a long holiday weekend in the other direction. Will test (2) early tomorrow morning.
I do not get the same issue when running in a simulator.

I probably can confirm the issue from another perspective. I'm currently using jupyter notebooks to implement custom remote control, similar as how it is described in the documentation section regarding jupyter notebooks. We use a gen 2 temperature module and since the latest update we are unable to obtain a protocol context through the get_protocol_api method. It fails with the same error mentioned in the initial post but in addition I have a stack trace regarding the temperature module communication:
Exception in Thread Manager build
Traceback (most recent call last):
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/thread_manager.py", line 152, in _build_and_start_loop
  File "usr/lib/python3.7/asyncio/base_events.py", line 573, in run_until_complete
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/api.py", line 191, in build_hardware_controller
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/module_control.py", line 36, in build
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/module_control.py", line 116, in register_modules
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/module_control.py", line 63, in build_module
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/modules/utils.py", line 37, in build
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/modules/tempdeck.py", line 79, in build
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/modules/tempdeck.py", line 241, in _connect
  File "usr/lib/python3.7/site-packages/opentrons/drivers/temp_deck/driver.py", line 258, in get_device_info
  File "usr/lib/python3.7/site-packages/opentrons/drivers/temp_deck/driver.py", line 353, in _get_info
  File "usr/lib/python3.7/site-packages/opentrons/drivers/temp_deck/driver.py", line 299, in _send_command
AssertionError: not connected

The assertion error is triggered due to the temperature module's lock not being available / initialized.
However, control and access of the module using the opentrons app is working. With the module being powered off, I'm able to obtain a ProtocolContext and control the robot. @amitlissack, do you have any additional modules connected to your test setup?
Info:
Server Version: 4.4.0
Firmware Version: v1.1.0-25e5cea
Jupyter Cell:
import opentrons.execute
protocol = opentrons.execute.get_protocol_api('2.11')
protocol.home()

Failed to initialize character device, will not be able to control gpios (lights, button, smoothiekill, smoothie reset). Only one connection can be made to the gpios at a time. If you need to control gpios, first stop the robot server with systemctl stop opentrons-robot-server. Until you restart the server with systemctl start opentrons-robot-server, you will be unable to control the robot using the Opentrons app.
Exception in Thread Manager build
Traceback (most recent call last):
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/thread_manager.py", line 152, in _build_and_start_loop
  File "usr/lib/python3.7/asyncio/base_events.py", line 573, in run_until_complete
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/api.py", line 191, in build_hardware_controller
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/module_control.py", line 36, in build
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/module_control.py", line 116, in register_modules
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/module_control.py", line 63, in build_module
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/modules/utils.py", line 37, in build
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/modules/tempdeck.py", line 79, in build
  File "usr/lib/python3.7/site-packages/opentrons/hardware_control/modules/tempdeck.py", line 241, in _connect
  File "usr/lib/python3.7/site-packages/opentrons/drivers/temp_deck/driver.py", line 258, in get_device_info
  File "usr/lib/python3.7/site-packages/opentrons/drivers/temp_deck/driver.py", line 353, in _get_info
  File "usr/lib/python3.7/site-packages/opentrons/drivers/temp_deck/driver.py", line 299, in _send_command
AssertionError: not connected
---------------------------------------------------------------------------
ThreadManagerException                    Traceback (most recent call last)
<ipython-input-4-03058a0ad874> in <module>()
      1 import opentrons.execute
      2 import time
----> 3 protocol = opentrons.execute.get_protocol_api('2.11')
      4
      5

/usr/lib/python3.7/site-packages/opentrons/execute.pyc in get_protocol_api(version, bundled_labware, bundled_data, extra_labware)

/usr/lib/python3.7/site-packages/opentrons/hardware_control/thread_manager.pyc in __init__(self, builder, *args, **kwargs)

/usr/lib/python3.7/site-packages/opentrons/hardware_control/thread_manager.pyc in managed_thread_ready_blocking(self)

ThreadManagerException: Failed to create Managed Object

@d-raith thanks for all that info.
By any chance is the environment variable ENABLE_VIRTUAL_SMOOTHIE defined in your jupyter setup?

I've already downgraded the system to 4.3.1 in order to continue development. The variable is not set in this configuration and  it's probably the same for 4.4.0 as long as the default behavior didn't change with the update as we do not make use of it in our code.

@d-raith  ENABLE_VIRTUAL_SMOOTHIE was a long shot but an easy explanation. I do not have a tempdeck to test with. I'll continue digging.
Can you verify that you have only have one tempdeck connected?

@amitlissack Yes, there is only one temp deck connected.

I have a temp deck connected as well. I can disconnect it and try again

If you stop the opentrons robot server on the raspberry pi with systemctl stop opentrons-robot-server does that help things?

@sfoster1 I tried it, but it didn't help at least for my part. Given that @Koeng101 also uses a temp module, I'm pretty certain that this is the same or at least a closely related issue.

Following up on behalf of @Koeng101 (same lab):

@amitlissack: Temp module is related to the issue. Our custom software, opentronsfastapi, is unsuccessful (fails with ThreadManagerException) in any instance where a Temp module is on and connected to the OT-2. That is, fails regardless of whether the particular protocol actually declares the Temp module in code (ctx.load_module("temperature module", 4)). Disconnect the Temp module, and opentronsfastapi for protocols which don't need a Temp module regains functionality.

We have been able to reproduce the problem in our lab. We will update you all when we know more.

@Laura-Danielle Great to know this is fixed! Will there be an update release soon to fix this bug? Thanks

Hey @Koeng101, we will be doing our next release around the end of July.

Glad to hear that the issue has been resolved, looking forward to the release.
Thanks a lot for the quick response and great soft- and hardware!


Pressing Media keys in terminal after changing bell sound replays the bell

Regressed in #11511
Repro steps

change the bell sound to honk,
Emit a bell (tab in bash with an empty cmdline is easy)
press the media Play button with the Terminal focused

Expected
Media toggles play/pause
Actual
get honk

HAHAHAHAHA does it also show up in the media play flyout provided by the OS?


Remove unused ClassifyConcern class

This class mostly consisted of unused code that was originally from Curate.

@tpendragon @jeremyf ?

We use Hyrax::ClassifyConcern.new.all_curation_concern_classes, but we can always change it to what's in this PR. Breaking change, though.

@tpendragon can you show me where you're using it?

https://github.com/pulibrary/plum/blob/ce34a948414084fc49c8e34cf66ef28d9bcd20f9/app/controllers/welcome_controller.rb

@jcoyne It's trivial, I'm not blocking this PR over it: https://github.com/pulibrary/plum/blob/master/app/controllers/welcome_controller.rb#L3. It's just the definition of breaking - seems safe to ship with 2.0 though.

@tpendragon Sounds good. I think Hyrax.config.curation_concerns would be a reasonable replacement, right?

@jcoyne Yes, like I said I can change it to that.

Yes. This is something to remove. At one point we, at Notre Dame, needed to handle what work types existed and what were "on the horizon". This class can go away!

Consensus achieved.


Move organ templates

What's this PR do?
I had different screens of the organ donation modal live in lodash templates, but we don't really need that since most of the markup is fine with being on the page on pageload. This PR moves all the mark up for the modal into the tpl.php and then we just use a template for the fields because they are dynamically added to the page after page load.
How should this be reviewed?
You should still see the modal and move through the experience when organ donation is turned on in a node.

👍


🚀 feat: URL起動に失敗した場合にSnackBarでその旨を表示する

Issue #145

Codecov Report

Merging #154 (fdb2d30) into develop (d8bede4) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff            @@
##           develop     #154   +/-   ##
========================================
  Coverage    99.81%   99.81%
========================================
  Files           51       51
  Lines         1083     1109   +26
========================================
+ Hits          1081     1107   +26
  Misses           2        2

Flag
Coverage Δ

unittests
99.81% <100.00%> (+<0.01%)
:arrow_up:

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

Impacted Files
Coverage Δ

lib/config/app.dart
100.00% <100.00%> (ø)

...presentation/common/components/hyperlink_text.dart
100.00% <100.00%> (ø)

...ib/presentation/common/state/launch_url_state.dart
100.00% <100.00%> (ø)

lib/presentation/repo/components/detail_view.dart
100.00% <100.00%> (ø)

...sentation/repo/components/order_toggle_button.dart
100.00% <100.00%> (ø)

.../presentation/repo/components/readme_markdown.dart
100.00% <100.00%> (ø)

...esentation/repo/components/search_text_button.dart
100.00% <100.00%> (ø)

...resentation/repo/components/search_text_field.dart
100.00% <100.00%> (ø)

...on/repo/components/sort_selector_bottom_sheet.dart
100.00% <100.00%> (ø)

lib/presentation/repo/state/list_view_state.dart
100.00% <100.00%> (ø)

... and 5 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 d8bede4...fdb2d30. Read the comment docs.


[HUDI-3408] fixed the bug that BUCKET_INDEX cannot process special ch…

…aracters
Tips

Thank you very much for contributing to Apache Hudi.
Please review https://hudi.apache.org/contribute/how-to-contribute before opening a pull request.

What is the purpose of the pull request
BucketIdentifier use split(":") to split  recordKeyName and recordKeyValue,  if current recordKeyValue is  ":::"  ,  above split give a wrong result.
test code：
   Seq("mor").foreach { tableType =>
     val tableName = generateTableName
     val tablePath = s"${new Path(tmp.getCanonicalPath, tableName).toUri.toString}"
     spark.sql(
       s"""
          |create table $tableName (
          |  id int, comb int, col0 int, col1 bigint, col2 float, col3 double, col4 decimal(10,4), col5 string, col6 date, col7 timestamp, col8 boolean, col9 binary, par date
          |) using hudi
          | location '$tablePath'
          | options (
          |  type = '$tableType',
          |  primaryKey = 'id,col0,col5',
          |  preCombineField = 'comb',
          |  hoodie.index.type = 'BUCKET',
          |  hoodie.bucket.index.num.buckets = '900'
          | )
          | partitioned by (par)
          """.stripMargin)
     spark.sql(
       s"""
          | insert into $tableName values
          | (1,1,11,100001,101.01,1001.0001,100001.0001,':::','2021-12-25','2021-12-25 12:01:01',true,'a01','2021-12-25'),
          | (2,2,12,100002,102.02,1002.0002,100002.0002,'a000002','2021-12-25','2021-12-25 12:02:02',true,'a02','2021-12-25'),
          | (3,3,13,100003,103.03,1003.0003,100003.0003,'a000003','2021-12-25','2021-12-25 12:03:03',false,'a03','2021-12-25'),
          | (4,4,14,100004,104.04,1004.0004,100004.0004,'a000004','2021-12-26','2021-12-26 12:04:04',true,'a04','2021-12-26'),
          | (5,5,15,100005,105.05,1005.0005,100005.0005,'a000005','2021-12-26','2021-12-26 12:05:05',false,'a05','2021-12-26')
          |""".stripMargin)
   }
 }
}```

Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
 at org.apache.hudi.index.bucket.BucketIdentifier.lambda$getBucketId$2(BucketIdentifier.java:46)
 at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1321)
 at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
 at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
 at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
 at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
 at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
 at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
 at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
 at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
 at org.apache.hudi.index.bucket.BucketIdentifier.getBucketId(BucketIdentifier.java:46)
 at org.apache.hudi.index.bucket.BucketIdentifier.getBucketId(BucketIdentifier.java:36)
 at org.apache.hudi.index.bucket.SparkBucketIndex$1.computeNext(SparkBucketIndex.java:80)
 at org.apache.hudi.index.bucket.SparkBucketIndex$1.computeNext(SparkBucketIndex.java:70)
 at org.apache.hudi.client.utils.LazyIterableIterator.next(LazyIterableIterator.java:125)
 ... 25 more

*(for example:)*
- *Modify AnnotationLocation checkstyle rule in checkstyle.xml*

## Verify this pull request

*(Please pick either of the following options)*

This pull request is a trivial rework / code cleanup without any test coverage.

*(or)*

This pull request is already covered by existing tests, such as *(please describe tests)*.

(or)

This change added tests and can be verified as follows:

*(example:)*

- *Added integration tests for end-to-end.*
- *Added HoodieClientWriteTest to verify the change.*
- *Manually verified the change by running a job locally.*

## Committer checklist

- [ ] Has a corresponding JIRA in PR title & commit

- [ ] Commit message is descriptive of the change

- [ ] CI is green

- [ ] Necessary doc changes done or have another open PR

- [ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

@minihippo  could you pls help me to review this code， thanks

@nsivabalan  @minihippo   If you have time,  cou.ld you pls help to review this pr， thanks

There is the same problem when column value has ','.  Can we use indexKeyFields to match and get the value in the hoodiekey?

@minihippo  yes will do it,  but i still have some problems, BucketIdentifier.java  will give a hash value for recordKey,  Why don't we just use the hash value of recordkey ？

@minihippo yes will do it, but i still have some problems, BucketIdentifier.java will give a hash value for recordKey, Why don't we just use the hash value of recordkey ？

Hudi is commonly used to store data warehouse summary tables at ByteDance. Summary table is organized with dimensions and indexes. Id and dimension is composite primary key. Bucket key can be one of the dimension which is frequently aggregated by data analytics to accelerated query. In the above scenario, the primary key is a complex type: id and dimension column.

@danny0405 @minihippo  Thank you very much for your  review.   maybe this is not a very common problem in product env， let me close it。


Minimum occurrences for word cloud

If I want to create a word cloud of my entire vault, showing words that only appear once or twice seems unnecessary.
Is there an option to set it?

Upgrade to v1.2.6.


[material-ui] In the v4 to v5 migration guide the preset-safe codemod command doesn't work

Related page
https://mui.com/material-ui/migration/migration-v4/
Kind of issue
Unclear explanations
Issue description
There is issue for this preset-safe codemod, as most is based on V4 imports, for example, for following style changes, you can see all imports are based on V4. If you already changed imports in previous steps to V5, then most these codemods will not valid any more, that is why I found it did not change as expected.
-import {

createGenerateClassName,
createStyles,
jssPreset,
makeStyles,
ServerStyleSheets,
useThemeVariants,
withStyles,
withTheme,
ThemeProvider,
styled,
getStylesCreator,
mergeClasses,
-} from '@material-ui/core/styles';
+import { ThemeProvider, styled } from '@material-ui/core/styles';
+import createGenerateClassName from '@material-ui/styles/createGenerateClassName';
+import createStyles from '@material-ui/styles/createStyles';
+import jssPreset from '@material-ui/styles/jssPreset';
+import makeStyles from '@material-ui/styles/makeStyles';
+import ServerStyleSheets from '@material-ui/styles/ServerStyleSheets';
+import useThemeVariants from '@material-ui/styles/useThemeVariants';
+import withStyles from '@material-ui/styles/withStyles';
+import withTheme from '@material-ui/styles/withTheme';
+import getStylesCreator from '@material-ui/styles/getStylesCreator';
import mergeClasses from '@material-ui/styles/mergeClasses';

Context
No response
Search keywords: V5 upgrade preset-safe codemod

I am not understanding what is your issue.
Please provide a link to a repository on GitHub, or provide a minimal code example that reproduces the problem.
Here are some tips for providing a minimal example: https://stackoverflow.com/help/mcve.


Make app dependencies more explicit

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@00b3c53). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #160   +/-   ##
=========================================
  Coverage          ?   96.14%
=========================================
  Files             ?       22
  Lines             ?      934
  Branches          ?        0
=========================================
  Hits              ?      898
  Misses            ?       36
  Partials          ?        0

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 00b3c53...bb444de. Read the comment docs.


Ionic 4. Beta 8: Ion-Input Two Way Binding Error

Bug Report
Ionic Info
Run ionic info from a terminal/cmd prompt and paste the output below.
Ionic:

   ionic (Ionic CLI)          : 4.1.2 (/usr/local/lib/node_modules/ionic)
   Ionic Framework            : @ionic/angular 4.0.0-beta.8
   @angular-devkit/core       : 0.7.5
   @angular-devkit/schematics : 0.7.5
   @angular/cli               : 6.1.5
   @ionic/ng-toolkit          : 1.0.8
   @ionic/schematics-angular  : 1.0.6

Cordova:

   cordova (Cordova CLI) : 7.1.0
   Cordova Platforms     : none
   Cordova Plugins       : no whitelisted plugins (1 plugins total)

System:

   ios-deploy : 1.9.1
   NodeJS     : v10.10.0 (/usr/local/bin/node)
   npm        : 6.4.1
   OS         : macOS High Sierra

Describe the Bug
Ionic 4 I get the following error when I try implement two way binding via ngModal:
Can't bind to 'ngModel' since it isn't a known property of 'ion-input'.
1. If 'ion-input' is an Angular component and it has 'ngModel' input, then verify that it is part of this module.
2. If 'ion-input' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the<EMAIL_ADDRESS>of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the<EMAIL_ADDRESS>of this component. ("d>
          <ion-item color="light">
              <ion-input type="string" placeholder="Username" [ERROR ->][(ngModel)]="username"></ion-input>
          </ion-item>
          <ion-item color="light">
"): ng:///AppModule/LoginPage.html@12:62

Steps to Reproduce
 <ion-item color="light">     <ion-input type="string" placeholder="Username" [(ngModel)]="username"></ion-input> </ion-item>
.

Ok found the issue. I don’t use lazy loading in my app and therefore delete the *.module.ts for my page. This module template by default imports FormsModule. This is required to use ngModel hence the error. My fix was simply in app.module.ts is to:
import { FormsModule } from '@angular/forms';
and include in imports:[]


error generating qr code

I got following error:
PHP Notice:  Undefined offset: 15 in /var/www/html/qrservice/vendor/endroid/qrcode/src/Endroid/QrCode/QrCode.php on line 1183
PHP Version:
PHP 5.5.23 (cli) (built: Mar 21 2015 22:04:59)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

I found what cause the problem, the 'data' directory was skipped while I upload it to the server, it works now.

Ah ok


Different @version for same entity in different nodes of distributed cluster when one of them is temporarily frozen.

Expected behavior and actual behavior
In a distributed cluster with 2 nodes (node A and node B) when node A is frozen and B receives a create command which goes ahead in B; so far so good. However, when A is released the write goes through BUT the version of the created entity A is higher than that of the one in B. The longer the freeze is the higher the version of the entity in A. This entity will never be able to be updated from A or B because of concurrent modification errors.
Expected behavior is: after A is released the write goes through and the versions in both nodes are the same.
Steps to reproduce the problem
With 2.1.16.
Setup a cluster with two nodes. Freeze db in node A. Issue a create vertex command on B. Release db in A. Issue a select for that vertex in B -> you get it with a @version=1. Issue a select for that vertex in A -> you get it with @version>1.
Restarting nodes first A then B results in entity in B set to same higher @version as A.
Restarting B and then A sets entity in A to same lower @version as B.
The cluster is setup with default configs that ship with distribution.
Important Questions
Runninng Mode

[ ] Embedded, using PLOCAL access mode
[ ] Embedded, using MEMORY access mode
[x] Remote

Misc

[x] I have a distributed setup with multiple servers. How many?  2
[ ] I'm using the Enterprise Edition

OrientDB Version

[ ] v2.0.x - Please specify last number:
[x] v2.1.x - Please specify last number: 16
[ ] v2.2.x - Please specify last number:

Operating System

[ ] Linux
[x] MacOSX
[ ] Windows
[ ] Other Unix
[ ] Other, name?

Java Version

[ ] 6
[ ] 7
[x] 8

Please use v2.2.0 (GA) where we fixed similar problems.

This is not resolved in 2.2.0.

@andreaiacono we already have the test case OneNodeFrozenTest that is similar to this. Could you please verify the versions on it and trying also the create vertex command?

This issue should be solved long time ago with 2.2.x. In case you still have a problem with a more recent version, please comment this. thanks.


YouTube logo/link disappears in external player

The YouTube logo/link on the right bottom of videos on external player disappears when YouTubeCenter is enabled, As can be seen below.
Is there any way to bring it back?
Thanks.
YouTubeCenter disabled:

YouTubeCenter enabled:

Is there any way to bring it back?
Thanks.

What version are you using? You should always try the latest DEV version:
https://github.com/YePpHa/YouTubeCenter/wiki/Developer-Version
If you already have it then I can't help you much, the button is there for me. Perhaps try messing around with some of the 'External Player' settings.

With the latest DEV version the logo is back.
Thanks you !

Glad I could help!


Get message "ERROR:  KVCtrlChannel ShmOpen failed"

Hi,
I get the following error while trying the “usage” section of the readme:
create extension kv_fdw;

~~~~~~~~~~~~~~~LaunchKVManager~~~~~~~~~~~~~~~

-----------------kv_fdw_validator----------------------
CREATE EXTENSION
CREATE SERVER kv_server FOREIGN DATA WRAPPER kv_fdw;

-----------------kv_fdw_validator----------------------
CREATE SERVER
CREATE FOREIGN TABLE student(id INTEGER, name TEXT) SERVER kv_server;

-----------------kv_fdw_validator----------------------
CREATE FOREIGN TABLE
INSERT INTO student VALUES(20757123, 'Rafferty');

-----------------kv_fdw_handler----------------------

-----------------PlanForeignModify----------------------

-----------------kv_fdw_handler----------------------

-----------------BeginForeignModify----------------------
2021-01-08 19:57:41.236 CST [28571] ERROR:  KVCtrlChannel ShmOpen failed
2021-01-08 19:57:41.236 CST [28571] STATEMENT:  INSERT INTO student VALUES(20757123, 'Rafferty');
ERROR:  KVCtrlChannel ShmOpen failed

Postgres version is the latest REL_12_STABLE branch. Where could I get more details about this failure?
Is it a code issue?
Thanks!

Hi, I cannot reproduce the error in my side. It seems the component using shared memory doesn't start successfully in your env. I just did a new commit with error info, could you pull the commit, rerun it and then paste the debug info here?
Thanks.

Hi, I cannot reproduce the error in my side. It seems the component using shared memory doesn't start successfully in your env. I just did a new commit with error info, could you pull the commit, rerun it and then paste the debug info here?
Thanks.

Hi @Zzzzzzzzzzzzzzzzz, thanks for the report.
Could you please confirm that you set shared_preload_libraries to 'kv_fdw' in the postgresql.conf and then restart the postgres?
From the document:

Before using this foreign data wrapper, we need to add it to shared_preload_libraries in the postgresql.conf:
sudo bash -c 'echo "shared_preload_libraries = 'kv_fdw'" >> /etc/postgresql/12/main/postgresql.conf'

and restart PostgreSQL:
sudo service postgresql restart

Hi @Zzzzzzzzzzzzzzzzz, thanks for the report.
Could you please confirm that you set shared_preload_libraries to 'kv_fdw' in the postgresql.conf and then restart the postgres?
From the document:

Before using this foreign data wrapper, we need to add it to shared_preload_libraries in the postgresql.conf:
sudo bash -c 'echo "shared_preload_libraries = 'kv_fdw'" >> /etc/postgresql/12/main/postgresql.conf'

and restart PostgreSQL:
sudo service postgresql restart

@Zzzzzzzzzzzzzzzzz, are there any updates?

@Zzzzzzzzzzzzzzzzz, are there any updates?

I am going to close this issue since there is no further update.

I am going to close this issue since there is no further update.

I produce this issue because forget you set shared_preload_libraries to 'kv_fdw' in the postgresql.conf. after set shared_preload_libraries and restart pg, success.


Allow docker access in archiver plugin

Allow plugin to use unix domain socket to interact with docker. This should eliminate the use of --disable-sandbox for "normal" docker installs (unchanged docker context).

I would rather first land https://github.com/swift-server/swift-aws-lambda-runtime/pull/368 before tackling this one.
Also, this one should include a slight change in the README and not include changes in LambdaRuntime.
Let's try to have one PR/commit per subject.
May I close it and open a separate one once #368 is merged ?

Closing in favour of a combined README / code change that I will submit shortly


LEVM: Remove as conversions

Replace as conversions with .into() where possible and use .try_into() and handle the Result if not.

can i take on this ?


Bump jenkins image version to use 4.12

/assign @jkhelil @divyansh42

I'm going to try an summarize (but also detail) what I attempted to convey to @coreydaley in https://redhat-internal.slack.com/archives/C02258G4S79/p1676574278725019 and what you have to worry about here

docs at https://docs.openshift.com/container-platform/4.12/cicd/jenkins/important-changes-to-openshift-jenkins-images.html need to be updated
while deploying jenkins initially should be the same, you all will want to verify the following upgrade OCP scenario:
a) deploy jenkins where the imagestream ref points to registry.redhat.io/ocp-tools-4/jenkins-rhel8:v4.12 ... it will be OCP 4.12.x
b) note the the precise sha of the image the jenkins pod is using
c) now, say it is a week later, and you all make a change to registry.redhat.io/ocp-tools-4/jenkins-rhel8:v4.12, what happens if you (as the customer) upgrade from OCP 4.12.x to OCP 4.12.x+2
d) as part of the OCP upgrade, when the samples operator applies all the imagstreams and IF* this causes a re-import of the imagestream, even if the image ref is still registry.redhat.io/ocp-tools-4/jenkins-rhel8:v4.12, and that fires the image change trigger in the jenkins deployment config, and the customer's jenkins instance is restarted, pulling in the newer version of registry.redhat.io/ocp-tools-4/jenkins-rhel8:v4.12, you all are good.  The customer will get the CVE update as part of their OCP upgrade.

But, if ^^ does not happen, the customer will have to manually update the jenkins imagestream via oc import-image.  There will undoubtedly be a ton of customer bugs coming in about this, complaining about changing behavior, why are the CVE updates not automatic as part of the OCP upgrade.
Now, if the undesirable outcome is what happens, one idea did occur to me since @coreydaley and I talked, that might help here, and get what you all what you want, as in not having to update samples operator / jenkins imagestreams on each CVE.
If you all update the sample operator to special case the jenkins image stream, and have it always issue the equivalent of an oc import-image after it applies the jenkins imagestream, you'll get those updates, and the same behavior obtained when we used sha specific images.
The oc import-image logic is already there (it is what sample operator uses when imagestream imports fail).  https://github.com/openshift/cluster-samples-operator/blob/master/pkg/stub/retry.go
And special casing jenkins in samples operator is nothing new (we used to special case jenkins imagestream when we were in the payload, patching in the payload image into the imagestream's ref).

/assign @divyansh42 @mbharatk
for lgtm

/override ci/prow/e2e-aws-jenkins-sync-plugin

/label docs-approved
/label px-approved
/label qe-approved

/lgtm


thanks!! how could we donote to you?

thanks!! how could we donote to you?

Hi @rocke-dong! Development of this project is done under the umbrella of SeatGeek, Inc. We recommend you instead donate to a charitable organization of your choice. Here are a couple in case you have need of suggestions:

UN Refugee Agency
Save the Children
International Committee for the Red Cross

Thanks and have a nice day!


Adds task to generate JS docs

Put together while traveling. Adds initial ability to generate docs from code jsdocs.
Additions

Adds gulp docs task to generate code docs for JavaScript.

Testing

./frontend.sh
gulp docs
open html page in docs/scripts/index.html

Review

@sebworks
@Scotchester

Screenshots

Is it possible to have the methods organized by there associated files?

Seems like it should be possible. The screenshot in https://github.com/documentationjs/documentation-theme-light shows what you're talking about, but when I run that theme through I still get all the methods dumped out at the top level.

I have https://github.com/documentationjs/documentation/issues/412 open to see if we can get an answer.

ok, looks good other than that. If you want to add a TODO and merge then feel free.

👍


2929 upgrade carbon

Closes #2929
Summary
10.40

MenuButtons are now opened in a portal, so tests using container to query for classes needed to be switched to document.body

10.41

Pagination buttons were reduced in size causing style breaks

.bx--pagination__button was reduced from 3rem to 2.5rem

added size parameter to SimplePagination and defaulted it to lg

10.42

No new test failures

10.43

title attributes were added to the selected item in Dropdowns, so tests using screen.getByRole('button', { name: 'Size Small (4x1)' }) have now changed, b/c the title attribute doesn't match the text content that it used to screen.getByRole('button', { name: 'Size Small (4x1) Open menu' }) in one case
Custom dropdown-based components (SimpleIconDropdown, ColorDropdown, etc) will now have a title attribute that is [Object object], because carbon is now using itemToString to add a title to the dropdown. This doesn't prevent the dropdowns from working, but they become less accessible. An issue has been opened requesting the ability to render the selected item with itemToElement instead of always using itemToString

10.44

The prop wrapperClassName for Checkbox will be deprecated in V11 in favor of className. className will then be placed on the outer wrapper.
The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.

10.45

no new test failures

10.46

no new test failures

10.47

The iconDescription prop is being deprecated in favor of other props. On the Modal, it has been replaced with closeIconLabel, and on the TimePickerSelect it has been replaced with aria-label. https://github.com/carbon-design-system/carbon/issues/9624

Acceptance Test (how to verify the PR)

as with all carbon upgrades we check all stories

Regression Test (how to make sure this PR doesn't break old functionality)

as with all carbon upgrades we check all stories
with specific attention paid to:

any items using pagination to make sure the buttons are the correct size

SimpleIconDropdown, IconDropdown, ColorDropdown (any dropdowns hijacking itemToString

Things to look for during review

[ ] Make sure all references to iot or bx class prefix is using the prefix variable
[ ] (React) All major areas have a data-testid attribute. New test ids should have test written to ensure they are not changed or removed.
[ ] UI should be checked in RTL mode to ensure the proper handling of layout and text.
[ ] All strings should be translatable.
[ ] The code should pass a11y scans (The storybook a11y knob should show no violations). New components should have a11y test written.
[ ] Unit test should be written and should have a coverage of 90% or higher in all areas.
[ ] All components should be passing visual regression test. For new styles or components either a visual regression test should be written for all permutations or the base image updated.
[ ] Changes or new components should either write new or update existing documentation.
[ ] PR should link and close out an existing issue

Not looking forward to having to deal with this in Graphite :(

Yeah, that's why we're trying to be thorough on documenting what changes and why, so you're not flying completely blind. 😕

There are some issue with PageTitlebar.

Bread crumbs are cut off
Sizing on sticky header is messed up

 vs next.
 vs next

There is an issue with the menu button menu placement


Remove template file after generation

With #1781, we fixed an issue where gitignore wasn't being copied. Our solution unfortunately left two copies of gitignore, so this removes the extra one.

:tada: This PR is included in version 7.4.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Added some doc in storybook for "useMoment"

Added stuff in the storybook area. More precisely some doc:

Hi! Kind reminder!


Fix test in Task with params example

Fix example test in readme.

This is not wrong but I think it's a bit unusual to define an attr reader for the test and most likely we intended to always use @task across the whole test
cc: @gmcgibbon I think you added this example, just wanted to make sure that it was a simple typo and the intention was to use the @task  instance variable directly

No worries! Updated


Bridge Constructor [PCSE00869]

App summary

App name: Bridge Constructor
App serial: PCSE00869
App version: 1.00

Vita3K summary

Version: v0.1.8
Build number: 3271
Commit hash: https://github.com/vita3k/vita3k/commit/37e334b3
CPU backend: Dynarmic
GPU backend: Vulkan

Test environment summary
Tested by: space1
OS: Windows 11
CPU: AMD Ryzen 5 3600
GPU: Nvidia 3070
RAM: 32 GB
Issues
Cars are invisible.
Screenshots

Log
PCSE00869 - [Bridge Constructor].log
Recommended labels
ingame-
graphics bug

App summary

App name: Bridge Constructor
App serial: PCSE00869
App version: 1.00

Vita3K summary

Version: v0.2.0
Build number: 3691
Commit hash: https://github.com/vita3k/vita3k/commit/31826697
CPU backend: Dynarmic
GPU backend: Vulkan

Test environment summary

Tested by: Benjamin Toledo
OS: Windows 11
CPU: AMD Ryzen 5 4600G
GPU: AMD Radeon(TM) Graphics (Vega 7 integrated graphics)

Issues

No issues, perfect.

Screenshot

Log
vita3k.log
Recommended labels

Playable


problem with join in model

Laravel Version: 5.8
PHP Version: 7.3
Laravel-admin: 1.7

Description:
i want to have somthing like this in my Grid for filter data:
     $grid->model()
            ->join('expert', 'expert.user_id', '=', 'users.id')
            ->where('expert.agency_id', Admin::user()->agency_id)
            ->select('users.*','expert.avatar_image','expert.income');

but when there is more than one record it's not working.
Steps To Reproduce:

i used wrong Admin User for my test. change user and Admin::user()->agency_id work correctly.


Replace ItemScrollView with UICollectionView

Investigate whether it is possibe to replace ItemScrollView with UICollectionView.

Yes, it's possible.
After the upgrade to iOS 8 it has even become necessary, because ItemScrollView now sometimes has problems calculating the content width. It doesn't make much sense to fix the bug in ItemScrollView, it's simpler to just ditch the class.


Resolves #100

reproduction: https://codesandbox.io/p/devbox/kjhlt8

Do you mind to add a regression test?

Do you mind to add a regression test?

Done


Properly render ACL in documentation

The ACL example in the documentation specifies the highlighting as JSON, but it has comments which causes GitHub to render them as errors. Comments are allowed in the JSON5 extension, however, to which this patch switches.
Here is how this looks before and after the change:

[x] have read the CONTRIBUTING.md file
[ ] raised a GitHub issue or discussed it on the projects chat beforehand
[ ] added unit tests
[ ] added integration tests
[x] updated documentation if needed
[ ] updated CHANGELOG.md

Unfortunately, this breaks the rendering in mkdocs:
With json5 (broken)

With json (ok)

Closing this PR for now as there seems to be no common rendering option in both GitHub and mkdocs to get a sane rendering of hujson. Feel free to re-open when there is an option that works on both stacks.


Link errors when running rtic-monotonics example

Hi,
I'm trying to run this example code from the book on my STM32L052C8Tx board.
For this, I have configured the required crates as follow:
$ cat Cargo.toml  | grep rtic-mono
rtic = { version = "2.0.1", features = ["cortex-m", "thumbv6-backend", "rtic-monotonics"] }
rtic-monotonics = { version = "1.2.0", features = ["stm32l052c8", "cortex-m-systick"] }

This is the complete code from the example with minimal modifications, essentially just replacing semihosting with rtt:
#![no_main]
#![no_std]
#![feature(type_alias_impl_trait)]

use panic_rtt_target as _;

#[rtic::app(device = stm32l0xx_hal::pac, dispatchers = [SPI1])]
mod app {
    use rtic_monotonics::systick::*;
    use rtt_target::{rprintln, rtt_init_print};

    #[shared]
    struct Shared {}

    #[local]
    struct Local {}

    #[init]
    fn init(cx: init::Context) -> (Shared, Local) {
        rtt_init_print!();
        rprintln!("init");

        let systick_token = rtic_monotonics::create_systick_token!();
        Systick::start(cx.core.SYST, 12_000_000, systick_token);

        foo::spawn().ok();
        bar::spawn().ok();
        baz::spawn().ok();

        (Shared {}, Local {})
    }

    #[task]
    async fn foo(_cx: foo::Context) {
        rprintln!("hello from foo");
        Systick::delay(100.millis()).await;
        rprintln!("bye from foo");
    }

    #[task]
    async fn bar(_cx: bar::Context) {
        rprintln!("hello from bar");
        Systick::delay(200.millis()).await;
        rprintln!("bye from bar");
    }

    #[task]
    async fn baz(_cx: baz::Context) {
        rprintln!("hello from baz");
        Systick::delay(300.millis()).await;
        rprintln!("bye from baz");
    }
}

The code compiles but fails to link due to undefined symbols, which are interrupt names.
  = note: rust-lld: error: undefined symbol: RCC
          >>> referenced by rtic_playground.9c29a361ea81e178-cgu.0
          >>>               /home/javier/dev/rtic-playground/target/thumbv6m-none-eabi/release/deps/rtic_playground-00b34e20d939bb11.rtic_playground.9c29a361ea81e178-cgu.0.rcgu.o:(__INTERRUPTS)
          >>> did you mean: RTC

          rust-lld: error: undefined symbol: DMA1_CHANNEL4_7
          >>> referenced by rtic_playground.9c29a361ea81e178-cgu.0
          >>>               /home/javier/dev/rtic-playground/target/thumbv6m-none-eabi/release/deps/rtic_playground-00b34e20d939bb11.rtic_playground.9c29a361ea81e178-cgu.0.rcgu.o:(__INTERRUPTS)

          rust-lld: error: undefined symbol: ADC_COMP
          >>> referenced by rtic_playground.9c29a361ea81e178-cgu.0
          >>>               /home/javier/dev/rtic-playground/target/thumbv6m-none-eabi/release/deps/rtic_playground-00b34e20d939bb11.rtic_playground.9c29a361ea81e178-cgu.0.rcgu.o:(__INTERRUPTS)

          rust-lld: error: undefined symbol: USART4_USART5
          >>> referenced by rtic_playground.9c29a361ea81e178-cgu.0
          >>>               /home/javier/dev/rtic-playground/target/thumbv6m-none-eabi/release/deps/rtic_playground-00b34e20d939bb11.rtic_playground.9c29a361ea81e178-cgu.0.rcgu.o:(__INTERRUPTS)

          rust-lld: error: undefined symbol: TIM3
          >>> referenced by rtic_playground.9c29a361ea81e178-cgu.0
          >>>               /home/javier/dev/rtic-playground/target/thumbv6m-none-eabi/release/deps/rtic_playground-00b34e20d939bb11.rtic_playground.9c29a361ea81e178-cgu.0.rcgu.o:(__INTERRUPTS)

          rust-lld: error: undefined symbol: TIM7
          >>> referenced by rtic_playground.9c29a361ea81e178-cgu.0
          >>>               /home/javier/dev/rtic-playground/target/thumbv6m-none-eabi/release/deps/rtic_playground-00b34e20d939bb11.rtic_playground.9c29a361ea81e178-cgu.0.rcgu.o:(__INTERRUPTS)

          rust-lld: error: undefined symbol: I2C3
          >>> referenced by rtic_playground.9c29a361ea81e178-cgu.0
          >>>               /home/javier/dev/rtic-playground/target/thumbv6m-none-eabi/release/deps/rtic_playground-00b34e20d939bb11.rtic_playground.9c29a361ea81e178-cgu.0.rcgu.o:(__INTERRUPTS)

          rust-lld: error: undefined symbol: AES_RNG_LPUART1
          >>> referenced by rtic_playground.9c29a361ea81e178-cgu.0
          >>>               /home/javier/dev/rtic-playground/target/thumbv6m-none-eabi/release/deps/rtic_playground-00b34e20d939bb11.rtic_playground.9c29a361ea81e178-cgu.0.rcgu.o:(__INTERRUPTS)

This looks like a possible misconfiguration, but so far I have not been able to track it down.  All other examples from the book that don't use rtic-monotonics compile and run successfully.
Can anyone point me to any documentation explaining how to configure the rtic-monotonics trait?  I enabled stm32l052c8,cortex-m-systick because they made sense to me, but could not find them documented anywhere.

Hi, we did a large rework of the STM32 monotonics to fix a lot of issues. Could you try with rtic-monotonics v1.3.0 and check if the issue persists?
If it does can you put the project on GH?

Oh, nice.  Yes v1.3.0 solves this problem and I can run the book example.
Thank you very much for your good work!  :hugs:


ci: uses incremental checking

Description, Motivation and Context
To improve CI, we want to run a11y check only for changed components
Types of changes

[x] 🛠 Tool

Screenshots - Animations


Update Apollo entries

Updated homepage URL
Added Apollo CLI to the tooling category

Pre-submission checklist:
Please check each of these after submitting your pull request:

[X] Are you only including a repo_url if your project is 100% open source? If so, you need to pick the single best GitHub repository for your project, not a GitHub organization.
[x] Is your project closed source or, if it is open source, does your project have at least 250 GitHub stars?
[X] Have you picked the single best (existing) category for your project?
[X] Does it follow the other guidelines from the new entries section?
[X] Have you included a URL for your SVG or added it to hosted_logos and referenced it there?
[X] Does your logo clearly state the name of the project/product and follow the other logo guidelines?
[X] Does your project/product name match the text on the logo?
[X] Have you verified that the Crunchbase data for your organization is correct (including headquarters and LinkedIn)?
[ ] ~10 minutes after opening the pull request, the CNCF-Bot will post the URL for your staging server. Have you confirmed that it looks good to you and then added a comment to the PR saying "LGTM"?

Thank you @peggyrayzis

Happy to take suggestions on adding more adopters that Apollo may know about if you have a list somewhere

LGTM 👍
We have lots of suggestions for adopters! Would you be able to help with pulling logos & Crunchbase profiles?

yes, np on logos and crunchbase profiles, was hoping you had a list of case studies or something to point to outside of the users page on graphql.org : )

Yes, I can work with you on the logos and profiles.


Unable to find flask and beautiful soup

What steps will reproduce the problem?

I have ran all the commands in anaconda prompt but still when i come back to spyder and try to run flask it says that No module named 'flask'

Hi @utkrxxsh, thanks for reaching out, however, the information provided is not enough to know which is the error/question, so I'm closing this one.


UntrustedForm stripping html tags from inputs.

Is that a mixin that can be added to django-braces based on mozilla bleach https://github.com/mozilla/bleach? I may provide an PR but i would like to ask first.
import bleach
class UntrustedFormMixin:
    """
    Strip html tags from inputs.
    """

    html_strip_fields = []  # list of field names to clean html from
    html_allowed_tags = []
    html_allowed_attributes = {}
    html_allowed_css_styles = []
    html_allowed_protocols = []

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # https://bleach.readthedocs.io/en/latest/clean.html#bleach.sanitizer.Cleaner
        self.HTML_cleaner = bleach.Cleaner(
            tags=self.html_allowed_tags,
            attributes=self.html_allowed_attributes,
            styles=self.html_allowed_css_styles,
            protocols=self.html_allowed_protocols,
        )

    def clean(self):
        super().clean()
        # clean HTML
        for key in self.html_strip_fields:
            value = self.cleaned_data.get(key)
            if value:
                self.cleaned_data[key] = self.HTML_cleaner.clean(value)
        return self.cleaned_data

closing very old issues


Appbar Drawer documentation unclear for back button

The documentation says
AppBar automatically uses a BackButton in its leading slot when appropriate.
However it's not clear as to how this works. For me the issue was that I have a Common.getScaffold(body)  => Widget. Inside the getScaffold method the Drawer was created, and attached to the Scaffold for each AppState, however this ended up causing the back button to never show up even though I was doing Navigator.of(cx).pushNamed('/route').
The solution to this was to pass in a param Common.getScaffold(body, createDrawer:false) which essentially made the drawer null in the scaffold causing the back button to show up in the AppBar.
Not sure how to represent this in documentation as it could be specific to my case, or my lack of understanding, but just some FYI!

FYI @Hixie

If you have a Drawer, we should the Drawer button. If you don't have a Drawer, we figure out if it should be a back button or a close button or nothing.
But yes, we can improve the docs.

Turns out this is already amply documented in the AppBar docs, the place where it was vague was just the "see also" link on BackButton. But I've elaborated a bit there.

Fixed by https://github.com/flutter/flutter/pull/11330


SW-5625 Database schema for applications

Define the database representation of accelerator applications.

#2139  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @sgrimm and the rest of your teammates on  Graphite

I made a couple tweaks and I think this is ready for review as an initial version.

Merge activity

Jul 12, 1:34 PM EDT: @sgrimm started a stack merge that includes this pull request via Graphite.


Added support for building ARM and ARM64 based Docker images.

Completes: #1505

The ARM support was removed in favor of keeping only ARM64 after observing the effect on build times.


Updated Color method to return an error if the color name given is not valid, else return nil,

added map that maps string-representation of color to it's foreground text color attribute, use this in the Color method so if the string passed in represents a valid color, the correct attribute is returned or else an error is returned
test case TestColorError was added to test against both cases of valid and invalid color name passed into Color method
fixes #35

Let me know when you're all done. :)

hahaha I am done, sorry about that!

No worries at all. Taking a look now.

LGTM. Thanks @ClaytonNorthey92 for the work on this!

@briandowns no problem! Thank you!


Unable to extract json

$ youtube-dl --verbose "http://rmcdecouverte.bfmtv.com/mediaplayer-replay/?id=9572&title=STORAGE WARS%3AADJUGE%2CVENDU"
[debug] System config: []
[debug] User config: []
[debug] Command-line args: ['--verbose', 'http://rmcdecouverte.bfmtv.com/mediaplayer-replay/?id=9572&title=STORAGE WARS%3AADJUGE%2CVENDU']
[debug] Encodings: locale 'UTF-8', fs 'UTF-8', out 'UTF-8', pref: 'UTF-8'
[debug] youtube-dl version 2014.02.17
[debug] Python version 2.7.6 - Linux-3.13.0-37-generic-x86_64-with-LinuxMint-17.1-rebecca
[debug] Proxy map: {}
[generic] ?id=9572&title=STORAGE%20WARS%3AADJUGE%2CVENDU: Requesting header
WARNING: Falling back on generic information extractor.
[generic] ?id=9572&title=STORAGE%20WARS%3AADJUGE%2CVENDU: Downloading webpage
[generic] ?id=9572&title=STORAGE%20WARS%3AADJUGE%2CVENDU: Extracting information
[generic] Brightcove video detected.
[download] Downloading playlist: STORAGE WARS:ADJUGE,VENDU
[generic] playlist STORAGE WARS:ADJUGE,VENDU: Collected 1 video ids (downloading 1 of them)
[download] Downloading video #1 of 1
[Brightcove]<PHONE_NUMBER>001: Downloading webpage
[Brightcove]<PHONE_NUMBER>001: Extracting information
ERROR: Unable to extract json; please report this issue on https://yt-dl.org/bug . Be sure to call youtube-dl with the --verbose flag and include its complete output. Make sure you are using the latest version; type  youtube-dl -U  to update.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/youtube_dl/YoutubeDL.py", line 493, in extract_info
ie_result = ie.extract(url)
File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/common.py", line 158, in extract
return self._real_extract(url)
File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/brightcove.py", line 170, in _real_extract
videoPlayer[0], query_str, query, referer=referer)
File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/brightcove.py", line 186, in _get_video_info
info = self._search_regex(r'var experienceJSON = ({.*?});', webpage, 'json')
File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/common.py", line 356, in _search_regex
raise RegexNotFoundError(u'Unable to extract %s' % _name)
RegexNotFoundError: Unable to extract json; please report this issue on https://yt-dl.org/bug . Be sure to call youtube-dl with the --verbose flag and include its complete output. Make sure you are using the latest version; type  youtube-dl -U  to update.

You are using a quite OLD version (2014.02.17). Have a look at update instructions if you have any problem on updating.


[VC] Support adopting supercluster services

This extends #1395 to support adopting services that could be created in the super cluster, this is gated by the feature flag introduced in #1395 and expects that the super cluster service has a non-upward synced annotation set to transparency.tenancy.x-k8s.io/super.adoptable.
Following this, I'll be implementing a webhook that all the tenant control planes could be configured to for mutating Service objects prior to saving in etcd.
Blocked by #1395
Ref #1394
Signed-off-by: Chris Hein<EMAIL_ADDRESS>

/assign @Fei-Guo

Can you rebase? Thanks

Can you rebase? Thanks

@Fei-Guo done, thanks!

When pService is created externally, but the vService has not been created, the Patroller will remove the pService.
https://github.com/kubernetes-sigs/multi-tenancy/blob/dc6670c75479ee15b1deaa39bd41811f92b78cea/incubator/virtualcluster/pkg/syncer/resources/service/checker.go#L88
If the following events happen sequentially: pService is created-> a vService is created -> pService is attached with UID -> vService is deleted -> vService with the same name is created again.
You should make sure webhook always deletes the super service first otherwise you will have nonempty UID mismatch.
Also, it is not clear if vService is deleted, should pService be deleted by the syncer or not? If syncer needs to delete it, you may have two actors (webhook and syncer) that delete pService at the same time which may cause race.

This is a good call out @Fei-Guo I'm not catching the instance where the patroller runs in the middle between when the admission webhook from a tenant would create the Service and when the Service is finished being created in the tenant cluster. Within there we have a condition which we'd want to still catch where the service admission failed and the super still had a newly created service that it would be deleted, this was being caught by https://github.com/kubernetes-sigs/multi-tenancy/blob/dc6670c75479ee15b1deaa39bd41811f92b78cea/incubator/virtualcluster/pkg/syncer/resources/service/checker.go#L87 but there could be a race which happens.
Regarding garbage collection, once the UID is set on the object it's supposed to resume the existing flow allowing the syncer to handle the object updates & deletions. This is cause we only expect a service to be adoptable when the UID is "". and the first time the syncer gets the first update action it should set the UID allowing the alternative flow to work.

Updated to check before deletion cause of vService not existing @Fei-Guo.

@christopherhein  You still have not addressed the case where pService does not exist but vService exists (which can happen if pService is deleted for whatever reason). In current code, the patroller will requeue the vService and a new pService is going to be created.

Mutatewebhook workflow:   CreatePSerivce() -> Change service spec; then vService is created.
T0                       T1                                     T2
It seems that patroller may be triggered between T0 and T2.

@Fei-Guo I believe I have covered this case now, instead of immediately deleting any Service we put it into a backoff loop which will keep checking the service status and once it becomes adopted it will remove the deletion if by the end of the back off it still hasn't been adopted then we delete the object. To combat any major latencies we also now will recreate the service against the tenant control plane if the super cluster service is deleted.
For the vService existing but the pService not (in the case something deleted it in the cluster) we take the vService object deepcopy the contents and clear the uid and other metadata then delete the vService and immediately try to recreate it checking if the uid matches while it backs off creating the service this way retriggering the admissions lifecycle once the webhook is added. (this part is still to come in another PR)

/close
I've decided to do this differently, we're able to make changes easier now that vc-syncer is more like a framework.


windows server?

Is there any example that create a windows server VM cluster with load balancer?

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

ID: d6a7a232-6e5d-ae1d-3b57-71fb75740fb4
Version Independent ID: 1573ac54-ab15-2649-cccd-2dd64c640fc1
Content: Create a VM cluster with Terraform and HCL
Content Source: articles/terraform/terraform-create-vm-cluster-with-infrastructure.md
Service: azure
GitHub Login: @TomArcherMsft
Microsoft Alias: tarcher

@hfcheng66, Thanks for the question! We are taking a look into this and will get back to you soon.

@hfcheng66 We dont have a sample directly for wondows. But with a very few modifications, You can use the same template for windows as well.
In the storage_image_reference section, provide the parameters related to the windows server.
You can use the below command to list the skus for the publisher MicrosoftWindowsServer and offer WindowsServer.
az vm image list-skus -f WindowsServer -p MicrosoftWindowsServer -l southindia -o table
Then you can remove the block os_profile_linux_config and add os_profile_windows_config.
Full documentation for creating a vietual machine sing Terraform is here.

@hfcheng66 Did you had a chnage to look at the above comment?

@TomArcherMsft I think we dont need to update the doc for Windows. We cant cover all scenarios though.
Please confirm.

@jakaruna-MSFT thanks for the response. I will try on as you suggested.
I feel it is better that the document as least covers Windows and Linux, especially the handling will be different in terms of authentication, remote-exec, software pre-installation etc.

@hfcheng66  I will assign the issue to the content author to investigate further and update the document as appropriate.

@hfcheng66 Feel free to post on the MSDN VM Forum if you face issues with creating windows machines with terraform.

@jakaruna-MSFT  Apologies for not updating this earlier. I've checked with the product team on questions like this before, and the consensus is there are no current plans to update these articles for Windows. #please-close


CRLFs in the 0.4.0 binary

Hi @JoshuaWalsh
We tried the new version of the plugin but ran into some trouble, as we started seeing errors like this
/usr/bin/env: 'node\r': No such file or directory
Looks like there are CRLF/Windows line endings in
node_modules/.bin/gatsby-plugin-s3
We worked around this by adding a prepare step to our build
"prepare": "npx crlf --set=LF node_modules/.bin/gatsby-plugin-s3
But it looks like this is something that needs to be fixed in the release process

Fixed in 0.4.1


Run ibek tests in the CI

At present there is a risk of releasing runtime containers that are broken.
It would be good to verify that the ibek tests can run inside the runtime container and in particular change their root path so they are
testing the actual /epics paths in the container that runtime IOCs would be using.
There may be some merit in reviewing the existing rather basic CI tests too.
@GDYendell not sure if you are interested in looking at this one to keep your hand in on EC things?

Obviously we want to test the version of ibek that is installed into the container and mount in just the test folders.

I have updated the tests to launch a test IOC instance in both runtime and developer targets, I also check that dbpf and dbgf work plus verify that 'error' does not appear in the output.
This is way better testing and allows us to close this issue.
See:
https://github.com/epics-containers/ioc-template/pull/57
https://github.com/epics-containers/ioc-template/pull/60


CAMPD Data Landing Page

Definition of Ready

[x] Does this meet the INVEST criteria?
[x] Does this have a clearly defined user?
[x] Does this have an estimate?
[x] Does this have acceptance criteria?
[x] Does this have sufficient context (wireframes, business rules, etc.)?
[x] Is this traceable to a feature, epic, or PI?

User Story
As a CAMPD user  I want to view the data landing page so that I can familiarize myself with the different data tools
Acceptance Criteria
Given that a user has navigated to the CAMPD data landing page
When the page renders
Then its is in accordance with wireframes
Note: Static Datasets will now be "Bulk Data Files". The first sentence under the blurb should change to "For larger data downloads, bulk data files provide access to prepackaged datasets of...". Call to action label can stay the same.
Context
Scope includes responsiveness
https://www.figma.com/proto/RV8X37LPqM6RVztvNpjns0/CAMPD?node-id=1%3A148&scaling=min-zoom&page-id=1%3A146
Use borderless EPA box style
Testing
Test Case: TC223
Tester: @JanellC
Definition of Done

[x] Have all Acceptance Criteria been agreed to and validated by the scrum team?
[ ] Has the code been unit tested and peer reviewed?
[x] Have the functional tests been executed?
[x] Have all defects been reviewed and dispositioned, resolved, or deferred?
[ ] Has the user story been accepted by the Product Owner?
[x] Is the user story ready to be deployed to the test/staging environments?

TC223 failed. I logged Bug: CAMPD Data Landing Page #1696 to track the changes @tlageman-epa

CAMPD Data Landing Page  is ready for 508 testing


git-lfs: 2.3.4 -> 2.4.2

Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

Success on x86_64-linux (full log)
Attempted: git-lfs
Partial log (click to expand)
/nix/store/2i08nr7hdx3dfwd52jg4azv8frr9j7ag-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/rpm/golang_patch.bsh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/m47apl3hq3i52fzy2cz24378p0xn4lyx-bash-4.4-p19/bin/bash"
/nix/store/2i08nr7hdx3dfwd52jg4azv8frr9j7ag-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/rpm/clean.bsh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/m47apl3hq3i52fzy2cz24378p0xn4lyx-bash-4.4-p19/bin/bash"
/nix/store/2i08nr7hdx3dfwd52jg4azv8frr9j7ag-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/rpm/build_rpms.bsh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/m47apl3hq3i52fzy2cz24378p0xn4lyx-bash-4.4-p19/bin/bash"
/nix/store/2i08nr7hdx3dfwd52jg4azv8frr9j7ag-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/docker/run_dockers.bsh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/m47apl3hq3i52fzy2cz24378p0xn4lyx-bash-4.4-p19/bin/bash"
/nix/store/2i08nr7hdx3dfwd52jg4azv8frr9j7ag-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/docker/test_dockers.bsh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/m47apl3hq3i52fzy2cz24378p0xn4lyx-bash-4.4-p19/bin/bash"
/nix/store/2i08nr7hdx3dfwd52jg4azv8frr9j7ag-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/docker/gpg-agent_preload.bsh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/m47apl3hq3i52fzy2cz24378p0xn4lyx-bash-4.4-p19/bin/bash"
/nix/store/2i08nr7hdx3dfwd52jg4azv8frr9j7ag-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/docker/gpg-agent_stop.bsh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/m47apl3hq3i52fzy2cz24378p0xn4lyx-bash-4.4-p19/bin/bash"
/nix/store/2i08nr7hdx3dfwd52jg4azv8frr9j7ag-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/docker/gpg-agent_start.bsh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/m47apl3hq3i52fzy2cz24378p0xn4lyx-bash-4.4-p19/bin/bash"
checking for references to /build in /nix/store/2i08nr7hdx3dfwd52jg4azv8frr9j7ag-git-lfs-2.4.2...
/nix/store/pj5lbbn6va7bkhw7sw7rkbh9rmwfyd0f-git-lfs-2.4.2-bin

Success on aarch64-linux (full log)
Attempted: git-lfs
Partial log (click to expand)
/nix/store/nkgdmiz6nrg7hx99vhpbd9yqirdnlhs4-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/test/test-untrack.sh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/vnb8q2h7951gd551nm2vq2g6n8296g5b-bash-4.4-p19/bin/bash"
/nix/store/nkgdmiz6nrg7hx99vhpbd9yqirdnlhs4-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/test/test-unusual-filenames.sh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/vnb8q2h7951gd551nm2vq2g6n8296g5b-bash-4.4-p19/bin/bash"
/nix/store/nkgdmiz6nrg7hx99vhpbd9yqirdnlhs4-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/test/test-update.sh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/vnb8q2h7951gd551nm2vq2g6n8296g5b-bash-4.4-p19/bin/bash"
/nix/store/nkgdmiz6nrg7hx99vhpbd9yqirdnlhs4-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/test/test-verify.sh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/vnb8q2h7951gd551nm2vq2g6n8296g5b-bash-4.4-p19/bin/bash"
/nix/store/nkgdmiz6nrg7hx99vhpbd9yqirdnlhs4-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/test/test-version.sh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/vnb8q2h7951gd551nm2vq2g6n8296g5b-bash-4.4-p19/bin/bash"
/nix/store/nkgdmiz6nrg7hx99vhpbd9yqirdnlhs4-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/test/test-worktree.sh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/vnb8q2h7951gd551nm2vq2g6n8296g5b-bash-4.4-p19/bin/bash"
/nix/store/nkgdmiz6nrg7hx99vhpbd9yqirdnlhs4-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/test/test-zero-len-file.sh: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/vnb8q2h7951gd551nm2vq2g6n8296g5b-bash-4.4-p19/bin/bash"
/nix/store/nkgdmiz6nrg7hx99vhpbd9yqirdnlhs4-git-lfs-2.4.2/share/go/src/github.com/git-lfs/git-lfs/vendor/github.com/kr/pty/mktypes.bash: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/vnb8q2h7951gd551nm2vq2g6n8296g5b-bash-4.4-p19/bin/bash"
checking for references to /build in /nix/store/nkgdmiz6nrg7hx99vhpbd9yqirdnlhs4-git-lfs-2.4.2...
/nix/store/x2wiislmnqd994v1fzrhhkg2j8gyhz97-git-lfs-2.4.2-bin


Requires and autorequires do not seem to be evaluated

I was writing some tests for the puppetlabs-registry module and I found I could not test that the autorequires was working.  I have created a minimal repro case at https://github.com/glennsarti/rspec_issue
For the sake of the issue I'll copy the pertinent bits here:
Given a test manifest of (https://github.com/glennsarti/rspec_issue/blob/master/spec/fixtures/testmodule/manifests/init.pp)
class testmodule {

  notify { 'notify1': }

  notify { 'notify2':
    require => Notify['notify1']
  }

  dummy { 'Test':
    path => 'test',
  }
}

Note - Dummy is a custom type created at https://github.com/glennsarti/rspec_issue/blob/master/lib/puppet/type/dummy.rb which is used for debugging.
Given a spec file of:
describe 'testmodule' do

  # ------------------------------------------- Just using notify resources

  # This expectation succeeds
  it { is_expected.to compile }

  # This expectation succeeds
  it { is_expected.to contain_notify('notify1') }

  # This expectation succeeds
  it { is_expected.to contain_notify('notify2') }

  # This expectation fails!
  it { is_expected.to contain_notify('notify2').that_requires(["Notify['notify1']"]) }

  # Even with an explicit cataloge compile, this expectation fails!
  it {
    is_expected.to compile

    is_expected.to contain_notify('notify2').that_requires(["Notify['notify1']"])
  }
  it {
    is_expected.to compile.with_all_deps

    is_expected.to contain_notify('notify2').that_requires(["Notify['notify1']"])
  }

  # ------------------------------------------- Using the custom Dummy type
  it { is_expected.to contain_dummy('Test') }

  # This expectation fails!
  # Also note that the '!!!!! Autorequire for Dummy Type called for the test below' is never output so
  # Autorequires is NEVER called
  it { is_expected.to contain_notify('Test').that_requires(["Notify['notify1']"]) }

  # Even with an explicit cataloge compile, this expectation fails!
  it {
    is_expected.to compile

    is_expected.to contain_notify('Test').that_requires(["Notify['notify1']"])
  }
  it {
    is_expected.to compile.with_all_deps

    is_expected.to contain_notify('Test').that_requires(["Notify['notify1']"])
  }
end

The explicit requires never appears in the catalogue
The implicit autorequire on the Dummy type never appears in the catalogue

Also, using a simple puts statement it can be shown that the autorequire method is never called during the ... .that_requires(...) matcher.  It only gets called during the explicit compile call.  This is due to the cyclical checks which converts the catalogue into a graph.  This is where the requires and autorequires are evaluated (https://github.com/puppetlabs/puppet/blob/0ff9cf7ff3a96b14c677ccaec73d48465a18c9c9/lib/puppet/graph/relationship_graph.rb#L22-L32)
Looking at this, there's no way I can test explicit or implicit requires using rspec-puppet.

@glennsarti theres a couple of issues in play here. The first is the difference in how resource references are written in the manifest vs expressed in the catalogue. In the catalogue, resource titles are not quoted, so when you are testing the relationships, you need to specify them as Notify[notify1] rather than Notify['notify1']. I'm hoping to do away with this bit of confusion with the new syntax in rspec-puppet 3
The second is that you accidentally used contain_notify('Test') rather than contain_dummy('Test') 😉
diff --git a/spec/classes/testmodule_spec.rb b/spec/classes/testmodule_spec.rb
index aab1bcb..96bfa41 100644
--- a/spec/classes/testmodule_spec.rb
+++ b/spec/classes/testmodule_spec.rb
@@ -14,18 +14,18 @@ describe 'testmodule' do
   it { is_expected.to contain_notify('notify2') }

   # This expectation fails!
-  it { is_expected.to contain_notify('notify2').that_requires(["Notify['notify1']"]) }
+  it { is_expected.to contain_notify('notify2').that_requires(["Notify[notify1]"]) }

   # Even with an explicit cataloge compile, this expectation fails!
   it {
     is_expected.to compile

-    is_expected.to contain_notify('notify2').that_requires(["Notify['notify1']"])
+    is_expected.to contain_notify('notify2').that_requires(["Notify[notify1]"])
   }
   it {
     is_expected.to compile.with_all_deps

-    is_expected.to contain_notify('notify2').that_requires(["Notify['notify1']"])
+    is_expected.to contain_notify('notify2').that_requires(["Notify[notify1]"])
   }

   # ------------------------------------------- Using the custom Dummy type
@@ -34,18 +34,18 @@ describe 'testmodule' do
   # This expectation fails!
   # Also note that the '!!!!! Autorequire for Dummy Type called for the test below' is never output so
   # Autorequires is NEVER called
-  it { is_expected.to contain_notify('Test').that_requires(["Notify['notify1']"]) }
+  it { is_expected.to contain_dummy('Test').that_requires(["Notify[notify1]"]) }

   # Even with an explicit cataloge compile, this expectation fails!
   it {
     is_expected.to compile

-    is_expected.to contain_notify('Test').that_requires(["Notify['notify1']"])
+    is_expected.to contain_dummy('Test').that_requires(["Notify[notify1]"])
   }
   it {
     is_expected.to compile.with_all_deps

-    is_expected.to contain_notify('Test').that_requires(["Notify['notify1']"])
+    is_expected.to contain_dummy('Test').that_requires(["Notify[notify1]"])
   }
 end

Seems I was being a derp!  Thanks Tim!  I'll quickly review the docs and see if I missed anything, and if not, I can put up a PR to ammend the docs.
Thanks again.

Derp level 11... All of what you said is in the big blue warning box.  Apologies.


Extract the Events struct and make the Event struct opaque

Extracts the Events struct from Poller. This allows us to avoid an intermediate allocation when polling for events in async-io.
Makes Event opaque, containing platform-specific data. Closes #66.
Adds HUP and PRI tracking to Event that is platform-dependent. Closes #112 and this issue.

Imo it would be a good idea to squash all the doctest fixups before merging.


High-frequency output of the controller

Hi!
first, I want to thank you for this project, because it is the fundament of the experimental part of my master thesis! Be sure that I will cite you in my report :)
I hope you could help me with the following issue with your PID. I won't go deep in what my application actually is, but basically, I'm running the controller at 60Hz and I'm publishing way points at 20hz with distance variable from the Crazyflies, but always on the same plane(mostly, on a circular path). I'm using your standard setting for the PID parameters, I only increased the boundaries of the control output from [-10,10] to [-30,30] (degrees?). The problem is in the shape of the control output that I get, that is shown in the figure attached: the blue and the red are respectively the X and Y PID outputs. The Zone 1 is a time that goes from the take-off to the reach of an initial static hovering point. Zone 2 consists of the time in which the Crazyflie is hovering, then in Zone 3, I start publishing a moving goal.
Questions: do you have any clue of why do I get so much high-frequency chattering? Moreover, even if I was reaching saturations and I had to increase the max amplitudes (and in spite of this I still get some saturation), (i know that the saturation could normally mean that gains are too high or the goal is too fast), the crazyflie doesn't seem to behave "aggressively", because it is naturally filtering a command signal like this. Do you have any idea of what could be the cause of this? How "normal" is an output like this from your PID?
Thanks in advance!

The included controller is a very basic PID controller. Those oscillations could come either from real oscillations of the CF, or jitter created by your Mocap system (which can happen for those small UAVs if the cameras are far away). I don't think I ever plotted the control output (I usually look at desired vs. true state), but my best guess is that this is unfortunately "normal".
I would recommend using the Crazyswarm project instead, even if just flying a single CF. You would need a custom firmware, but a much better non-linear controller runs on-board. It also supports ellipsoid motions and waypoint navigation, see https://github.com/USC-ACTLab/crazyswarm for details.
Good luck with your thesis - I am glad you choose the CF platform for testing!

Thank you! Both the answer and the suggestions are really useful. I'm actually flying three\four crazyflies with the same radio and also implementing in some cases, in a really dense formation (I also have implemented collision avoidance), so the project crazyswarm looks perfect. The only problems are that I use a Qualisys Mocap,  do you think i can easily adapt the code?Moreover, I run my code on ROS indigo..is it going to be a problem in your opinion? Thanks a lot!

Does Qualisys have a C++ Linux SDK which allows to get the 3D points of markers? If though it would be easy to integrate. I believe it compiles on ROS Indigo just fine - we switched to Kinetic during development in our lab so we didn't test the latest version with Indigo.


support remote signing via reproducible builds

Description

Have cosign on the developers machine run the same build, creating a signature locally and then sending the signature to the remote in machine, where it is checked and applied. (See also https://www.qubes-os.org/doc/split-gpg/ for something similar in concept.)
Besides allowing signing on an untrusted machine while still retaining security, this makes it possible to independently verify the process without relying on the signature.
I have seen people using cosign with fulcio to sign builds in e.g. GitHub Actions. This would support signing in a GitHub action while affording better security.

Overall, I agree with you that reproducible builds and software signatures go well together!
Is your argument something like the following?

Some people are having GitHub Actions sign with private keys stored as GitHub Secrets.
This is bad for a couple of reasons:

GitHub Actions can now sign anything it wants. So if (1) GitHub is compromised, or (2, more likely) the GitHub actions configuration changes, we could have signatures of evil builds.
That private key had to be generated somewhere else, and so it might have leaked as it was uploaded to GitHub.

Instead, we should have developers build + sign locally, and then send that signature to GitHub Actions

GitHub Actions publishes the secret only if it got the same result.

Then, the overall effect is: both GitHub CI and the developer need to cooperate to publish an artifact. I think this is a good goal, and agree that reproducible builds help with this.
However, to me, it sounds more straightforward to have GitHub Actions sign the artifact as well, and then clients can check that there are signatures from both the developer and CI. Do you agree that the effect would be similar?
(If you're worried about accidentally publishing artifacts without appropriate signatures, you can have distinct CI jobs for (1) build+sign and (2) publish release, with the latter gated on the same threshold of signatures.)
But I think things get even better with keyless signatures. Then, we can do the following:

I, the developer, build and sign my artifact using a key I only hold locally.
From the public source, GitHub CI builds a (bit-for-bit identical) artifact, and signs using a Sigstore signature based on the GitHub Actions OIDC identity.
Now, as a client, I can check that I have a signature from both the developer and GitHub CI.

Bonus points for using in-toto to manage this threshold. It's capable of expressing things like: "I need a claim that the artifact with hash X was built from commit Y using build process Z, signed by (GitHub CI AND (developer A OR developer B))"

Another question: I don't see why this is a cosign feature. The reproducibility check would look something like:
$ gcc -o a.out main.c
$ [get the signature from the dev]
$ cosign verify-blob --signature user-sig.sig --key user-key.pub
$ [publish a.out as usual]

The tricky part lies in "get the signature from the user". How would cosign implement this feature? It seems to me easier to have the developer provide the signature as a build input when they kick off the release process.

Curious to hear your thoughts!

Yes, my argument was somewhat like that. Important details in my scenario are that they are 1) using Github Web UI to do merges (not git merge and push) and tags 2) do not use commit signing 3) already use what cosign calls keyless mode.
So (3) makes it different, but your criticism of your scenario applies equally to mine as the entity in control of the commit signing key used for Web UI actions, any secret in the CI, and the OIDC endpoint are the same.
Simplifying while slightly improving security
Both a secret key in the CI or OIDC can help with associating the target project and branch of a merge or target project and tag name. However for software projects released from git with tags that are machine comparable versions, we do not need to differentiate the project/repo if the user is differentiated. Because the source branch and user are already included in the signed commit or tag created by the back end of the Web UI, we can write the public key identifier, hash of user, and tag hash to rekor. If rekor were to implement a solution to split view and availability, that would give us without any additional authentication even better security.
We can do better than (3) with reproducible builds and authenticating the input via the signature created by (1). This as a side effect made the process easier on the person making the release. The CI can ensure this by doing the build twice.
Aside on keys
We could improve the security quite a bit by making git sign commits and tags by default. It would create a key on first invocation without any user input. This would remove all the friction, that GPG singing commits usually involves.
Github has no key rotation in place for the GPG key the Web UI uses to sign. (Same for their SSH host key.) And they only use one secret across all involved servers.
I have not checked the details of OIDC, does it mandate something like key rotation chained with signatures and allow offline verification after the fact?
To get short lived keys we can use something like is done in Decentralised IDentifieres to chain key rotations and do that automatically during signing if x time went by. For developers with multiple machines, we can offer cross signing. For recovery we can store a chained recovery use once key in their mailbox/dropbox/etc or use a passphrase to derive a key or use social recovery with a quorum. Maybe FIDO2 keys can be directly incorporated into such a scheme, to allow offline verifiable 2fa, or as the sole secret storage.
To not rely only on the secrecy of the private key we can use keys whose policy is to only make signatures that are published to rekor.
If we want to bind keys to Github identities, we can use something like what Keybase or https://github.com/wiktor-k/openpgp-proofs does.
We can define who owns a repo based on these keys in the repo itself, e.g. in a file named .gittrust. And have git verify by default if this is present in the default branch.
But this aside is not integral to this feature request.
Strengthen the source
To avoid the centralized single point of failure, any maintainers from the project could then confirm the rekor entry based on their local git repo by something like cd /path/repo && cosign confirm tag-name. 3rd parties could review it with something like https://github.com/crev-dev/crev and store a reference to the review in rekor.
Strengthen the binary
Anyone can run a rebuilder like https://github.com/in-toto/rebuilderd that follows the repo and/or the entries for the repo in rekor, reproduces the build and sends the signed attestation to rekor. Github CI could be one of those.
Tying it together
I'm a bit unsure about this one as I'm not familiar with some of the parts affected.
We can combine the above two and a) satisfy legacy systems with just one signature that can not do any multi signature policy and not query rekor (otherwise we could just do with the above and a policy on how to verify from rekor and possibly gate the CI publish on a threshold appearing in rekor) and b) make sure the CI doesn't release without maintainer confirmation by: 1) In the Github Action send intent to sign with the intoto meta data which is enough to reproduce the build to rekor (this is so the developer doesn't accidentally sign something which was not tested to at least be reproducible by two runs) 2) wait for signature from next step to appear in rekor and then transplant it to the binary 3a) (this overlaps with what https://github.com/in-toto/rebuilderd does) on the developers machine trigger a build, receive the intoto meta data, check that it matches the input the developer provided (e.g. same git commit or tag provided locally), check that the build result is the same, 3b) sign it, send signature to rekor.
Using rekor here as the transport is just an example, it could as well be a git branch, that the CI can only append to.
Make secure easy
I have the hunch that for good UI cosign should itself call whatever (in-toto-verify?) is needed to reproduce based on the in-toto recipe derived from local git which the CI also uses, as manual steps lead to things being non-reproducible.

I'd like to check that I'm understanding your proposal: GitHub merge commits are signed by GitHub, not maintainers, so if we check (1) that a commit is signed, and (2) a build is done by GitHub CI, (1) isn't giving us a whole lot of assurance (single-point-of-failure, no tie to maintainer identity).
But we like the GitHub workflow; how do we get the security assurance of signed commits without giving that up? We can have maintainers add extra signatures after-the-fact, after reproducing the build from their local checkout.
I think there are a bunch of good ideas here, but it's a little difficult to understand what concretely needs to get done.  Perhaps the best thing to do would be to build a separate tool? Or maybe this is a feature-request for the in-toto tooling itself?
Some alternatives here include Guix's approach, which doesn't quite work in a GitHub-centric workflow but is interesting enough that I'll include it.

Going through some old issues here. I still think that this issue contains good ideas, but I'm skeptical that Cosign is the right place to implement them. in-toto might make more sense. CC @adityasaky @SantiagoTorres

I think there are things to be said around using in-toto + cosign to sign for a rebuild result. We are already able to attest to anything w/ cosign, so I wonder what else is there to do. Let me take a better look at the ctx and think of a path fw.

It makes sense to me to record results of every build using in-toto (we already do this in rebuilderd) and each builder (whether GitHub actions or the developer) can use OIDC identities to sign the metadata (https://github.com/in-toto/ITE/blob/master/ITE/7/README.adoc makes this possible in in-toto). So for the proposed workflow, we'd either use in-toto + Fulcio ITE-7 bits to sign the metadata or have cosign generate an in-toto attestation (already possible) for the built artifact signed with a Fulcio key. I think the only necessary change to an in-toto implementation is the Fulcio integration. Is that right?

Thank you for your responses.
To improve the source part I started a proof of concept https://gitlab.com/source-security/git-verify .
OIDC doesn't seem to a be good fit for verifying code signatures as typical security requirements are out of scope and https://docs.sigstore.dev/security#fulcio-security-model even deems further ones out of scope. But we should probably discuss this in the Fulcio project, not here.
Maybe for cosign I'm only missing changes to its documentation, reading the README.md of cosign doesn't mention anything about reproducing a build. It mentions Fulcio very prominently instead. Though it mentions in-toto, but not how you get to that point. The detailed documentation says how to upload a signature you got from elsewhere, but not why that is useful or when you want to chose that over alternatives.

To improve the source part I started a proof of concept https://gitlab.com/source-security/git-verify .

Very cool! I'll be sure to watch that as it progresses. If you're interested in using Sigstore as a building block and it's missing features, feel free to open issues and we'll try to help out.

Maybe for cosign I'm only missing changes to its documentation, reading the README.md of cosign doesn't mention anything about reproducing a build. Though it mentions in-toto, but not how you get to that point. The detailed documentation says how to upload a signature you got from elsewhere, but not why that is useful or when you want to chose that over alternatives.

In general, I don't think we can capture every use case in the README. IMO it's sufficient to provide Cosign as a primitive and describe how it works.
That said, if you're interested in writing something up about this, we could publish it on the Sigstore blog, and we're happy to promote projects that use Cosign and Sigstore in general.


[metadata prespecialization] NFC: Replaced bool with enum.

Previously a bool argument was passed to isCanonicalSpecializedNominalTypeMetadataStaticallyAddressable to indicate whether the metadata was to be used only from a specialized metadata accessor.  Here, that bool is replaced with an enum.

@swift-ci please test

Build failed
Swift Test Linux Platform
Git Sha - 5ce546636e3362c00c3fd8e2fc8a7e89eab23d9a

@swift-ci please clean test linux platform


Add Gitlint to repos without Shipyard

What would you like to be added:
Commit message linting with Gitlint, for repos without the shared Shipyard infra.
Why is this needed:
We should run commit linting everywhere. We currently run Gitlint through Shipyard shared infra, so it can be run locally but not in repos without Shipyard. As I recall, there wasn't a good GHA option, but should re-check.

Closing this in favor of just adding Shipyard to all repos and getting gitlint that way. https://github.com/submariner-io/shipyard/issues/325


Fixed footer bg color

Please always provide the GitHub issue(s) your PR is for, as well as test URLs where your change can be observed (before and after):
Fix #429
Test URLs:

Before: https://main--sling--aemsites.aem.live/programming/sports/pro-football
After: https://429-footerbg--sling--aemsites.aem.page/programming/sports/pro-football

Fixed in https://github.com/aemsites/sling/pull/445


[BUG] -TestSctFile Doesn't Have [FIXES]

Describe the bug
Title says it all.

Accidental comment out of the portion that calls fixes.
Fixed in Version 0.5.3