ZoneSettingsOverride state prevents upgrade to 4.0

Hello!

Vote on this issue by adding a 👍 reaction
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already)

Issue details
Upgrading from 3.5 to 4.0 with an existing ZoneSettingsOverride resource breaks with an Unexpected type error.
Steps to reproduce

Have a resource, e.g.

    ZoneSettingsOverride(
        some_name,
        zone_id=zone.id,
        settings=ZoneSettingsOverrideSettingsArgs(
            always_use_https="on",
            email_obfuscation="off",
            server_side_exclude="off",
        ),
    )

Upgrade pulumi-cloudflare from 3.5 to 4.0 and run pulumi up.

Pulumi and package versions
$ pulumi version
v3.18.1
$ pip list
Package            Version
------------------ ---------
Arpeggio           1.10.2
attrs              21.2.0
awscli             1.22.11
beautifulsoup4     4.10.0
botocore           1.23.11
certifi            2021.10.8
charset-normalizer 2.0.7
cloudflare         2.8.15
colorama           0.4.3
dill               0.3.4
docutils           0.15.2
grpcio             1.42.0
idna               3.3
jmespath           0.10.0
jsonlines          2.0.0
parver             0.3.1
pip                21.0.1
protobuf           3.19.1
pulumi             3.18.1
pulumi-aws         4.29.0
pulumi-cloudflare  4.0.0
pulumi-hcloud      1.7.0
pyasn1             0.4.8
python-dateutil    2.8.2
PyYAML             5.4.1
requests           2.26.0
rsa                4.7.2
s3transfer         0.5.0
semver             2.13.0
setuptools         54.1.2
six                1.16.0
soupsieve          2.3.1
urllib3            1.26.7
wheel              0.36.2

Expected: Seamless provider version upgrade.
Actual:
    error: Program failed with an unhandled exception:
    error: Traceback (most recent call last):
      File "/home/user/opt/pulumi/pulumi-language-python-exec", line 107, in <module>
        loop.run_until_complete(coro)
      File "/usr/lib64/python3.9/asyncio/base_events.py", line 642, in run_until_complete
        return future.result()
      File "/home/user/.cache/pypoetry/virtualenvs/infra-PmXxtYjb-py3.9/lib/python3.9/site-packages/pulumi/runtime/stack.py", line 110, in run_in_stack
        await run_pulumi_func(lambda: Stack(func))
      File "/home/user/.cache/pypoetry/virtualenvs/infra-PmXxtYjb-py3.9/lib/python3.9/site-packages/pulumi/runtime/stack.py", line 45, in run_pulumi_func
        await wait_for_rpcs()
      File "/home/user/.cache/pypoetry/virtualenvs/infra-PmXxtYjb-py3.9/lib/python3.9/site-packages/pulumi/runtime/stack.py", line 65, in wait_for_rpcs
        await RPC_MANAGER.rpcs.pop()
      File "/home/user/.cache/pypoetry/virtualenvs/infra-PmXxtYjb-py3.9/lib/python3.9/site-packages/pulumi/runtime/rpc_manager.py", line 65, in rpc_wrapper
        result = await rpc
      File "/home/user/.cache/pypoetry/virtualenvs/infra-PmXxtYjb-py3.9/lib/python3.9/site-packages/pulumi/output.py", line 94, in is_value_known
        return await is_known and not contains_unknowns(await future)
      File "/home/user/.cache/pypoetry/virtualenvs/infra-PmXxtYjb-py3.9/lib/python3.9/site-packages/pulumi/output.py", line 94, in is_value_known
        return await is_known and not contains_unknowns(await future)
      File "/home/user/.cache/pypoetry/virtualenvs/infra-PmXxtYjb-py3.9/lib/python3.9/site-packages/pulumi/output.py", line 94, in is_value_known
        return await is_known and not contains_unknowns(await future)
      [Previous line repeated 4 more times]
      File "/home/user/.cache/pypoetry/virtualenvs/infra-PmXxtYjb-py3.9/lib/python3.9/site-packages/pulumi/runtime/resource.py", line 568, in do_register
        rpc.resolve_outputs(res, resolver.serialized_props, resp.object, deps, resolvers, transform_using_type_metadata)
      File "/home/user/.cache/pypoetry/virtualenvs/infra-PmXxtYjb-py3.9/lib/python3.9/site-packages/pulumi/runtime/rpc.py", line 850, in resolve_outputs
        translated_value = translate_output_properties(value, translate_to_pass, types.get(key),
      File "/home/user/.cache/pypoetry/virtualenvs/infra-PmXxtYjb-py3.9/lib/python3.9/site-packages/pulumi/runtime/rpc.py", line 733, in translate_output_properties
        raise AssertionError((f"Unexpected type; expected a value of type `{typ}`"
    AssertionError: Unexpected type; expected a value of type `typing.Sequence[pulumi_cloudflare.outputs.ZoneSettingsOverrideInitialSetting]` but got a value of type `<class 'dict'>` at resource `xx.yy.zz`, property `initial_settings`: {'tls12Only': 'off', 'opportunisticOnion': 'on', 'minTlsVersion': '1.0', 'tls13': 'on', 'websockets': 'on', 'hotlinkProtection': 'off', 'browserCheck': 'on', 'pseudoIpv4': 'off', 'serverSideExclude': 'off', 'ssl': 'strict', 'minify': {'js': 'off', 'html': 'off', 'css': 'off'}, 'mirage': 'off', 'alwaysUseHttps': 'on', 'browserCacheTtl': 14400.0, 'zeroRtt': 'off', 'universalSsl': '', 'securityLevel': 'medium', 'privacyPass': 'on', 'responseBuffering': 'off', 'securityHeader': {'enabled': True, 'includeSubdomains': True, 'preload': True, 'nosniff': False, 'maxAge': 31536000.0}, 'challengeTtl': 1800.0, 'prefetchPreload': 'off', 'automaticHttpsRewrites': 'off', 'cacheLevel': 'aggressive', 'trueClientIpHeader': 'off', 'ipv6': 'on', 'h2Prioritization': 'on', 'polish': 'off', 'http3': 'off', 'originErrorPagePassThru': 'off', 'developmentMode': 'off', 'http2': 'on', 'cnameFlattening': 'flatten_at_root', 'emailObfuscation': 'off', 'imageResizing': 'off', 'brotli': 'on', 'waf': 'off', 'webp': 'off', 'maxUpload': 100.0, 'opportunisticEncryption': 'on', 'mobileRedirect': {'stripUri': False, 'mobileSubdomain': '', 'status': 'off'}, 'sortQueryStringForCache': 'off', 'alwaysOnline': 'on', 'rocketLoader': 'off', 'ipGeolocation': 'on', 'tlsClientAuth': 'off'}
    error: an unhandled error occurred: Program exited with non-zero exit code: 1

Are you able to work around this by performing a PULUMI_ENABLE_LEGACY_PLUGIN_SEARCH  pulumi refresh? Depending on the underlying state issue, this should cause a read of the resource along with attempting to write it to the state using the newer version of the plugin (assuming you have the 4.0 resource plugin installed).

With version 4.0 of the python library, PULUMI_ENABLE_LEGACY_PLUGIN_SEARCH=true pulumi refresh produces a bunch of
* HTTP status 400: Could not route to /zones/dns_records/88f61edb99a9dc44932285f3cddbcdb3, perhaps your object identifier is invalid? (7003), No route for that URI (7000)

for each Record I have. I have bot 3.5 and 4.0 resource plugins in ~/.pulumi/plugins
Just a pulumi refresh succeeds but doesn't solve the issue.

Thanks for the update @gleb-jiji -- a plain refresh succeeding makes sense (since it'll use the 3.5 version of the plugin) whereas with that env var set, pulumi will attempt to use the latest version of the plugin. It looks like the identifiers may have even changed between versions somehow? Else, it's very odd that it cannot perform a read against those records. One other idea for how to move forward here would be to manually fix up the state via pulumi stack export and editing the resulting JSON to have initialSettings be an array and then importing the state via pulumi stack import

Since this is a virtual resource I might as well just delete it from the state.

Thanks for offering, but I don't think it's necessary. From https://github.com/cloudflare/terraform-provider-cloudflare/commit/49ba3a43633adbbc185f5f3881ecaa3c1e9b8fc2#diff-c4993bf7897ba11d3fd5d356a5c80d40d54ef3650adfe90a1180ae8e047f1858 we can see the change in schema to go from MaxItems: 1 to allowing the array, which will cause this type of breakage as there doesn't seem to be any corresponding migration for this.

With the Cloudflare provider being in 5.x version now, I don't think we'll do anything about 3.x to 4.x migration anymore


Fix changelog

Summary:
This PR tries to fix an issue where the changelog wouldn't update on release.
Is this ready to be merged into Dynamoose? (select 1):

[x] Yes
[ ] No

Other:

[x] I have searched through the GitHub pull requests to ensure this PR has not already been submitted
[x] I have updated the Dynamoose documentation (if required) given the changes I made
[x] I have added/updated the Dynamoose test cases (if required) given the changes I made
[x] I agree that all changes made in this pull request may be distributed and are made available in accordance with the Dynamoose license
[x] All of my commits and commit messages are detailed, explain what changes were made, and are easy to follow and understand
[x] I have filled out all fields above

looks good my dude!


RACK_ENV vs RAILS_ENV

Is there a reason that in failure_endpoint.rb ...
'
def call
raise_out! if OmniAuth.config.failure_raise_out_environments.include?(ENV['RACK_ENV'].to_s)
redirect_to_failure
end
'
That y'all are using RACK_ENV vs RAILS_ENV. If I set RACK_ENV in a rails app it doesn't seem to respect the value I set.

It should honor RACK_ENV. We don't use RAILS_ENV as this is, at its core, a Rack-based middleware. As such, it can be utilized in places other than just Rails.
Are you able to access RACK_ENV elsewhere in your application?


doc: Forgotten capital letter

A capital letter was missing at the beginning of a sentence.

Thanks!
bors merge


WebOSTV: no pairing alert after the rejected first one

Steps to reproduce:
0 Remove the Sampler app so that any stored device info is deleted.
1 Install and run the Sampler app.
2 Connect to a WebOS TV, click OK to pair.
3 Reject pairing on the TV.
4 Disconnect the Sampler, and connect to the same TV.
Actual behavior: no pairing alert in the Sampler and on the TV.
Expected behavior: a pairing alert should be displayed again in the Sampler and on the TV.
See also: https://github.com/ConnectSDK/Connect-SDK-Android/issues/206

First issue is similar to the one on Android (https://github.com/ConnectSDK/Connect-SDK-Android/issues/206#issuecomment-73164809): we send a register with id 1, get a response that a pairing is required with id 1, and when the user has rejected the connection, we receive an error with the same id 1, but the command associated with that id was already removed when we processed the response. So the Sampler app doesn't get the disconnected callback and the pairing alert doesn't disappear automatically.
Second issue: when the connection is established the second time, the WebOSTVServiceSocketClient appears to send the initial hello request, but doesn't get any response. That must be due to the broken WebSockets connection, because the same socket is reused, but:

LGSRWebSockets are intended for one-time-use only.  Open should be called once and only once.

Fixed. Commit 8e93ea7.


Unable to copy downloaded app updates from temp path to app path

As per the existing update workflow, New app version can be copied from temp path to app path only after running the app from temp path.
There is no way to copy the app updates from temp path to app path without running the app from temp path.

Cons of this approach:

After an app update is downloaded and unpacked, user confirmation is required to install the updates.
If the user accepts to install, runInstaller is called which runs the app from temp path and install is called which copies the current running application to app path.
In case if user doesn't confirm, there should be way to copy the app updates from temp path to app path on app quit, so that the next time when user runs the app, the updated app runs.

Please let know if there is any API which can be used to achieve this.

Can somebody help me on this issue?

Hey.
That's just how this module works. I don't think it's possible to achieve what you want. For example, you can't delete the current app executable while it's running (on Windows, at least).

After an app update is downloaded and unpacked, user confirmation is required to install the updates.

No, you could trigger this programmatically once the update is ready. It's not required to have the user confirm the update. I wouldn't advise it though as it's not good UX to interrupt the user.

If the user accepts to install, runInstaller is called which runs the app from temp path and install is called which copies the current running application to app path.

Yeah, that's how it has to work.

In case if user doesn't confirm, there should be way to copy the app updates from temp path to app path on app quit, so that the next time when user runs the app, the updated app runs.

This isn't really possible. The user can kill your app in a way that it just dies, so you won't be able to run any code. Even if the user clicks a button in your app to quit it, you can't delete the running executable as I mentioned already. Also, it would be a bit weird if the user clicked a button to quit your app and it disappears but it's still really running in the background, copying files around. Imagine if you quit the app and notice it's still visible in Task Manager / Activity Monitor. Or imagine if you quit the app, then try to shut down/restart your machine and it complained that the app is running.
OK so essentially you don't want users to ignore your update (and you shouldn't interrupt them and update like I said). I understand, you don't want users stuck on old versions out there. I suggest that when an update is ready, let the user know, and if they ignore it, store it in localStorage (or something like that) that an update is ready. Every time your app starts up and it's not in the middle of the existing update flow (i.e. if process.argv is empty) and the property in localStorage is there indicating there's an update ready, apply the update. So basically if there's an update and the user ignores it, the update will be forced the next time they launch the app.
On top of that, if there's an update and the user ignores it, you could apply the update when the app/machine has been idle for a certain amount of time. You could detect this with node-afk for example. You need to consider UX though again. You'll need to make sure though that the app goes back to the same screen and state when it finishes updating as it was before the update was started.
I hope this clears up some stuff 😄. Let me know if it doesn't.


fix gitmodules

#43  👈
main

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

Join @jakim929 and the rest of your teammates on  Graphite


Specify API key variable name in Postman Collection

Is your feature request related to a problem? Please describe.
The name for the API key variable currently defaults to apiKey.
I'd like to change this name so the name is more self-describing.
In my case, I'd like to change it to ASSEMBLYAI_API_KEY as that's usually the env variable name we use in our documentation.
Describe the solution you'd like
Let us configure the name of the API key variable name via the generator or via an extension in the OpenAPI spec.
Kindly guide me to an existing solution if I missed it :)

@Swimburger I haven't received another request for this from a Fern user, so closing this out. Can re-engage if others run into this down the road!


y2

Codecov Report

Merging #3 (682bfb4) into main (db21ce7) will increase coverage by 0.21%.
The diff coverage is n/a.

:exclamation: Current head 682bfb4 differs from pull request most recent head 91fe013. Consider uploading reports for the commit 91fe013 to get more accurate results

@@            Coverage Diff             @@
##             main       #3      +/-   ##
==========================================
+ Coverage   97.14%   97.36%   +0.21%
==========================================
  Files          34       34
  Lines        7466     7466
==========================================
+ Hits         7253     7269      +16
+ Misses        213      197      -16

Impacted Files
Coverage Δ

wavespin/modules/_visuals/static.py
96.74% <0.00%> (+2.26%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Extract texture from storageRD into separate class

First in a number of PRs we'll be doing to further break up the renderer into more managable classes now that classes such as RendererStorageRD and RendererSceneRenderRD are becoming unwieldy large.
Here we're extracting the texture objects into separate classes. This will likely be followed up with a CanvasTextureStorageRD and TextureStorageRD class to further structure things but as this will also require a CanvasTextureStorage and TextureStorage class we'll need to make similar changes to the GLES3 renderer first.

Overall, I like the approach. I am looking forward to rebasing my GLES3 work on top of this. I don't see the need to split CanvasTexture and Texture classes outside of canvas_texture_storage and texture_storage. But I am also not opposed to splitting them up with that level of granularity.

Yeah I want to hear @reduz and @JFonS opinion on it before I change it further.
Also no idea what the fail is about?

Also no idea what the fail is about?

See the logs: https://github.com/godotengine/godot/runs/5548743848?check_suite_focus=true
There's a heap use after free introduced by this PR when running a test project:
Please call TextureStorage::texture_free directly
Please call TextureStorage::texture_free directly
Please call TextureStorage::texture_free directly
Please call TextureStorage::texture_free directly
Please call TextureStorage::texture_=================================================================
==11704==ERROR: AddressSanitizer: heap-use-after-free on address 0x61c000b56890 at pc 0x55f428c601fc bp 0x7fff8b96b100 sp 0x7fff8b96b0f0
READ of size 8 at 0x61c000b56890 thread T0
    #0 0x55f428c601fb in EditorNode::_print_handler(void*, String const&, bool) editor/editor_node.cpp:5744
    #1 0x55f4375b07a1 in __print_line(String) core/string/print_string.cpp:82
    #2 0x55f4343db646 in RendererStorageRD::free(RID) servers/rendering/renderer_rd/renderer_storage_rd.cpp:8139
    #3 0x55f4343e1804 in RendererStorageRD::free(RID) servers/rendering/renderer_rd/renderer_storage_rd.cpp:8261
    #4 0x55f435782afd in RendererViewport::free(RID) servers/rendering/renderer_viewport.cpp:1190
    #5 0x55f433a4eb86 in RenderingServerDefault::_free(RID) servers/rendering/rendering_server_default.cpp:57
    #6 0x55f433b02124 in RenderingServerDefault::free(RID) servers/rendering/rendering_server_default.h:884
    #7 0x55f42e24929b in Viewport::~Viewport() scene/main/viewport.cpp:3895
    #8 0x55f42e387043 in Window::~Window() scene/main/window.cpp:1653
    #9 0x55f42e8a3a5f in AcceptDialog::~AcceptDialog() scene/gui/dialogs.cpp:349
    #10 0x55f4214c999a in void memdelete<Node>(Node*) core/os/memory.h:108
    #11 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #12 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #13 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #14 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #15 0x55f424374411 in NavigationMeshEditor::_notificationv(int, bool) (/home/runner/work/godot/godot/bin/godot.linuxbsd.double.tools.64.san+0x37c4d411)
    #16 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #17 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #18 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #19 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #20 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #21 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #22 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #23 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #24 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #25 0x55f421489e33 in BoxContainer::_notificationv(int, bool) scene/gui/box_container.h:37
    #26 0x55f421492a69 in VBoxContainer::_notificationv(int, bool) scene/gui/box_container.h:81
    #27 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #28 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #29 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #30 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #31 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #32 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #33 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #34 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #35 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #36 0x55f42a5ba855 in PanelContainer::_notificationv(int, bool) scene/gui/panel_container.h:37
    #37 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #38 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #39 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #40 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #41 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #42 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #43 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #44 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #45 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #46 0x55f421489e33 in BoxContainer::_notificationv(int, bool) scene/gui/box_container.h:37
    #47 0x55f421492a69 in VBoxContainer::_notificationv(int, bool) scene/gui/box_container.h:81
    #48 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #49 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #50 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #51 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #52 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #53 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #54 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #55 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #56 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #57 0x55f428472683 in SplitContainer::_notificationv(int, bool) scene/gui/split_container.h:37
    #58 0x55f42847a82d in VSplitContainer::_notificationv(int, bool) scene/gui/split_container.h:99
    #59 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #60 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #61 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #62 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #63 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #64 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #65 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #66 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #67 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #68 0x55f428472683 in SplitContainer::_notificationv(int, bool) scene/gui/split_container.h:37
    #69 0x55f42847a82d in VSplitContainer::_notificationv(int, bool) scene/gui/split_container.h:99
    #70 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #71 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #72 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #73 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #74 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #75 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #76 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #77 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #78 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #79 0x55f421489e33 in BoxContainer::_notificationv(int, bool) scene/gui/box_container.h:37
    #80 0x55f421492a69 in VBoxContainer::_notificationv(int, bool) scene/gui/box_container.h:81
    #81 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #82 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #83 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #84 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #85 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #86 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #87 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #88 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #89 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #90 0x55f428472683 in SplitContainer::_notificationv(int, bool) scene/gui/split_container.h:37
    #91 0x55f428476525 in HSplitContainer::_notificationv(int, bool) scene/gui/split_container.h:91
    #92 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #93 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #94 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #95 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #96 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #97 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #98 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #99 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #100 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #101 0x55f428472683 in SplitContainer::_notificationv(int, bool) scene/gui/split_container.h:37
    #102 0x55f428476525 in HSplitContainer::_notificationv(int, bool) scene/gui/split_container.h:91
    #103 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #104 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #105 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #106 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #107 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #108 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #109 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #110 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #111 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #112 0x55f428472683 in SplitContainer::_notificationv(int, bool) scene/gui/split_container.h:37
    #113 0x55f428476525 in HSplitContainer::_notificationv(int, bool) scene/gui/split_container.h:91
    #114 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #115 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #116 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #117 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #118 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #119 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #120 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #121 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #122 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #123 0x55f421489e33 in BoxContainer::_notificationv(int, bool) scene/gui/box_container.h:37
    #124 0x55f421492a69 in VBoxContainer::_notificationv(int, bool) scene/gui/box_container.h:81
    #125 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #126 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #127 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #128 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #129 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #130 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #131 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #132 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #133 0x55f42ed95229 in Panel::_notificationv(int, bool) scene/gui/panel.h:37
    #134 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #135 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #136 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #137 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #138 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #139 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #140 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #141 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #142 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #143 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #144 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #145 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #146 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #147 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #148 0x55f428d24e51 in EditorNode::_notificationv(int, bool) (/home/runner/work/godot/godot/bin/godot.linuxbsd.double.tools.64.san+0x3c5fde51)
    #149 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #150 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #151 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #152 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #153 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #154 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #155 0x55f4215e662d in Viewport::_notificationv(int, bool) scene/main/viewport.h:89
    #156 0x55f4215e941d in Window::_notificationv(int, bool) scene/main/window.h:42
    #157 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #158 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #159 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #160 0x55f42e108bc7 in void memdelete<Window>(Window*) core/os/memory.h:104
    #161 0x55f42e0c77bd in SceneTree::finalize() scene/main/scene_tree.cpp:566
    #162 0x55f41f8aed8e in OS_LinuxBSD::run() platform/linuxbsd/os_linuxbsd.cpp:362
    #163 0x55f41f89bcfc in main platform/linuxbsd/godot_linuxbsd.cpp:58
    #164 0x7f4ca76780b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
    #165 0x55f41f89b82d in _start (/home/runner/work/godot/godot/bin/godot.linuxbsd.double.tools.64.san+0x3317482d)

0x61c000b56890 is located 16 bytes inside of 1920-byte region [0x61c000b56880,0x61c000b57000)
freed by thread T0 here:
    #0 0x7f4ca889f7cf in __interceptor_free (/lib/x86_64-linux-gnu/libasan.so.5+0x10d7cf)
    #1 0x55f4360b98a6 in Memory::free_static(void*, bool) core/os/memory.cpp:168
    #2 0x55f4214c99ab in void memdelete<Node>(Node*) core/os/memory.h:111
    #3 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #4 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #5 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #6 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #7 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #8 0x55f421489e33 in BoxContainer::_notificationv(int, bool) scene/gui/box_container.h:37
    #9 0x55f421492a69 in VBoxContainer::_notificationv(int, bool) scene/gui/box_container.h:81
    #10 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #11 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #12 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #13 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #14 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #15 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #16 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #17 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #18 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #19 0x55f42a5ba855 in PanelContainer::_notificationv(int, bool) scene/gui/panel_container.h:37
    #20 0x55f4374c464d in Object::notification(int, bool) core/object/object.cpp:828
    #21 0x55f4374b52c3 in Object::_predelete() core/object/object.cpp:354
    #22 0x55f4374f1df9 in predelete_handler(Object*) core/object/object.cpp:1871
    #23 0x55f4214c97d9 in void memdelete<Node>(Node*) core/os/memory.h:104
    #24 0x55f42df9bdd1 in Node::_notification(int) scene/main/node.cpp:159
    #25 0x55f42053cbd5 in Node::_notificationv(int, bool) scene/main/node.h:45
    #26 0x55f42147cb43 in CanvasItem::_notificationv(int, bool) scene/main/canvas_item.h:45
    #27 0x55f42147f839 in Control::_notificationv(int, bool) scene/gui/control.h:46
    #28 0x55f421487037 in Container::_notificationv(int, bool) scene/gui/container.h:37
    #29 0x55f428472683 in SplitContainer::_notificationv(int, bool) scene/gui/split_container.h:37

previously allocated by thread T0 here:
    #0 0x7f4ca889fbc8 in malloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
    #1 0x55f4360b884b in Memory::alloc_static(unsigned long, bool) core/os/memory.cpp:75
    #2 0x55f4360b875c in operator new(unsigned long, char const*) core/os/memory.cpp:40
    #3 0x55f428ce24ac in EditorNode::EditorNode() editor/editor_node.cpp:6818
    #4 0x55f41fa31dda in Main::start() main/main.cpp:2316
    #5 0x55f41f89bc2c in main platform/linuxbsd/godot_linuxbsd.cpp:57
    #6 0x7f4ca76780b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)

SUMMARY: AddressSanitizer: heap-use-after-free editor/editor_node.cpp:5744 in EditorNode::_print_handler(void*, String const&, bool)
Shadow bytes around the buggy address:
  0x0c3880162cc0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3880162cd0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3880162ce0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3880162cf0: fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa
  0x0c3880162d00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c3880162d10: fd fd[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3880162d20: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3880162d30: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3880162d40: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3880162d50: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c3880162d60: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==11704==ABORTING
FATAL ERROR: An incorrectly used memory was found.

I would not split into that many classes to be honest, just RendererRD::TextureStoage is likely good enough for it and CanvasTexture. Additionally I think renderer_rd/storage is good enough for storage classes, its implicitly part of the renderer_rd folder.

Also no idea what the fail is about?

See the logs: https://github.com/godotengine/godot/runs/5548743848?check_suite_focus=true
There's a heap use after free introduced by this PR when running a test project:

Yeah but I don't get whats triggering it. It's saying editor_node.cpp:5744 but I've gone nowhere near the editor classes, all the changes are purely in the renderer. I'll have a closer look in case that is calling into the renderer in a way that leaks something.
One issue that I don't like, and maybe @reduz you can comment on this, while there are separate allocation functions (texture_allocate, mesh_allocate etc.), but there is only one free method. With splitting things up we'll have a texture_free, canvas_texture_free etc. Though I've made the generic free method call into the different storage classes maybe a fault snuck in there....

I also wonder about moving renderer_rd to a module, since it should be possible to turn it off and use GLES3 instead.

I think thats a good idea but that should probably become a PR on its own. In that respect, GLES3 ended up in drivers, it should probably be a module then as well.
I'd say Dummy should remain where it is because you want to use that as the fallback.

Ok, Rebased and squashed this. Texture and CanvasTexture have now been moved back into canvas_texture_storage and texture_storage and I've moved most of the code back into the access methods in the *Storage classes.
The split in RendererRD and GLES3 are now very similar in approach.
I've also moved creating our default textures into TextureStorage and moved one of the remaining canvas texture methods into CanvasTexture.
I think these two classes are now as good as they'll get (bugfixing not withstanding).

It looks great for me, would be happy if @JFonS and @clayjohn can review too.

Everything looks good to me. CanvasTextureStorage ended up a bit slim, so it could be merged into TextureStorage, but it's not a big deal.

It kind of is but I like the split seeing there is a lot more in TextureStorage and it makes it far easier to find and manage.
I'm a big believer in the single class, single file approach through seeing Texture and CanvasTexture are tightly bound to their storage class it makes sense to have them included in the same file.
Personal preference though :)

I am ok either way, (separate or joined) for Texture and CanvasTexture. I suppose separate may be a bit easier to understand what it is.

I am ok either way, (separate or joined) for Texture and CanvasTexture. I suppose separate may be a bit easier to understand what it is.

Is there a reason why the "GLES3" namespace doesn't have a "Renderer" prefix? Every other rendering related namespace I have found so far ("RendererDummy", "RendererRD", "RendererSceneRenderImplementation", ...) has it.

Is there a reason why the "GLES3" namespace doesn't have a "Renderer" prefix? Every other rendering related namespace I have found so far ("RendererDummy", "RendererRD", "RendererSceneRenderImplementation", ...) has it.

The GLES3 is a bit of a weird one because it is both driver and renderer implementation combined. We could rename it RendererGLES3 to be consistent.
I personally "hate" RendererSceneRenderImplementation, it's way too long, but it made sense at the time. After we pull storage apart reorganizing the render implementation classes is next on the line and I'm tempted at that time to put everything into the RendererRD namespace

Hmm, that's strange, I'm guessing this is a bug in the code that should free up the textures on cleanup of TextureStorage. We create a number of default textures (white, black, etc) and the first set of errors probably are freeing up those textures failing.
Maybe it's already destroyed the rid owner when it runs through ~TextureStorage ?


Warning produced running job

Right now, a successful completion of a Kettle ETL for the portal will produce the following warning:

WARNING: -h,--fileToPublishHasHeaderRow is being ignored because -sc,--pathToFTPControlFile or -cf,--pathToControlFile was supplied.Publishing

ETLs will succeed, but will only recognize the control file settings.
Just need to fix the ETL/Utilities/DataSyncHTTP.ktr step which compiles the DataSync command.

I have made the change and am testing on our system before updating this repository.


HIVE-25338: AIOBE in conv UDF if input is empty

What changes were proposed in this pull request?
If conv UDF has empty input, return the output as empty rather than throwing AIOBE.
Why are the changes needed?
Query is failing
Does this PR introduce any user-facing change?
No
How was this patch tested?
Included Testcase in q file.

the changes looks good to me. +1.


what is the require package to build in debian 9?

make and dpkg-buildpackage -b
both show this error from source.
src/Mayaqua/Encrypt.c: In function ‘Enc_tls1_P_hash’:
src/Mayaqua/Encrypt.c:175:11: error: storage size of ‘ctx’ isn’t known
HMAC_CTX ctx;
^~~
src/Mayaqua/Encrypt.c:176:11: error: storage size of ‘ctx_tmp’ isn’t known
HMAC_CTX ctx_tmp;
^~~~~~~
src/Mayaqua/Encrypt.c:184:2: warning: ‘HMAC_Init’ is deprecated [-Wdeprecated-declarations]
HMAC_Init_ex(&ctx,sec,sec_len,md, NULL);
^~~~~~~~~~~~
In file included from /usr/include/openssl/hmac.h:13:0,
from /usr/include/openssl/ssl.h:56,
from src/Mayaqua/Encrypt.c:127:
/usr/include/openssl/hmac.h:28:1: note: declared here
DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
^
src/Mayaqua/Encrypt.c:185:2: warning: ‘HMAC_Init’ is deprecated [-Wdeprecated-declarations]
HMAC_Init_ex(&ctx_tmp,sec,sec_len,md, NULL);
^~~~~~~~~~~~
In file included from /usr/include/openssl/hmac.h:13:0,
from /usr/include/openssl/ssl.h:56,
from src/Mayaqua/Encrypt.c:127:
/usr/include/openssl/hmac.h:28:1: note: declared here
DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void key, int len,
^
src/Mayaqua/Encrypt.c:192:3: warning: ‘HMAC_Init’ is deprecated [-Wdeprecated-declarations]
HMAC_Init_ex(&ctx,NULL,0,NULL,NULL); / re-init */
^~~~~~~~~~~~
In file included from /usr/include/openssl/hmac.h:13:0,
from /usr/include/openssl/ssl.h:56,
from src/Mayaqua/Encrypt.c:127:
/usr/include/openssl/hmac.h:28:1: note: declared here
DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void key, int len,
^
src/Mayaqua/Encrypt.c:193:3: warning: ‘HMAC_Init’ is deprecated [-Wdeprecated-declarations]
HMAC_Init_ex(&ctx_tmp,NULL,0,NULL,NULL); / re-init */
^~~~~~~~~~~~
In file included from /usr/include/openssl/hmac.h:13:0,
from /usr/include/openssl/ssl.h:56,
from src/Mayaqua/Encrypt.c:127:
/usr/include/openssl/hmac.h:28:1: note: declared here
DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
^
src/Mayaqua/Encrypt.c:169:43: warning: implicit declaration of function ‘HMAC_cleanup’ [-Wimplicit-function-declaration]
#define HMAC_CTX_cleanup(ctx)             HMAC_cleanup(ctx)
^
src/Mayaqua/Encrypt.c:212:2: note: in expansion of macro ‘HMAC_CTX_cleanup’
HMAC_CTX_cleanup(&ctx);
^~~~~~~~~~~~~~~~
src/Mayaqua/Encrypt.c: In function ‘MdProcess’:
src/Mayaqua/Encrypt.c:460:2: warning: ‘HMAC_Init’ is deprecated [-Wdeprecated-declarations]
HMAC_Init(md->Ctx, NULL, 0, NULL);
^~~~~~~~~
In file included from /usr/include/openssl/hmac.h:13:0,
from /usr/include/openssl/ssl.h:56,
from src/Mayaqua/Encrypt.c:127:
/usr/include/openssl/hmac.h:28:1: note: declared here
DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
^
src/Mayaqua/Encrypt.c: In function ‘SetMdKey’:
src/Mayaqua/Encrypt.c:476:2: warning: ‘HMAC_Init’ is deprecated [-Wdeprecated-declarations]
HMAC_Init(md->Ctx, key, key_size, md->Md);
^~~~~~~~~
In file included from /usr/include/openssl/hmac.h:13:0,
from /usr/include/openssl/ssl.h:56,
from src/Mayaqua/Encrypt.c:127:
/usr/include/openssl/hmac.h:28:1: note: declared here
DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
^
src/Mayaqua/Encrypt.c:476:36: warning: passing argument 4 of ‘HMAC_Init’ from incompatible pointer type [-Wincompatible-pointer-types]
HMAC_Init(md->Ctx, key, key_size, md->Md);
^~
In file included from /usr/include/openssl/hmac.h:13:0,
from /usr/include/openssl/ssl.h:56,
from src/Mayaqua/Encrypt.c:127:
/usr/include/openssl/hmac.h:28:1: note: expected ‘const EVP_MD * {aka const struct evp_md_st *}’ but argument is of type ‘const struct env_md_st *’
DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
^
src/Mayaqua/Encrypt.c: In function ‘NewMd’:
src/Mayaqua/Encrypt.c:492:8: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
m->Md = EVP_get_digestbyname(name);
^
src/Mayaqua/Encrypt.c:499:29: error: invalid application of ‘sizeof’ to incomplete type ‘struct hmac_ctx_st’
m->Ctx = ZeroMalloc(sizeof(struct hmac_ctx_st));
^~~~~~
src/Mayaqua/Encrypt.c:500:2: warning: implicit declaration of function ‘HMAC_CTX_init’ [-Wimplicit-function-declaration]
HMAC_CTX_init(m->Ctx);
^~~~~~~~~~~~~
src/Mayaqua/Encrypt.c:502:24: warning: passing argument 1 of ‘EVP_MD_size’ from incompatible pointer type [-Wincompatible-pointer-types]
m->Size = EVP_MD_size(m->Md);
^
In file included from /usr/include/openssl/x509.h:23:0,
from /usr/include/openssl/ssl.h:50,
from src/Mayaqua/Encrypt.c:127:
/usr/include/openssl/evp.h:410:5: note: expected ‘const EVP_MD * {aka const struct evp_md_st *}’ but argument is of type ‘const struct env_md_st *’
int EVP_MD_size(const EVP_MD *md);
^~~~~~~~~~~
src/Mayaqua/Encrypt.c: In function ‘NewCipher’:
src/Mayaqua/Encrypt.c:554:29: error: invalid application of ‘sizeof’ to incomplete type ‘struct evp_cipher_ctx_st’
c->Ctx = ZeroMalloc(sizeof(struct evp_cipher_ctx_st));
^~~~~~
src/Mayaqua/Encrypt.c: In function ‘RsaBinToPublic’:
src/Mayaqua/Encrypt.c:822:9: error: dereferencing pointer to incomplete type ‘RSA {aka struct rsa_st}’
if (rsa->e != NULL)
^~
src/Mayaqua/Encrypt.c: In function ‘RsaPublicToBuf’:
src/Mayaqua/Encrypt.c:857:45: error: dereferencing pointer to incomplete type ‘EVP_PKEY {aka struct evp_pkey_st}’
if (k == NULL || k->pkey == NULL || k->pkey->pkey.rsa == NULL
^~
src/Mayaqua/Encrypt.c: In function ‘NewX509’:
src/Mayaqua/Encrypt.c:2058:25: error: dereferencing pointer to incomplete type ‘X509 {aka struct x509_st}’
ASN1_INTEGER *s = x509->cert_info->serialNumber;
^~
src/Mayaqua/Encrypt.c: In function ‘RsaCheck’:
src/Mayaqua/Encrypt.c:2793:3: warning: ‘RSA_generate_key’ is deprecated [-Wdeprecated-declarations]
rsa = RSA_generate_key(bit, RSA_F4, NULL, NULL);
^~~
In file included from /usr/include/openssl/rsa.h:13:0,
from /usr/include/openssl/x509.h:31,
from /usr/include/openssl/ssl.h:50,
from src/Mayaqua/Encrypt.c:127:
/usr/include/openssl/rsa.h:193:1: note: declared here
DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void
^
src/Mayaqua/Encrypt.c: In function ‘RsaGen’:
src/Mayaqua/Encrypt.c:2863:3: warning: ‘RSA_generate_key’ is deprecated [-Wdeprecated-declarations]
rsa = RSA_generate_key(bit, RSA_F4, NULL, NULL);
^~~
In file included from /usr/include/openssl/rsa.h:13:0,
from /usr/include/openssl/x509.h:31,
from /usr/include/openssl/ssl.h:50,
from src/Mayaqua/Encrypt.c:127:
/usr/include/openssl/rsa.h:193:1: note: declared here
DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void
^
src/Mayaqua/Encrypt.c: In function ‘X509ToX’:
src/Mayaqua/Encrypt.c:3977:7: warning: ‘ASN1_STRING_data’ is deprecated [-Wdeprecated-declarations]
char *uri = (char *)ASN1_STRING_data(ad->location->d.uniformResourceIdentifier);
^~~~
In file included from /usr/include/openssl/bn.h:31:0,
from /usr/include/openssl/asn1.h:24,
from /usr/include/openssl/objects.h:916,
from /usr/include/openssl/evp.h:27,
from /usr/include/openssl/x509.h:23,
from /usr/include/openssl/ssl.h:50,
from src/Mayaqua/Encrypt.c:127:
/usr/include/openssl/asn1.h:553:1: note: declared here
DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x))
^
src/Mayaqua/Encrypt.c: In function ‘BioToBuf’:
src/Mayaqua/Encrypt.c:4083:12: error: dereferencing pointer to incomplete type ‘BIO {aka struct bio_st}’
size = bio->num_write;
^~
src/Mayaqua/Encrypt.c: In function ‘FreeOpenSSLThreadState’:
src/Mayaqua/Encrypt.c:4178:2: warning: ‘ERR_remove_state’ is deprecated [-Wdeprecated-declarations]
ERR_remove_state(0);
^~~~~~~~~~~~~~~~
In file included from /usr/include/openssl/ct.h:13:0,
from /usr/include/openssl/ssl.h:61,
from src/Mayaqua/Encrypt.c:127:
/usr/include/openssl/err.h:247:1: note: declared here
DEPRECATEDIN_1_0_0(void ERR_remove_state(unsigned long pid))
^
src/Mayaqua/Encrypt.c: In function ‘InitCryptLibrary’:
src/Mayaqua/Encrypt.c:4203:2: warning: implicit declaration of function ‘SSLeay_add_all_digests’ [-Wimplicit-function-declaration]
SSLeay_add_all_digests();
^~~~~~~~~~~~~~~~~~~~~~
src/Mayaqua/Encrypt.c: In function ‘DhNew’:
src/Mayaqua/Encrypt.c:5003:8: error: dereferencing pointer to incomplete type ‘struct dh_st’
dh->dh->p = BinToBigNum(buf->Buf, buf->Size);
^~
Makefile:77: recipe for target 'tmp/objs/Mayaqua/Encrypt.o' failed
make: *** [tmp/objs/Mayaqua/Encrypt.o] Error 1
make from semi compiled version from downloaded biggest zip file which contain multi-platform.
/usr/bin/ld: lib/libedit.a(search.o): relocation R_X86_64_32 against .rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libedit.a(sig.o): relocation R_X86_64_32S against .rodata' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libedit.a(term.o): relocation R_X86_64_32S against .rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libedit.a(tty.o): relocation R_X86_64_32 against .rodata' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libedit.a(vi.o): relocation R_X86_64_32 against symbol cv__isWord' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libedit.a(vis.o): relocation R_X86_64_32S against .rodata' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libedit.a(tokenizer.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libedit.a(history.o): relocation R_X86_64_32S against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libedit.a(filecomplete.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libedit.a(fcns.o): relocation R_X86_64_32 against .rodata' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libedit.a(help.o): relocation R_X86_64_32 against .rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libedit.a(emacs.o): relocation R_X86_64_32 against symbol ce__isword' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libedit.a(unvis.o): relocation R_X86_64_32S against .rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(lib_mouse.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(lib_printw.o): relocation R_X86_64_32 against .text' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(lib_scanw.o): relocation R_X86_64_32 against .text' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(tty_update.o): relocation R_X86_64_32 against symbol _nc_outch' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(lib_acs.o): relocation R_X86_64_32 against symbol acs_map' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(lib_options.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(lib_setup.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(lib_termcap.o): relocation R_X86_64_32S against symbol _nc_globals' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(lib_ti.o): relocation R_X86_64_32S against symbol boolnames' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(lib_tparm.o): relocation R_X86_64_32S against .rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(lib_tputs.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(read_entry.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(setbuf.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(trim_sgr0.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(unctrl.o): relocation R_X86_64_32S against .rodata' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(lib_color.o): relocation R_X86_64_32S against .rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(lib_mvcur.o): relocation R_X86_64_32 against symbol _nc_outch' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(lib_tstp.o): relocation R_X86_64_32S against symbol _nc_outch' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(lib_vidattr.o): relocation R_X86_64_32 against symbol _nc_outch' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(comp_error.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(db_iterator.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(home_terminfo.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(init_keytry.o): relocation R_X86_64_32S against symbol _nc_tinfo_fkeys' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(lib_baudrate.o): relocation R_X86_64_32S against .rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(lib_set_term.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libncurses.a(lib_slkrefr.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libncurses.a(resizeterm.o): relocation R_X86_64_32 against symbol nc_prescreen' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libz.a(compress.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libz.a(uncompr.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libz.a(deflate.o): relocation R_X86_64_32S against .rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libz.a(trees.o): relocation R_X86_64_32S against .data' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libz.a(zutil.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libz.a(inflate.o): relocation R_X86_64_32 against symbol zcalloc' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libz.a(inftrees.o): relocation R_X86_64_32S against .rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libz.a(inffast.o): relocation R_X86_64_32S against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: lib/libz.a(crc32.o): relocation R_X86_64_32 against .rodata' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: lib/libintelaes.a(intel_aes.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
Makefile:18: recipe for target 'i_read_and_agree_the_license_agreement' failed
make[1]: *** [i_read_and_agree_the_license_agreement] Error 1
make[1]: Leaving directory '/home/allan/Downloads/VPN-CD-v4.22-9634-beta-2016.11.27/Linux/SoftEther_VPN_Server/64bit-_Intel_x64_or_AMD64/softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit/vpnserver'
what can i do?
can you make a deb  build guide?

Please install the following packages:
sudo apt-get install -y build-essential libreadline-dev libssl-dev

I have got it, libreadline-dev libssl1.0-dev for compile zlib1g-dev and libncurses5-dev for link.and to be linked success, we will chang network.c to remove SSLv3_method.

about -fPIC question , not dealt it with.

Silly question. Is your debian 64bit OS?

yes ，debian sid 64bit

Sorry, I really can't figure this one out.
The compilation should work fine though on debian8 and ubuntu 16.04
The only thing I can think of, is to run:
"sudo ldconfig"
and hope it sorts itself out

what did you point to?

Sorry, I really can't figure this one out.
The compilation should work fine though on debian8 and ubuntu 16.04
The only thing I can think of, is to run:
"sudo ldconfig"
and hope it sorts itself out

from the definition of ldconfig:
" ldconfigcreates the necessary links and cache to the most recent
shared libraries found in the directories specified on the command line,
in the file//etc/ld.so.conf/, and in the trusted directories
(//lib/and//usr/lib/)"
sp hopefully if there are trivial errors in your shared libs, this
command should fix them, so that SE would link successfully.
On 03/18/2017 05:33 PM, youxiaojie wrote:

what did you point to?
Sorry, I really can't figure this one out.
The compilation should work fine though on debian8 and ubuntu 16.04

The only thing I can think of, is to run:
"sudo ldconfig"
and hope it sorts itself out

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/SoftEtherVPN/SoftEtherVPN/issues/301#issuecomment-287557504,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEQBxSArB0yl_avIaxyiy7QVfu1nFeQ6ks5rnAc-gaJpZM4L_SAw.

does ldconfig can deal with  -fPIC question or SSLv3_method?my english is poor,sorry

hey their. I got the same problem on Debian testing.
I am pretty sure the error comes form libssl which is since debiad testing on package version 1.1 and not 1.0 .

I just got mine to compile on my Rasbian testing install, and it required installing zlib1g-dev and libssl1.0-dev. It also required the workaround for the SSLv3 error mentiond at #246. I don't know enough about editing Debian packages to fix the dependencies in the debian folder, but this allows you to compile and run the software.

It seems debian got it's file compiled in a different way that softether did, so they cannot be linked together. I got the same issue (-fPIC) as for debian testing (after stretch release) and stretch on a DevCapsule's 64bit machine.

hello, i am interested in having softether packaged for debian 9 too, any chance to get the sslv3 problem fixed?
p.s.
to use sslv3 in 2017 is dumb http://disablessl3.com/

@PalinuroSec I found a recipe to compile in debian 9 http://www.vpnusers.com/viewtopic.php?f=7&t=8476
sudo apt-get install zlib1g-dev libncurses5-dev libssl1.0-dev build-essential libreadline-dev git sudo ldconfig mkdir ~/source cd ~/source git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git cd SoftEtherVPN/src/Mayaqua mv Network.c Network.c.orig cat Network.c.orig | sed ‘s!SSLv3_method!SSLv23_client_method!g’ > Network.c cd ../.. ./configure make

https://github.com/SoftEtherVPN/SoftEtherVPN/issues/341
New maintainer needed

Debian 9 comes with openssl-1.1.0, which is not compatible with openssl-1.0.X

hello, i have already debianized and packaged it for parrotsec.org which is based on debian testing
here you can find the debianized source code
https://dev.parrotsec.org/parrot/softether-vpn
and here you can download the build results
https://archive.parrotsec.org/parrot/pool/main/s/softether-vpn

One million of "Thank You" @PalinuroSec for your work, but I've needed to make some modifications on the source
ssl.patch.txt

@PalinuroSec You sir, are a god. Thank you very much you saved me many hours of head scratching.

Hi people. If I understood correctly the problem is through the comments:
https://github.com/SoftEtherVPN/SoftEtherVPN/issues/301#issuecomment-320073384
https://github.com/SoftEtherVPN/SoftEtherVPN/issues/301#issuecomment-326389993
Resolved.
Also as looking at lines 13020 onwards, it looks like SoftEther is behaving as it should regarding old and new SSL.
If everyone is happy, I'd like to close this issue within the next few days


[AVM Module Issue]: avm.res.synapse.workspace Workspace using CMK unable to deploy when Keyvault resource is located in a different resource group

Check for previous/existing GitHub issues

[x] I have checked for previous/existing GitHub issues

Issue Type?
Bug
Module Name
avm/res/synapse/workspace
(Optional) Module Version
No response
Description
The scope keeps getting evaluated as resourceGroup() when passing in encryptionActivateWorkspace true and customerManagedKey.keyVaultResourceId  set to a kevvault resource located in a different resource group.
main.bicep
  module workspace_cmk_rbac 'modules/nested_cmkRbac.bicep' = if (encryptionActivateWorkspace) {
    name: '${workspace.name}-cmk-rbac'
    params: {
      workspaceIndentityPrincipalId: workspace.identity.principalId
      keyvaultName: !empty(customerManagedKey.?keyVaultResourceId) ? cMKKeyVault.name : ''
      usesRbacAuthorization: !empty(customerManagedKey.?keyVaultResourceId)
        ? cMKKeyVault.properties.enableRbacAuthorization
        : true
    }
    scope: encryptionActivateWorkspace
      ? resourceGroup(
          split((customerManagedKey.?keyVaultResourceId ?? '//'), '/')[2],
          split((customerManagedKey.?keyVaultResourceId ?? '////'), '/')[4]
        )
      : resourceGroup()
  }

(Optional) Correlation Id
No response

Hey @chris-gibbs,
would you happen to have a pipeline run available we could check out?
Quite surprising that the logic does not kick in. Then again, it's anyways a bit special that it has this extra scope case handling in the first place (compared to most of not all other module implementations).


Software-6012: OSG-24

Update docs the reference OSG 23 as the latest series to reference OSG 24 instead
Update docs that compare OSG 3.6 and 23 to compare 23 and 24
Remove references to OSG 3.6 and EL7 from most docs
Update docker references to pull from hub.opensciencegrid.org/osg-htc instead of docker.io/opensciencegrid

Marking this as do-not-merge since we should hold off on this until the OSG 24 release

Wiil do.


Autofix layer position doesn't work

Describe the bug
When loading a sketch design which hasn't been set to top:0 and left:0. We normally dispatch the AutoFixPagePosition action (in the store) that is supposed to reset the x and y position of the outer frame to 0. This doesn't seem to always work.
To Reproduce
Steps to reproduce the behavior:

Open a sketch design with a top and left different than 0
The design should render out of the viewport. You then have to either zoom out to see the design or resize your screen (if you have a bigger screen)

@manekinekko Can you provide a sample file ?

card.test.zip

Implemented by #186

Fixed in #186


conversion script for BERT

Description

Added script to compare gluon and tf model inference result
Added script to convert tf model checkpoint to gluon parameters.

Checklist
Essentials

[x] Changes are complete (i.e. I finished coding on this PR)
[ ] All changes have test coverage
[x] Code is well-documented

Changes

[ ] Feature1, tests, (and when applicable, API doc)
[ ] Feature2, tests, (and when applicable, API doc)

Comments

If this change is a backward incompatible change, why must this change be made.
Interesting edge cases to note here

Job PR-449/6 is complete.
Docs are uploaded to http://gluon-nlp-staging.s3-accelerate.dualstack.amazonaws.com/PR-449/6/index.html

Job PR-449/7 is complete.
Docs are uploaded to http://gluon-nlp-staging.s3-accelerate.dualstack.amazonaws.com/PR-449/7/index.html

Job PR-449/8 is complete.
Docs are uploaded to http://gluon-nlp-staging.s3-accelerate.dualstack.amazonaws.com/PR-449/8/index.html

Job PR-449/10 is complete.
Docs are uploaded to http://gluon-nlp-staging.s3-accelerate.dualstack.amazonaws.com/PR-449/10/index.html


D365 online limit of concurrent request is 52, not 2 as mentioned in this doc

note: This feedback was already provided by user dasabate on 12-May-2021 and wrongly closed.
The line "For Dynamics 365 online, there's a limit of two concurrent batch calls per organization." is outdated since this is no longer true. This limit has been overseeded by the new API Limits (throttling).
Previously, this feedback was closed, pointing out to this doc:  https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide/jj863631(v=crm.8)#Run-time limitations
Specifically this sentence: "Throttling of concurrent calls – for Microsoft Dynamics 365 (online) there is a limit of 2 concurrent ExecuteMultipleRequest executions per organization."
But this documentation is deprecated, as can be verified in that doc:

Indeed the default limit used to be 2 parallel requests in the past (3 or 4 years ago, before the API Protection limit implementation), therefore currently, the limit is 52 concurrent requests, as we can verify in the up to date documentation regarding  this topic:
https://docs.microsoft.com/en-us/power-apps/developer/data-platform/api-limits#concurrent-requests

Please, update documentation accordingly. Thanks in advance.

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

ID: 304d4c46-c0ac-05c9-15eb-d8b677ec5e90
Version Independent ID: 36a79d36-2b72-2722-68e5-e167f9a2cd41
Content: Copy and transform data in Dynamics 365 (Microsoft Dataverse) or Dynamics CRM - Azure Data Factory & Azure Synapse
Content Source: articles/data-factory/connector-dynamics-crm-office-365.md
Service: data-factory
Sub-service: data-movement
GitHub Login: @jianleishen
Microsoft Alias: jianleishen

@robertoilidio
Thanks for your feedback! We will investigate and update as appropriate.

@robertoilido
Thanks for your feedback! We have assigned the issue to author and will provide further updates.


Upgrade dependency 'json' to v20231013

Upgrade json to version 20231013

Fixed with : https://github.com/wso2/carbon-identity-framework/pull/6032


Queries Anomalies

Looks like the following queries trying to find the same issues in different platforms but do not share the same metadata
Can you please approve/deny the assumption?
Different Severity & Category
Automatic Minor Upgrades Disabled
[
      {
        "id": "3b6d777b-76e3-4133-80a3-0d6f667ade7f",
        "queryName": "Automatic Minor Upgrades Disabled",
        "severity": "HIGH",
        "category": "Encryption",
        "descriptionText": "RDS Instance Auto Minor Version Upgrade feature in Aws Db Instance must be true",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_instance#auto_minor_version_upgrade",
        "platform": "Terraform",
        "descriptionID": "240cddcc",
        "cloudProvider": "aws"
      },
      {
        "id": "f0104061-8bfc-4b45-8a7d-630eb502f281",
        "queryName": "Automatic Minor Upgrades Disabled",
        "severity": "MEDIUM",
        "category": "Best Practices",
        "descriptionText": "AWS RDS should have automatic minor upgrades enabled, which means the attribute 'AutoMinorVersionUpgrade' must be set to true.",
        "descriptionUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html",
        "platform": "CloudFormation",
        "descriptionID": "e2908402",
        "cloudProvider": "aws"
      }
]

SNS Topic is Publicly Accessible For Subscription
[
      {
        "id": "b26d2b7e-60f6-413d-a3a1-a57db24aa2b3",
        "queryName": "SNS Topic is Publicly Accessible For Subscription",
        "severity": "MEDIUM",
        "category": "Access Control",
        "descriptionText": "This query checks if SNS Topic is Accessible For Subscription",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic",
        "platform": "Terraform",
        "descriptionID": "52e85de5",
        "cloudProvider": "aws"
      },
      {
        "id": "ae53ce91-42b5-46bf-a84f-9a13366a4f13",
        "queryName": "SNS Topic is Publicly Accessible For Subscription",
        "severity": "LOW",
        "category": "Observability",
        "descriptionText": "Ensure appropriate subscribers to each SNS topic",
        "descriptionUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html#cfn-sns-topic-subscription",
        "platform": "CloudFormation",
        "descriptionID": "93100b84",
        "cloudProvider": "aws"
      }
]

EC2 Instance Has Public IP
[
      {
        "id": "5a2486aa-facf-477d-a5c1-b010789459ce",
        "queryName": "EC2 Instance Has Public IP",
        "severity": "HIGH",
        "category": "Networking and Firewall",
        "descriptionText": "EC2 Instance should not have a public IP address.",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#associate_public_ip_address",
        "platform": "Terraform",
        "descriptionID": "c6f1d1f4",
        "cloudProvider": "aws"
      },
      {
        "id": "b3de4e4c-14be-4159-b99d-9ad194365e4c",
        "queryName": "EC2 Instance Has Public IP",
        "severity": "MEDIUM",
        "category": "Insecure Configurations",
        "descriptionText": "EC2 Subnet should not have MapPublicIpOnLaunch set to true",
        "descriptionUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-mappubliciponlaunch",
        "platform": "CloudFormation",
        "descriptionID": "22e3d598",
        "cloudProvider": "aws"
      }
]

SQS With SSE Disabled
[
      {
        "id": "6e8849c1-3aa7-40e3-9063-b85ee300f29f",
        "queryName": "SQS With SSE Disabled",
        "severity": "HIGH",
        "category": "Insecure Configurations",
        "descriptionText": "Amazon Simple Queue Service (SQS) queue is not protecting the contents of their messages using Server-Side Encryption (SSE)",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sqs_queue",
        "platform": "Terraform",
        "descriptionID": "e478b54b",
        "cloudProvider": "aws"
      },
      {
        "id": "12726829-93ed-4d51-9cbe-13423f4299e1",
        "queryName": "SQS with SSE disabled",
        "severity": "MEDIUM",
        "category": "Secret Management",
        "descriptionText": "AWS SQS Queue should have a KMS Master Key defined",
        "descriptionUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-kmsmasterkeyid",
        "platform": "CloudFormation",
        "descriptionID": "7c3c1b44",
        "cloudProvider": "aws"
      }
]

Shared Host IPC Namespace
[
      {
        "id": "e94d3121-c2d1-4e34-a295-139bfeb73ea3",
        "queryName": "Shared Host IPC Namespace",
        "severity": "HIGH",
        "category": "Insecure Configurations",
        "descriptionText": "Container should not share the host IPC namespace",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/pod#host_ipc",
        "platform": "Terraform",
        "descriptionID": "e76243f6"
      },
      {
        "id": "cd290efd-6c82-4e9d-a698-be12ae31d536",
        "queryName": "Shared Host IPC Namespace",
        "severity": "HIGH",
        "category": "Insecure Configurations",
        "descriptionText": "Container should not share the host IPC namespace",
        "descriptionUrl": "https://kubernetes.io/docs/concepts/policy/pod-security-policy/",
        "platform": "Kubernetes",
        "descriptionID": "1ef1fe71"
      },
      {
        "id": "baa3890f-bed7-46f5-ab8f-1da8fc91c729",
        "queryName": "Shared Host IPC Namespace",
        "severity": "MEDIUM",
        "category": "Resource Management",
        "descriptionText": "The host IPC namespace should not be shared.",
        "descriptionUrl": "https://docs.docker.com/compose/compose-file/compose-file-v3/#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir",
        "platform": "DockerCompose",
        "descriptionID": "987dc2d7"
      }
 ]

Shared Host Network Namespace
[
      {
        "id": "ac1564a3-c324-4747-9fa1-9dfc234dace0",
        "queryName": "Shared Host Network Namespace",
        "severity": "HIGH",
        "category": "Insecure Configurations",
        "descriptionText": "Container should not share the host network namespace",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/pod#host_network",
        "platform": "Terraform",
        "descriptionID": "bf155ca7"
      },
      {
        "id": "6b6bdfb3-c3ae-44cb-88e4-7405c1ba2c8a",
        "queryName": "Shared Host Network Namespace",
        "severity": "HIGH",
        "category": "Insecure Configurations",
        "descriptionText": "Container should not share the host network namespace",
        "descriptionUrl": "https://kubernetes.io/docs/concepts/policy/pod-security-policy/",
        "platform": "Kubernetes",
        "descriptionID": "50e5de80"
      },
      {
        "id": "071a71ff-f868-47a4-ac0b-3c59e4ab5443",
        "queryName": "Shared Host Network Namespace",
        "severity": "MEDIUM",
        "category": "Networking and Firewall",
        "descriptionText": "Container should not share the host network namespace",
        "descriptionUrl": "https://docs.docker.com/compose/compose-file/compose-file-v3/#network_mode",
        "platform": "DockerCompose",
        "descriptionID": "25acba10"
      }
]

Not Limited Capabilities For Pod Security Policy
[
      {
        "id": "2acb555f-f4ad-4b1b-b984-84e6588f4b05",
        "queryName": "Not Limited Capabilities For Pod Security Policy",
        "severity": "HIGH",
        "category": "Insecure Configurations",
        "descriptionText": "Limit capabilities for a Pod Security Policy",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/pod_security_policy#required_drop_capabilities",
        "platform": "Terraform",
        "descriptionID": "c42b1890"
      },
      {
        "id": "caa93370-791f-4fc6-814b-ba6ce0cb4032",
        "queryName": "Not Limited Capabilities For Pod Security Policy",
        "severity": "MEDIUM",
        "category": "Build Process",
        "descriptionText": "Limit capabilities for a Pod Security Policy",
        "descriptionUrl": "https://kubernetes.io/docs/concepts/policy/pod-security-policy/",
        "platform": "Kubernetes",
        "descriptionID": "eaf6d4ba"
      }
]

Different Severity
IAM Policy Grants Full Permissions
[
      {
        "id": "575a2155-6af1-4026-b1af-d5bc8fe2a904",
        "queryName": "IAM Policy Grants Full Permissions",
        "severity": "MEDIUM",
        "category": "Access Control",
        "descriptionText": "IAM policies allow all ('*') in a statement action",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy",
        "platform": "Terraform",
        "descriptionID": "f20cf2cf",
        "cloudProvider": "aws"
      },
      {
        "id": "f62aa827-4ade-4dc4-89e4-1433d384a368",
        "queryName": "IAM Policy Grants Full Permissions",
        "severity": "LOW",
        "category": "Access Control",
        "descriptionText": "Check if an IAM policy is granting full permissions to resources from the get-go, instead of granting permissions gradually as necessary.",
        "descriptionUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html",
        "platform": "CloudFormation",
        "descriptionID": "d4158e76",
        "cloudProvider": "aws"
      }
]

VPC FlowLogs Disabled
[
      {
        "id": "f83121ea-03da-434f-9277-9cd247ab3047",
        "queryName": "VPC FlowLogs Disabled",
        "severity": "MEDIUM",
        "category": "Observability",
        "descriptionText": "VPC hasn't got any FlowLog associated",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/vpc",
        "platform": "Terraform",
        "descriptionID": "cdbdeb30",
        "cloudProvider": "aws"
      },
      {
        "id": "f6d299d2-21eb-41cc-b1e1-fe12d857500b",
        "queryName": "VPC FlowLogs Disabled",
        "severity": "LOW",
        "category": "Observability",
        "descriptionText": "VPC hasn't got any FlowLog associated",
        "descriptionUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-flowlog.html",
        "platform": "CloudFormation",
        "descriptionID": "0fb02ca5",
        "cloudProvider": "aws"
      }
]

Unrestricted Security Group Ingress
[
      {
        "id": "4728cd65-a20c-49da-8b31-9c08b423e4db",
        "queryName": "Unrestricted Security Group Ingress",
        "severity": "HIGH",
        "category": "Networking and Firewall",
        "descriptionText": "Security groups allow ingress from <IP_ADDRESS>:0",
        "descriptionUrl": "https://www.terraform.io/docs/providers/aws/r/security_group.html",
        "platform": "Terraform",
        "descriptionID": "ce3ee5e0",
        "cloudProvider": "aws"
      },
      {
        "id": "4a1e6b34-1008-4e61-a5f2-1f7c276f8d14",
        "queryName": "Unrestricted Security Group Ingress",
        "severity": "MEDIUM",
        "category": "Networking and Firewall",
        "descriptionText": "AWS Security Group Ingress CIDR should not be open to the world",
        "descriptionUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html",
        "platform": "CloudFormation",
        "descriptionID": "08256d31",
        "cloudProvider": "aws"
      }
]

Liveness Probe Is Not Defined
[
      {
        "id": "5b6d53dd-3ba3-4269-b4d7-f82e880e43c3",
        "queryName": "Liveness Probe Is Not Defined",
        "severity": "MEDIUM",
        "category": "Availability",
        "descriptionText": "Liveness Probe must be defined",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/pod#liveness_probe",
        "platform": "Terraform",
        "descriptionID": "e5105a57"
      },
      {
        "id": "ade74944-a674-4e00-859e-c6eab5bde441",
        "queryName": "Liveness Probe Is Not Defined",
        "severity": "INFO",
        "category": "Availability",
        "descriptionText": "In case of an unresponsive container, a Liveness Probe can help your application become more available since it restarts the container. However, it can lead to cascading failures. Define one if you really need it",
        "descriptionUrl": "https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#when-should-you-use-a-liveness-probe",
        "platform": "Kubernetes",
        "descriptionID": "f724fa60"
      }
]

Permissive Access to Create Pods
[
      {
        "id": "522d4a64-4dc9-44bd-9240-7d8a0d5cb5ba",
        "queryName": "Permissive Access to Create Pods",
        "severity": "LOW",
        "category": "Access Control",
        "descriptionText": "The permission to create pods in a cluster should be restricted because it allows privilege escalation.",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/role#rule",
        "platform": "Terraform",
        "descriptionID": "cca5f42d"
      },
      {
        "id": "592ad21d-ad9b-46c6-8d2d-fad09d62a942",
        "queryName": "Permissive Access to Create Pods",
        "severity": "MEDIUM",
        "category": "Access Control",
        "descriptionText": "The permission to create pods in a cluster should be restricted because it allows privilege escalation.",
        "descriptionUrl": "https://kubernetes.io/docs/reference/access-authn-authz/rbac/#privilege-escalation-prevention-and-bootstrapping",
        "platform": "Kubernetes",
        "descriptionID": "c78cb1a7"
      }
]

Different Category
Trusted Microsoft Services Not Enabled
[
      {
        "id": "5400f379-a347-4bdd-a032-446465fdcc6f",
        "queryName": "Trusted Microsoft Services Not Enabled",
        "severity": "HIGH",
        "category": "Insecure Configurations",
        "descriptionText": "Trusted MIcrosoft Services are not enabled for Storage Account access",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_account#bypass",
        "platform": "Terraform",
        "descriptionID": "2d2af667",
        "cloudProvider": "azure"
      },
      {
        "id": "e25b56cd-a4d6-498f-ab92-e6296a082097",
        "queryName": "Trusted Microsoft Services Not Enabled",
        "severity": "HIGH",
        "category": "Networking and Firewall",
        "descriptionText": "Trusted Microsoft Services should be enabled for Storage Account access",
        "descriptionUrl": "https://docs.microsoft.com/en-us/azure/templates/microsoft.storage/storageaccounts?tabs=json#networkruleset",
        "platform": "AzureResourceManager",
        "cloudProvider": "azure",
        "descriptionID": "88ca11b3"
      }
]

Project-wide SSH Keys Are Enabled In VM Instances
[
      {
        "id": "3e4d5ce6-3280-4027-8010-c26eeea1ec01",
        "queryName": "Project-wide SSH Keys Are Enabled In VM Instances",
        "severity": "MEDIUM",
        "category": "Insecure Configurations",
        "descriptionText": "VM Instance should block project-wide SSH keys",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_instance",
        "platform": "Terraform",
        "descriptionID": "4b9307cd",
        "cloudProvider": "gcp"
      },
      {
        "id": "6e2b1ec1-1eca-4eb7-9d4d-2882680b4811",
        "queryName": "Project-wide SSH Keys Are Enabled In VM Instances",
        "severity": "MEDIUM",
        "category": "Secret Management",
        "descriptionText": "VM Instance should block project-wide SSH keys",
        "descriptionUrl": "https://cloud.google.com/compute/docs/reference/rest/v1/instances",
        "platform": "GoogleDeploymentManager",
        "descriptionID": "5e36c46d",
        "cloudProvider": "gcp"
      }
]

BigQuery Dataset Is Public
[
      {
        "id": "e576ce44-dd03-4022-a8c0-3906acca2ab4",
        "queryName": "BigQuery Dataset Is Public",
        "severity": "HIGH",
        "category": "Access Control",
        "descriptionText": "BigQuery dataset is anonymously or publicly accessible",
        "descriptionUrl": "https://www.terraform.io/docs/providers/google/r/bigquery_dataset.html",
        "platform": "Terraform",
        "descriptionID": "cb5081a0",
        "cloudProvider": "gcp"
      },
      {
        "id": "83103dff-d57f-42a8-bd81-40abab64c1a7",
        "queryName": "BigQuery Dataset Is Public",
        "severity": "HIGH",
        "category": "Insecure Configurations",
        "descriptionText": "BigQuery dataset is anonymously or publicly accessible. Attribute access.specialGroup should not contain 'allAuthenticatedUsers'",
        "descriptionUrl": "https://cloud.google.com/bigquery/docs/reference/rest/v2/datasets",
        "platform": "GoogleDeploymentManager",
        "descriptionID": "6737ca8f",
        "cloudProvider": "gcp"
      }
]

Cloud Storage Anonymous or Publicly Accessible
[
      {
        "id": "a6cd52a1-3056-4910-96a5-894de9f3f3b3",
        "queryName": "Cloud Storage Anonymous or Publicly Accessible",
        "severity": "MEDIUM",
        "category": "Access Control",
        "descriptionText": "Cloud Storage Buckets must not be anonymously or publicly accessible, which means the attribute 'members' must not possess 'allUsers' or 'allAuthenticatedUsers'",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/storage_bucket_iam#google_storage_bucket_iam_binding",
        "platform": "Terraform",
        "descriptionID": "fd990360",
        "cloudProvider": "gcp"
      },
      {
        "id": "63ae3638-a38c-4ff4-b616-6e1f72a31a6a",
        "queryName": "Cloud Storage Anonymous or Publicly Accessible",
        "severity": "MEDIUM",
        "category": "Insecure Configurations",
        "descriptionText": "Cloud Storage Buckets must not be anonymously or publicly accessible, which means the subattribute 'entity' from attributes 'acl' and 'defaultObjectAcl' must not be 'allUsers' or 'allAuthenticatedUsers'",
        "descriptionUrl": "https://cloud.google.com/storage/docs/json_api/v1/buckets",
        "platform": "GoogleDeploymentManager",
        "descriptionID": "2146c969",
        "cloudProvider": "gcp"
      }
]

Public Lambda via API Gateway
[
      {
        "id": "3ef8696c-e4ae-4872-92c7-520bb44dfe77",
        "queryName": "Public Lambda via API Gateway",
        "severity": "MEDIUM",
        "category": "Insecure Configurations",
        "descriptionText": "Allowing to run lambda function using public API Gateway",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission",
        "platform": "Terraform",
        "descriptionID": "1f20399a",
        "cloudProvider": "aws"
      },
      {
        "id": "57b12981-3816-4c31-b190-a1e614361dd2",
        "queryName": "Public Lambda via API Gateway",
        "severity": "MEDIUM",
        "category": "Access Control",
        "descriptionText": "Allowing to run lambda function using public API Gateway",
        "descriptionUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html",
        "platform": "CloudFormation",
        "descriptionID": "32ccc415",
        "cloudProvider": "aws"
      }
]

IAM Password Without Uppercase Letter
[
      {
        "id": "c5ff7bc9-d8ea-46dd-81cb-8286f3222249",
        "queryName": "IAM Password Without Uppercase Letter",
        "severity": "MEDIUM",
        "category": "Insecure Configurations",
        "descriptionText": "Check if IAM account password has at least one uppercase letter",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_account_password_policy",
        "platform": "Terraform",
        "descriptionID": "4e96ea27",
        "cloudProvider": "aws"
      },
      {
        "id": "445020f6-b69e-4484-847f-02d4b7768902",
        "queryName": "IAM Password Without Uppercase Letter",
        "severity": "MEDIUM",
        "category": "Best Practices",
        "descriptionText": "IAM user resource Login Profile Password should have at least one uppercase letter",
        "descriptionUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html#scenario-iam-user",
        "platform": "CloudFormation",
        "descriptionID": "9d55d1e4",
        "cloudProvider": "aws"
      }
]

CloudTrail Log Files Not Encrypted
[
      {
        "id": "5d9e3164-9265-470c-9a10-57ae454ac0c7",
        "queryName": "CloudTrail Log Files Not Encrypted",
        "severity": "HIGH",
        "category": "Observability",
        "descriptionText": "Logs delivered by CloudTrail should be encrypted using KMS",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudtrail#kms_key_id",
        "platform": "Terraform",
        "descriptionID": "ee8a4d47",
        "cloudProvider": "aws"
      },
      {
        "id": "050a9ba8-d1cb-4c61-a5e8-8805a70d3b85",
        "queryName": "CloudTrail Log Files Not Encrypted",
        "severity": "HIGH",
        "category": "Encryption",
        "descriptionText": "Logs delivered by CloudTrail should be encrypted using KMS",
        "descriptionUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-kmskeyid",
        "platform": "CloudFormation",
        "descriptionID": "cdc07a23",
        "cloudProvider": "aws"
      }
]

IAM Password Without Lowercase Letter
[
      {
        "id": "bbc7c137-6c7b-4fc4-984a-0c88e91fcaf9",
        "queryName": "IAM Password Without Lowercase Letter",
        "severity": "MEDIUM",
        "category": "Insecure Configurations",
        "descriptionText": "Check if IAM account password has at least one lowercase letter",
        "descriptionUrl": "https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_account_password_policy",
        "platform": "Terraform",
        "descriptionID": "726cd448",
        "cloudProvider": "aws",
      },
      {
        "id": "f4cf35d6-da92-48de-ab70-57be2b2e6497",
        "queryName": "IAM Password Without Lowercase Letter",
        "severity": "MEDIUM",
        "category": "Best Practices",
        "descriptionText": "IAM user resource Login Profile Password should have lowercase letter",
        "descriptionUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html#scenario-iam-user",
        "platform": "CloudFormation",
        "descriptionID": "b98bf93c",
        "cloudProvider": "aws"
      }
]

Hi @Lubetkin
Thank you for your input.
I am glad to inform you that we are currently working on this issue!


More installation checks would be beneficial

It would be beneficial if the following (or even more) installation checks were added to the installation package to prevent from installing on a system where Nitro Enclaves are not available:

minimal EC2 instance type (i.e., no need to install aws-nitro-enclaves-cli on an T3 or T4 instance)
Enclaves support enable in a compatible EC2 instances (i.e., no need to install on an M6 instance without Enclaves support enabled)

Hi @volphy, an usecase of installing the cli on a non-enabled instance is to be able to do EIF builds, for example in a CI/CD pipeline, where the build machine shouldn't have to be enclave-enabled. Also, our set of supported instances changes over time, and it wouldn't make sense to release a new version of the cli package for this purpose, unless of course there's some specific bug that needs to be addressed.

I understand your rationale.
Let me ask a related question then:
is it possible to read enclaves support attribute within a running EC2 instance without using AWS CLI?
I cannot see it in the instance metadata:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html

The simplest ways that I can think of is to check if the Nitro Enclaves PCI device is present. On an instance that has nitro enclaves available the device should be present and enabled. Otherwise it should not be present.
$ cat /sys/bus/pci/drivers/nitro_enclaves/0000\:00\:02.0/enable
1

cat /sys/bus/pci/drivers/nitro_enclaves/0000\:00\:02.0/enable
cat: /sys/bus/pci/drivers/nitro_enclaves/0000:00:02.0/enable: No such file or directory

@volphy the easiest way on your enclave run-time instance is checking sysfs as above or just issue a lsmod | grep -q nitro_enclaves in your tooling and fetch the result prior to launching enclaves. Otherwise, as previously stated, we cannot make a hard dependency for the CLI since some users are building enclaves on non-EC2 systems today.


Makefile loses  translations if  .po file is defect

Hallo,
`makemessages'  Makefile replaces all the already translated strings in .po file with empty strings if .po file is  defect and just shows an error  message.
reproduce the problem :
either
a- duplicate the same string in  .po file in different lines.
or
b- add extra new line which breaks the .po file syntax (e.g. because of  wrong .po files merging  this characters ">>>>>>" stayed in the .po file)
that will  lead to lose all translated strings and replace them with empty ones when executing 'makemessages'.
the following errors will be shown:
a- duplicate message definition...
b- syntax Error...
msgmerge: 2 fatal error has occurred
we want to avoid deleting the old translated strings and improve the behavoir of Makefile in this case.

Taking a look at the problem now to see if I can come up with a solution.
Technical idea how to solve it: If the condition is detected, stop further processing in the Makefile and revert to the original .po file to avoid losing data.

Solution

First fix the logic to only create a new .po file if none was there. Use if to make this more readable.
Make sure the Makefile stops if msgmerge bails out, for this an extra break statement is needed within the shell loop.
Move the output to the right place within the if. This is fine as msginit will also output something, so there is a message each time.

The following diff should do the job:
--- Makefile   Tue Feb 05 11:31:15 2019 +0100
+++ Makefile   Tue Feb 05 13:08:24 2019 +0100
@@ -52,10 +52,14 @@
 # Generate .po files for each available language.
        @for lang in $(LOCALES); do \
                export PO_FILE=$(OUTPUT_DIR)/locale/$$lang/LC_MESSAGES/app.po; \
-               echo "msgmerge --update $$PO_FILE $@"; \
                mkdir -p $$(dirname $$PO_FILE); \
-               [ -f $$PO_FILE ] && msgmerge --lang=$$lang --update $$PO_FILE $@ || msginit --no-translator --locale=$$lang --input=$@ --output-file=$$PO_FILE; \
-               msgattrib --no-wrap --no-obsolete -o $$PO_FILE $$PO_FILE; \
+               if [ -f $$PO_FILE ]; then  \
+                       echo "msgmerge --update $$PO_FILE $@"; \
+                       msgmerge --lang=$$lang --update $$PO_FILE $@ || break ;\
+               else \
+                       msginit --no-translator --locale=$$lang --input=$@ --output-file=$$PO_FILE || break ; \
+                       msgattrib --no-wrap --no-obsolete -o $$PO_FILE $$PO_FILE || break; \
+               fi; \
        done;

 $(OUTPUT_DIR)/locale/translations.json: $(LOCALE_FILES)


Add STORE LENGTH OF  to the standard.

@dvkt has made a wonderful contribution to the language and it should be added to the standard. The website should also be pushed to a separate repository.

Nope


Wrapping oracle jdbc 18.3.0 broke after 0.1.7

When using the latest version of the opentracing driver, I get timeout exceptions when connecting to the database. Downgrading to 0.1.7 fixes the issue.

Maybe it was caused by commit be1a35905412b641c4483fe7d741f6d1a124f987 . It fails to correctly parse the URL for the value "jdbc:oracle:thin:@<IP_ADDRESS>:11521/XEPDB1" - it thinks that the database name is "11521/XEPDB1" - so basically incorrectly handles port specifications.


docs(yard): adds yard to breadcrumbs page

should the first child be a link, to better showcase real-life use-cases?

updated, thanks!