Can't load the graph

Flarum core: 1.7.2
PHP version: 8.0.19
MySQL version: 10.5.18-MariaDB-1:10.5.18+maria~ubu2004
Loaded extensions: Core, date, libxml, pcre, zlib, filter, hash, json, readline, Reflection, SPL, session, ctype, curl, dom, fileinfo, gd, gmp, iconv, intl, mbstring, openssl, PDO, standard, tokenizer, xmlwriter, zip, exif, mysqlnd, Phar, pdo_mysql, apcu, Zend OPcache
+------------------------------------+------------+--------+
| Flarum Extensions                  |            |        |
+------------------------------------+------------+--------+
| ID                                 | Version    | Commit |
+------------------------------------+------------+--------+
| flarum-flags                       | v1.7.0     |        |
| flarum-approval                    | v1.7.0     |        |
| flarum-tags                        | v1.7.1     |        |
| flarum-suspend                     | v1.7.0     |        |
| flarum-subscriptions               | v1.7.0     |        |
| askvortsov-auto-moderator          | v0.1.2     |        |
| flarum-likes                       | v1.7.0     |        |
| flarum-sticky                      | v1.7.0     |        |
| flarum-lock                        | v1.7.0     |        |
| afrux-forum-widgets-core           | v0.1.7     |        |
| fof-byobu                          | 1.2.0      |        |
| fof-follow-tags                    | 1.1.7      |        |
| antoinefr-money                    | v1.3.1     |        |
| flarum-markdown                    | v1.7.0     |        |
| zerosonesfun-bbcode-iframe         | 1.0        |        |
| tohsakarat-tags-filter             | v1.0.3     |        |
| the-turk-stickiest                 | 3.0.1      |        |
| the-turk-flamoji                   | 1.0.4      |        |
| the-turk-diff                      | 1.1.2      |        |
| swaggymacro-only-starter           | 0.6.6      |        |
| serakoi-flarumstaffbadge           | 1.2.1      |        |
| ramesh-dada-bbcode-alerts          | 6.21       |        |
| nearata-tags-color-generator       | v2.2.0     |        |
| nearata-lang-italian               | v1.1.0     |        |
| nearata-internal-links-noreload    | v2.1.3     |        |
| nearata-embed-video                | v3.2.1     |        |
| nearata-copy-code-to-clipboard     | v2.1.0     |        |
| michaelbelgium-discussion-views    | v7.2.1     |        |
| lonedev-customer-verify            | dev-main   |        |
| kilowhat-audit-free                | 1.6.0      |        |
| justoverclock-last-users-posts     | 0.3.0      |        |
| ianm-log-viewer                    | 0.1.1      |        |
| fof-webhooks                       | 1.1.2      |        |
| fof-upload                         | 1.2.3      |        |
| fof-terms                          | 1.2.1      |        |
| fof-spamblock                      | 1.1.0      |        |
| fof-reactions                      | 1.1.5      |        |
| fof-pages                          | 1.0.5      |        |
| fof-oauth                          | 1.3.0      |        |
| fof-moderator-notes                | 1.2.0      |        |
| fof-links                          | 1.1.4      |        |
| fof-ignore-users                   | 1.2.0      |        |
| fof-github-autolink                | 1.0.0      |        |
| fof-gamification                   | 1.6.2      |        |
| fof-forum-statistics-widget        | 1.1.0      |        |
| fof-formatting                     | 1.0.3      |        |
| fof-drafts                         | 1.2.2      |        |
| fof-cookie-consent                 | 1.1.1      |        |
| fof-best-answer                    | dev-main   |        |
| fof-analytics                      | 1.1.0      |        |
| flarumite-simple-spoilers          | 1.0.0      |        |
| flarum-statistics                  | v1.7.0     |        |
| flarum-pusher                      | v1.7.0     |        |
| flarum-mentions                    | v1.7.0     |        |
| flarum-lang-turkish                | 1.16.0     |        |
| flarum-lang-spanish                | 1.6.0      |        |
| flarum-lang-french                 | v4.11.0    |        |
| flarum-lang-english                | v1.7.0     |        |
| flarum-lang-chinese-simplified     | v1.3.0     |        |
| flarum-emoji                       | v1.7.0     |        |
| flarum-bbcode                      | v1.7.0     |        |
| davwheat-custom-sidenav-links      | 1.0.1      |        |
| datitisev-discussion-agree-message | 1.0.2      |        |
| club-1-server-side-highlight       | v1.4.0     |        |
| clarkwinkelmann-post-bookmarks     | 1.0.0      |        |
| clarkwinkelmann-money-rewards      | 1.0.0      |        |
| clarkwinkelmann-mass-actions       | 1.1.2      |        |
| clarkwinkelmann-likes-received     | 1.0.2      |        |
| clarkwinkelmann-collapsible-posts  | 1.0.0      |        |
| blomstra-turnstile                 | 0.1.2      |        |
| blomstra-mark-unread               | 0.2.0      |        |
| blomstra-fontawesome               | 0.1.5      |        |
| blomstra-database-queue            | 0.1-beta.2 |        |
| askvortsov-rich-text               | v2.1.7     |        |
| askvortsov-help-tags               | v1.1.0     |        |
+------------------------------------+------------+--------+
Base URL: https://forum.devs.beer
Installation path: /flarum/app
Queue driver: database
Session driver: file
Scheduler status: Never run
Mail driver: smtp
Debug mode: off

Perhaps the problem caused by that core version is lower than 1.8? I'm not sure because I've only tried it on 1.8.
But you can turn on the debug mode and paste the API output here, so that I can locate the error.

[2024-09-03 11:02:00] flarum.ERROR: Error: Class "FoF\UserRequest\UsernameRequest" not found in /flarum/app/vendor/foskym/flarum-activity-graph/src/Controllers/ApiActivityGraphController.php:65
Stack trace:
#0 [internal function]: FoskyM\ActivityGraph\Controllers\ApiActivityGraphController->__construct()
#1 /flarum/app/vendor/illuminate/container/Container.php(917): ReflectionClass->newInstanceArgs()
#2 /flarum/app/vendor/illuminate/container/Container.php(758): Illuminate\Container\Container->build()
#3 /flarum/app/vendor/illuminate/container/Container.php(694): Illuminate\Container\Container->resolve()
#4 /flarum/app/vendor/flarum/core/src/Http/RouteHandlerFactory.php(77): Illuminate\Container\Container->make()
#5 /flarum/app/vendor/flarum/core/src/Http/RouteHandlerFactory.php(37): Flarum\Http\RouteHandlerFactory->resolveController()
#6 /flarum/app/vendor/flarum/core/src/Http/Middleware/ExecuteRoute.php(27): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}()
#7 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ExecuteRoute->process()
#8 /flarum/app/vendor/kilowhat/flarum-ext-audit-free/src/Middlewares/SetLoggerActor.php(28): Laminas\Stratigility\Next->handle()
#9 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Kilowhat\Audit\Middlewares\SetLoggerActor->process()
#10 /flarum/app/vendor/flarum/core/src/Api/Middleware/ThrottleApi.php(33): Laminas\Stratigility\Next->handle()
#11 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Api\Middleware\ThrottleApi->process()
#12 /flarum/app/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php(36): Laminas\Stratigility\Next->handle()
#13 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\CheckCsrfToken->process()
#14 /flarum/app/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php(69): Laminas\Stratigility\Next->handle()
#15 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ResolveRoute->process()
#16 /flarum/app/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Laminas\Stratigility\Next->handle()
#17 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\SetLocale->process()
#18 /flarum/app/vendor/flarum/core/src/Http/Middleware/AuthenticateWithHeader.php(58): Laminas\Stratigility\Next->handle()
#19 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\AuthenticateWithHeader->process()
#20 /flarum/app/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(31): Laminas\Stratigility\Next->handle()
#21 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\AuthenticateWithSession->process()
#22 /flarum/app/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Laminas\Stratigility\Next->handle()
#23 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\RememberFromCookie->process()
#24 /flarum/app/vendor/flarum/core/src/Http/Middleware/StartSession.php(61): Laminas\Stratigility\Next->handle()
#25 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\StartSession->process()
#26 /flarum/app/vendor/flarum/core/src/Api/Middleware/FakeHttpMethods.php(29): Laminas\Stratigility\Next->handle()
#27 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Api\Middleware\FakeHttpMethods->process()
#28 /flarum/app/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(28): Laminas\Stratigility\Next->handle()
#29 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ParseJsonBody->process()
#30 /flarum/app/vendor/flarum/core/src/Http/Middleware/HandleErrors.php(57): Laminas\Stratigility\Next->handle()
#31 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\HandleErrors->process()
#32 /flarum/app/vendor/flarum/core/src/Http/Middleware/InjectActorReference.php(25): Laminas\Stratigility\Next->handle()
#33 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\InjectActorReference->process()
#34 /flarum/app/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(75): Laminas\Stratigility\Next->handle()
#35 /flarum/app/vendor/middlewares/request-handler/src/RequestHandler.php(84): Laminas\Stratigility\MiddlewarePipe->process()
#36 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Middlewares\RequestHandler->process()
#37 /flarum/app/vendor/middlewares/base-path-router/src/BasePathRouter.php(101): Laminas\Stratigility\Next->handle()
#38 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Middlewares\BasePathRouter->process()
#39 /flarum/app/vendor/laminas/laminas-stratigility/src/Middleware/OriginalMessages.php(36): Laminas\Stratigility\Next->handle()
#40 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Laminas\Stratigility\Middleware\OriginalMessages->process()
#41 /flarum/app/vendor/middlewares/base-path/src/BasePath.php(73): Laminas\Stratigility\Next->handle()
#42 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Middlewares\BasePath->process()
#43 /flarum/app/vendor/flarum/core/src/Http/Middleware/ProcessIp.php(24): Laminas\Stratigility\Next->handle()
#44 /flarum/app/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ProcessIp->process()
#45 /flarum/app/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(75): Laminas\Stratigility\Next->handle()
#46 /flarum/app/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(64): Laminas\Stratigility\MiddlewarePipe->process()
#47 /flarum/app/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php(73): Laminas\Stratigility\MiddlewarePipe->handle()
#48 /flarum/app/vendor/flarum/core/src/Http/Server.php(45): Laminas\HttpHandlerRunner\RequestHandlerRunner->run()
#49 /flarum/app/public/index.php(26): Flarum\Http\Server->listen()
#50 {main}

Seems it's caused by the fact that I don't have FoF UserRequest installed.
I don't want to install it, is it possible to fix the issue without installing that extension?

Sorry I made mistake by loading the class before check. I'll fix it soon.

Thanks <3


Update instructions how to build Zcoin Fedora23 on Qubes OS

Devwarrior proposal to test all changes on Fedora23/Qubes OS.
Need to update instruction how to build there and check it before release.

What do you need to know .. have you set up Qubes 3.x yet? Did you check PGP that you do not have hacker copy? Have you updated to latest code? Have you created new VM for zcoin yet? Default OS for the VM is Fedora. You will have to increase VM disk size from the default and also increase the RAM size for the VM to enough to run zcoin

@FreakyMaryk please follow up

Mariia Kren 11:43 AM
Okay, I would add comment. You can move it to backlog

Moving back to Backlog as its not complete.

@reubenyap Do we still need to support on Fedora23 on Qubes OS or can we close this?

Qubes is now at v4.1 and the supported Linux OS versions are:
https://www.qubes-os.org/doc/supported-versions/
So fedora 26, 27, 28, 29, 30 and the debian releases indicated.
Qubes is a secure OS used by many for crypto currency. As the issue initiator I will be upgrading to the (supported) Qubes version 4.1 and will be using one if the supported Fedora versions above to run one crypto per VM. So I think you have to support this subset.

@devwarrior777 I don't quite understand the problem due to the release binary should be able to run on any Linux box. Could you clarify the issue?


feat: Add command to purge orphaned sessions

Adds :SessionPurgeOrphaned and
require('auto-session').PurgeOrphanedSessions() commands to purge all sessions with non-existent working directories.
Fixes #232

I've removed bang and squashed everything to single commit. I'm ready to be merged.


Plugins initialized via adminlte.php config enhancement

Question
Answer

Issue or Enhancement
Enhancement

Laravel Version
7

Project Version
3.3.1

Current Behavior
When I load plugins in Javascript, the system seems not to recognize laravel functions.
For example,
If I use the url() function in a blade view inside the @section('js') and @stop tags, it works.
If I load a .js local file (plugin) via adminlte.php, the same function doesn't work.
Expected Behavior
Get files loaded via adminlte.php (plugin section) to work with laravel functions.
Steps to Reproduce
Step I: In a blade view inside the @section and @stop tags, try a laravel function like this:
@section('js')
<script>
    var url = "{{ url('/') }}";
    console.log(url);
</script>
@stop

You will see correct URL in console.
Step II: Load any .js file in plugins initializacion section inside adminlte.php with this code:
$(document).ready(function(){
    var url = "{{ url('/') }}";
    console.log(url);
});

You will get this {{ url('/') }} or an URL with wrong characters like this _https://domain.com/{{ url('/dashboard') }}_ if you try to use the var to redirect or something other url related stuff.
Anyway, good job!! the system is very useful.
Regards

Hi @reymaro0 , thanks for your suggestion. Actually, the line var url = "{{ url('/') }}"; contains blade syntax. So I'm not really sure if it will be possible to use {{ url(...) }} inside a custom Javascript file. You can read the next discussion about this:
How to use Laravel blade in a script file
However, in case you want a workaround, the best you can do is to create a new blade file, like custom_javascript.blade.php with the next skeleton:
<script>

$(document).ready(function(){
    var url = "{{ url('/') }}";
    console.log(url);
});

</script>

and include it in the blade file you want with @include(...) directive.


ocamlPackages.trace: 0.2 → 0.3

Description of changes
https://github.com/c-cube/ocaml-trace/blob/0.3/CHANGES.md
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg build ocamlPackages.trace-tef

Result of nixpkgs-review pr 252268 run on x86_64-linux 1


add fly-validate-pipelines image

build a container image for running fly validate-pipeline recursively
shame, it seems there is no fly validate-task equivalent

/lgtm


ParametereExpression.eq doesn't gracefully convert numeric types

What is the expected enhancement?
__eq__ in python conventionally considers objects equal if they are semantically equivalent, even if their types differ.
>>> 2 == 2
True
>>> 2.0 == 2.0
True
>>> 2 == 2.0
True

Same for Sympy:
>>> import sympy as sp
>>> sp.Integer(2) == sp.Integer(2)
True
>>> sp.Float('2.0', precision=53) == sp.Float(2.0, precision=54)
True
>>> sp.Integer(2) == sp.Float('2.0', precision=53)
True

But ParameterExpression.__eq__ breaks this convention.
>>> import qiskit as qk
>>> theta = qk.circuit.Parameter('theta')
>>> theta * 2 == theta * 2
True
>>> theta * 2.0 == theta * 2.0
True
>>> theta * 2 == theta * 2.0
False

Currently, at https://github.com/Qiskit/qiskit-terra/blob/44462a8b13ea6c2cce0f9c7345c26c15fb0d4ce3/qiskit/circuit/parameterexpression.py#L389 , we compare srepr(self._symbol_expr) == srepr(other._symbol_expr) as strings. (srepr of the examples above would look like Mul(Integer(2), Symbol('th')) for theta * 2 and Mul(Float('2.0', precision=53), Symbol('th')) for theta * 2.0. Instead, we should walk the sympy expression tree (following https://docs.sympy.org/latest/tutorial/manipulation.html#recursing-through-an-expression-tree ) and rely on sympy's built in __eq__.
(The original motivation for using srepr instead of directly comparing ._symbol_expr isn't clear from the current code, so that may be another option worth investigating.)

This sounds reasonable to me. The srepr approach seemed a bit strict.

This sounds reasonable to me. The srepr approach seemed a bit strict.

@kdk. I played around with this a bit and I don't think the 'walk the expression tree' works. The problem is that sympy doesn't guarantee the order of the args for the 2 expressions. For example, this shows the args output from the 2 expressions below. Notice that the 8*y and 3*x have been swapped in the order, so that's what you would be comparing as you walk the tree.
z1 = 3.0 * px + 22.0000 - 17 * py / px + 8 * py - 33.0
z2 = 3 * px + 22.0000 - 17 * py / px + 8 * py - 33

z1_expr.args = (-11.0000000000000, 8*py, 3.0*px, -17*py/px)
z2_expr.args = (-11.0000000000000, 3*px, 8*py, -17*py/px)

I tried the z1_expr.equals(z2_expr) and this seemed to work for any of the simple polynomials I tried. For the above example, z1 == z2 is True and if you replace the 3 with a 2 in z2, it's False.
I'd suggest replacing the srepr with expr.equals(). If the srepr of the two are the same, the expr.equals() will always be True. When the srepr is not the same, it might not work for all possible expressions but it would definitely solve the float/integer issue and from what I've read, I don't think false positives are a problem.
If this works for you, I can try a PR.

@kdk. I played around with this a bit and I don't think the 'walk the expression tree' works. The problem is that sympy doesn't guarantee the order of the args for the 2 expressions. For example, this shows the args output from the 2 expressions below. Notice that the 8*y and 3*x have been swapped in the order, so that's what you would be comparing as you walk the tree.
z1 = 3.0 * px + 22.0000 - 17 * py / px + 8 * py - 33.0
z2 = 3 * px + 22.0000 - 17 * py / px + 8 * py - 33

z1_expr.args = (-11.0000000000000, 8*py, 3.0*px, -17*py/px)
z2_expr.args = (-11.0000000000000, 3*px, 8*py, -17*py/px)

I tried the z1_expr.equals(z2_expr) and this seemed to work for any of the simple polynomials I tried. For the above example, z1 == z2 is True and if you replace the 3 with a 2 in z2, it's False.
I'd suggest replacing the srepr with expr.equals(). If the srepr of the two are the same, the expr.equals() will always be True. When the srepr is not the same, it might not work for all possible expressions but it would definitely solve the float/integer issue and from what I've read, I don't think false positives are a problem.
If this works for you, I can try a PR.

Thanks for investigating @enavarro51 , that approach sounds good, feel free to open a PR.

Thanks for investigating @enavarro51 , that approach sounds good, feel free to open a PR.


Update readme

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 100.00%. Comparing base (22c9197) to head (b140b89).

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #17   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            9         9
  Lines          792       792
=========================================
  Hits           792       792

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Memory leak in dynamic forward proxy mode w/ DNS Cache

Description:
We have an envoy in a dynamic forward proxy mode.  It usually behaves well, but sometimes it gets into a state where it tries to allocate 10s MiB/s and eventually gets OOM'ed:

Full heap profiles show that most of the memory is inside DnsCacheImpl (it should be limited to 10000 entries in theory though).

As a side note, I've also noticed that envoy tries to resolve internal search paths (*.svc.cluster.local.), even though no_default_search_domain is set to true.

Heap dumps
Diff heap profile:

Raw profiles:
https://gist.github.com/rbtz-openai/13d35aea14013f12273c6aa7478184cb
Admin and Stats Output:
 "version": "b5ca88acee3453c9459474b8f22215796eff4dde/1.28.0/Clean/RELEASE/BoringSSL",

There are a lot of cluster due to dynamic forward proxy mode:
# curl -s localhost:9091/clusters | fgrep -c hostname
6752

$ curl -s localhost:XXX/stats/prometheus | fgrep dns
# TYPE envoy_dns_cares_get_addr_failure counter
envoy_dns_cares_get_addr_failure{} 310
# TYPE envoy_dns_cares_not_found counter
envoy_dns_cares_not_found{} 178
# TYPE envoy_dns_cares_resolve_total counter
envoy_dns_cares_resolve_total{} 186188
# TYPE envoy_dns_cares_timeouts counter
envoy_dns_cares_timeouts{} 32
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_cache_load counter
envoy_dns_cache_dynamic_forward_proxy_cache_config_cache_load{} 0
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_dns_query_attempt counter
envoy_dns_cache_dynamic_forward_proxy_cache_config_dns_query_attempt{} 184881
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_dns_query_failure counter
envoy_dns_cache_dynamic_forward_proxy_cache_config_dns_query_failure{} 667
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_dns_query_success counter
envoy_dns_cache_dynamic_forward_proxy_cache_config_dns_query_success{} 184213
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_dns_query_timeout counter
envoy_dns_cache_dynamic_forward_proxy_cache_config_dns_query_timeout{} 365
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_dns_rq_pending_overflow counter
envoy_dns_cache_dynamic_forward_proxy_cache_config_dns_rq_pending_overflow{} 0
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_host_added counter
envoy_dns_cache_dynamic_forward_proxy_cache_config_host_added{} 33253
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_host_address_changed counter
envoy_dns_cache_dynamic_forward_proxy_cache_config_host_address_changed{} 90554
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_host_overflow counter
envoy_dns_cache_dynamic_forward_proxy_cache_config_host_overflow{} 0
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_host_removed counter
envoy_dns_cache_dynamic_forward_proxy_cache_config_host_removed{} 26501
# TYPE envoy_dns_cares_pending_resolutions gauge
envoy_dns_cares_pending_resolutions{} 1
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_circuit_breakers_rq_pending_open gauge
envoy_dns_cache_dynamic_forward_proxy_cache_config_circuit_breakers_rq_pending_open{} 0
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_circuit_breakers_rq_pending_remaining gauge
envoy_dns_cache_dynamic_forward_proxy_cache_config_circuit_breakers_rq_pending_remaining{} 1024
# TYPE envoy_dns_cache_dynamic_forward_proxy_cache_config_num_hosts gauge
envoy_dns_cache_dynamic_forward_proxy_cache_config_num_hosts{} 6752

Config:
The interesting part of the config is the dynamic forward proxy with DNS Cache (same configuration in http_filters)
    cluster_type:
      name: envoy.clusters.dynamic_forward_proxy
      typed_config:
        "@type": type.googleapis.com/envoy.extensions.clusters.dynamic_forward_proxy.v3.ClusterConfig
        dns_cache_config:
          name: dynamic_forward_proxy_cache_config
          max_hosts: 10000
          dns_lookup_family: V4_ONLY
          typed_dns_resolver_config:
            name: envoy.network.dns_resolver.cares
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.network.dns_resolver.cares.v3.CaresDnsResolverConfig
              resolvers:
                - socket_address:
                    address: <IP_ADDRESS>
                    port_value: 53
                - socket_address:
                    address: <IP_ADDRESS>
                    port_value: 53
                - socket_address:
                    address: <IP_ADDRESS>
                    port_value: 53
                - socket_address:
                    address: <IP_ADDRESS>
                    port_value: 53
              dns_resolver_options:
                use_tcp_for_dns_lookups: true
                # There is no need to use the default search domain when resolving external requests
                no_default_search_domain: true

cc: @alyssawilk @euroelessar

Not an expert here, but from
https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/dynamic_forward_proxy_filter#statistics
I think envoy_dns_cache_dynamic_forward_proxy_cache_config_num_hosts{} 6752 is saying we have 6752 hosts in the cache. We have 10k set as the limit, so the cache should be forcing eviction due to lack of space and have capacity to grow as you see above -- so I don't think this is a "memory leak".
@yanjunxiang-google @alyssawilk may know more.

The default max_hosts is 1k. We need some calculation to estimate how much memory is needed for DnsCacheImpl and DFP cluster data structure for 6752 hosts.   These hosts will also do DNS refreshing periodically. So, it's probably a good idea to tweak the dns_refresh_rate and min_dns_refresh_rate in dns_cache.proto to slow down that.

@yanjunxiang-google @KBaichoo in a steady state (the inbound load is more-or-less constant) it consumes less then 1GiB of ram.  Then something drastically changes and memory starts growing linearly at 10MiB/s until OOM.
Also to consume 10GiB of memory for 10k hosts would imply 1MiB per entry which does not sound too realistic.  For example, a "good" host has ~6000 envoy_dns_cache_dynamic_forward_proxy_cache_config_num_hosts and with RSS about 400 MiB.  Which is about 64 KiB per entry which is way more believable.

@rbtz-openai Could you please share the Envoy trace logs when this is happening?

seems it's leaking in the mutable_cross_priority_host_map_, according to the heap profile.
@rbtz-openai What is the time difference between the two profile files?
it leaking 100 MB during the two profile, does it match 20 minutes leaking 10GB?

yep, the time difference was about 10s between profiles (leak rate was about 10MiB/s)

Okay, I see. Also, seems DNS refresh frequently, according to the trace log.
I'll try to reproduce it on my side.

Okay, I reproduced a leaking case on my side. Here are the key logs, with comments:
# ip changed, host_info_ is also changed
[2023-12-08 22:36:00.952][83629][debug][forward_proxy] [source/extensions/common/dynamic_forward_proxy/dns_cache_impl.cc:404] host 'test.s
ervice:80' address has changed from <IP_ADDRESS>:80 to <IP_ADDRESS>:80

# expired, removing the new host_info_, the old address is leaking
[2023-12-08 22:36:05.952][83629][debug][forward_proxy] [source/extensions/common/dynamic_forward_proxy/dns_cache_impl.cc:262] host='test.s
ervice:80' TTL expired, removing

This leaking happens in MainPrioritySetImpl::updateCrossPriorityHostMap, matches the info in the profile.
For now, you could try the new sub_cluster_config:
https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/dynamic_forward_proxy/v3/dynamic_forward_proxy.proto#envoy-v3-api-field-extensions-filters-http-dynamic-forward-proxy-v3-filterconfig-sub-cluster-config
It will create sub strict_dns clusters for each host, with TTL enabled, instead of logical_dns.
Here is a simple example that works on my side.
static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        protocol: TCP
        address: <IP_ADDRESS>
        port_value: 7010
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match:
                  prefix: "/"
                route:
                  cluster: dynamic_forward_proxy_cluster
          http_filters:
          - name: envoy.filters.http.dynamic_forward_proxy
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.dynamic_forward_proxy.v3.FilterConfig
              sub_cluster_config:
                cluster_init_timeout: 10s
          - name: envoy.filters.http.router
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
  clusters:
  - name: dynamic_forward_proxy_cluster
    connect_timeout: 1s
    lb_policy: CLUSTER_PROVIDED
    dns_resolvers:
    - socket_address:
        address: <IP_ADDRESS>
        port_value: 5300
    cluster_type:
      name: envoy.clusters.dynamic_forward_proxy
      typed_config:
        "@type": type.googleapis.com/envoy.extensions.clusters.dynamic_forward_proxy.v3.ClusterConfig
        sub_clusters_config:
          lb_policy: round_robin
          max_sub_clusters: 100
          sub_cluster_ttl: 10s

Also, I'll try to create a PR for the logical_dns implementation.

Small update:
We had a seemingly unrelated issue with brotli decompressor in our config that occasionally got into an infinite loop inside a wrk:worker_X thread.  Removing brotli decompression block[1] also somehow fixed the runaway memory usage spikes.  There is still some gradual memory usage increase but it is likely due to our high number of hosts.

[1]
- name: envoy.filters.http.decompressor
                typed_config:
                  "@type": type.googleapis.com/envoy.extensions.filters.http.decompressor.v3.Decompressor
                  decompressor_library:
                    name: default
                    typed_config:
                      "@type": "type.googleapis.com/envoy.extensions.compression.brotli.decompressor.v3.Brotli"
                  request_direction_config:
                    common_config:
                      enabled:
                        default_value: false
                        runtime_key: request_decompressor_enabled

wow, thanks for your update, seems the brotli decompression is the real reason in your case. I'll recheck the memory leaking issue that I founded in dfp.

update: https://github.com/envoyproxy/envoy/pull/31433 fix a memory leaking that matches the profile.

@rbtz-openai Could you please reconfirm that the dfp leak can be ignored in your production case? We are thinking reverting the bugfix in https://github.com/envoyproxy/envoy/pull/31433

sorry for the late reply, yeah, after removing brotli, dfp leak, if it exists, is not measurable at our scale.


user_name should be username in MBP params

Fixes #3921
dosomething_mbp_get_transactional_payload() is looking for username rather that user_name.
See:

https://github.com/DoSomething/dosomething/blob/dev/lib/modules/dosomething/dosomething_mbp/dosomething_mbp.module#L127
https://github.com/DoSomething/dosomething/blob/dev/lib/modules/dosomething/dosomething_user/dosomething_user.module#L411

:+1:


Per-site forecast today

Is your feature request related to a problem? Please describe.
On sunny or reasonably sunny days I consistently fail to achieve the forecast PV50 generation, I usually get somewhere between the PV10 and PV50, but today I didn't even generate the PV10 figure:

Now I know this is just a forecast but I'm fairly sure that the major contributory factor to this is my inverters shutting off because I'm exporting so much that I'm increasing the grid power too much at peak generation times.
Power generation (in kW) follows the forecast power (in W) until it gets to about 8kW when shutoff's occur:

Forecast Power Now has the per-site data so I can graph each site forecast to actual, but what I can't do is quantify the total impact of this because I don't have the per-site forecast generation, I only have the total across all sites.
Describe the solution you'd like
Add per-site forecast figures to pv_forecast_today, _tomorrow, _d3.
[I'd probably like the PV10, not bothered about PV90 or D4+ TBH, but I'm sure you will want to add them all for symmetry]
Describe alternatives you've considered
Direct API call to solcast?
Something funky working out the area under the power now graph?

Just the day roll-up, or the detailedForecast too?

Just the single total daily figure is all I am looking for then I have a figure I can compare to the actual generated PV per site to quantify what I am missing out on.
The detailedForecast is vaguely interesting but I don't think I'd use it and its too much attributes.  The per site PV power now gives me something to compare the actual PV output to

Check out the branch Daily-forecasts-site-breakdown, @gcoan.

I've done a thing, @gcoan, which might never see the light of day.
There are many files changed, including translations, which has got "stuff up" written all over it because Aussie relying on Google translate.
This adds a config upgrade to v8, adding options for whether site and estimate detail are included as attributes. The options upgrade should be "compatible" with earlier versions. (How's your Urdu and Slovak?)
My (evil laugh) plan is to evolve this to optionally include the detailed forecasts breakdowns as "opt-in" attributes, not defaulting to True, and as separate options.

That sounds a good thing @autoSteve , making the site and estimates in attributes a configurable option so people don't get cluttered with too much unnecessary stuff.
There's also a risk (and we've seen it with Predbat) that if you stuff too much in the attributes then you start getting warnings in the HA log from recorder that it can't store more than 16k of attribute values - despite the fact that it doesn't store the attributes anyway

Is this change in the above fork, or somewhere squirrelled away in Aussie land?

Yeah, nah. Not exclusive to me. I sent it to the fork!

Just downloaded the branch, replaced all the entire solcast-solar directory and restarted HA.
Messages in the log about upgrading to options v8:
2024-07-15 21:14:25.741 DEBUG (MainThread) [custom_components.solcast_solar] Options version 7
2024-07-15 21:14:25.743 DEBUG (MainThread) [custom_components.solcast_solar] Upgraded to options version 8
2024-07-15 21:14:25.743 INFO (MainThread) [custom_components.solcast_solar]
-------------------------------------------------------------------
Solcast integration version: 4.0.38
This is a custom integration. When troubleshooting a problem, after
reviewing open and closed issues, and the discussions, check the
required automation is functioning correctly and try enabling debug
logging to see more. Troubleshooting tips available at:
https://github.com/BJReplay/ha-solcast-solar/discussions/38
Beta versions may also have addressed some issues so look at those.
If all else fails, then open an issue and our community will try to
help: https://github.com/BJReplay/ha-solcast-solar/issues
-------------------------------------------------------------------
2024-07-15 21:14:25.759 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Sites cache exists
2024-07-15 21:14:25.760 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Connecting to - https://api.solcast.com.au/rooftop_sites?format=json&api_key=******Db75Av
2024-07-15 21:14:26.163 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] HTTP session returned status 200/Success in sites_data()
2024-07-15 21:14:26.164 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Writing sites cache
2024-07-15 21:14:26.186 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Sites data: {'sites': [{'name': '87 High Street (E)', 'resource_id': 'bc31-4d4c-e844-6a4e', 'capacity': 10, 'capacity_dc': 8.58, 'longitude': **.******, 'latitude': **.******, 'azimuth': -100, 'tilt': 37, 'install_date': '2023-01-07T00:00:00.0000000Z', 'loss_factor': 0.99, 'tags': ['UK', 'Bedfordshire', 'GivEnergy']}, {'name': '87 High Street (W)', 'resource_id': '23bb-0216-85c6-fd94', 'capacity': 9, 'capacity_dc': 6.34, 'longitude': **.******, 'latitude': **.******, 'azimuth': 80, 'tilt': 37, 'install_date': '2023-01-07T00:00:00.0000000Z', 'loss_factor': 0.98, 'tags': ['UK', ' Bedfordshire', ' GivEnergy']}], 'page_count': 1, 'current_page': 1, 'total_records': 2}
2024-07-15 21:14:26.186 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Getting API limit and usage from solcast for ******Db75Av
2024-07-15 21:14:26.186 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] API usage cache exists
2024-07-15 21:14:26.520 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] HTTP session returned status 200/Success in sites_usage()
2024-07-15 21:14:26.520 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Writing API usage cache file: /config/solcast-usage.json
2024-07-15 21:14:26.530 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] API counter for ******Db75Av is 8/10
2024-07-15 21:14:26.654 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] The saved data file exists: file type is <class 'dict'>
2024-07-15 21:14:27.057 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Calc forecast start index midnight utc: 2024-07-14 23:00:00+00:00, idx 14145, len 14530
2024-07-15 21:14:27.143 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Data for 2024-07-15 contains all 48 records
2024-07-15 21:14:27.144 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Data for 2024-07-16 contains all 48 records
2024-07-15 21:14:27.144 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Data for 2024-07-17 contains all 48 records
2024-07-15 21:14:27.145 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Data for 2024-07-18 contains all 48 records
2024-07-15 21:14:27.145 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Data for 2024-07-19 contains all 48 records
2024-07-15 21:14:27.147 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Data for 2024-07-20 contains all 48 records
2024-07-15 21:14:27.148 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Data for 2024-07-21 contains all 48 records
2024-07-15 21:14:27.148 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Data for 2024-07-22 contains all 48 records
2024-07-15 21:14:27.148 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Build forecast processing took 0.4937s
2024-07-15 21:14:27.149 INFO (MainThread) [custom_components.solcast_solar.solcastapi] Loaded solcast.json forecast cache
2024-07-15 21:14:27.155 DEBUG (MainThread) [custom_components.solcast_solar.coordinator] Finished fetching solcast_solar data in 0.000 seconds (success: True)

Then went and looked at the PV forecast today and was surprised to see the per site estimates already present - I guess since the data is already in the solcast.json file it didn't need an API call (and I'd saved one back) to download the data:

new integration config option, nice !

Is it worth having sub-options for enabling the different estimate breakdowns (standard, 10 and 90)?  I'd only want the 10, the standard duplicates the main sensor value (although of course the per-site standard is useful)
Also, since we are adding configurability, how about the option to turn off the detailedForecast and detailedHourly?  At least one person didn't have a use for these, I do as Predbat needs the detailedForecast but the detailedHourly, nah.
Have played around turning the options on and off and it all seems to work as expected. I checked the per day, peak forecast, power now and they all looked good in terms of configurability.
Ran a scheduled solcast poll update and all looks OK in the log.
I did notice in the log that it seems every time I changed the config options it re-initialised the integration completely, so repeated sets of log messages like this:
2024-07-15 21:32:27.439 INFO (MainThread) [custom_components.solcast_solar]
-------------------------------------------------------------------
Solcast integration version: 4.0.38
This is a custom integration. When troubleshooting a problem, after
reviewing open and closed issues, and the discussions, check the
required automation is functioning correctly and try enabling debug
logging to see more. Troubleshooting tips available at:
https://github.com/BJReplay/ha-solcast-solar/discussions/38
Beta versions may also have addressed some issues so look at those.
If all else fails, then open an issue and our community will try to
help: https://github.com/BJReplay/ha-solcast-solar/issues
-------------------------------------------------------------------
2024-07-15 21:32:27.446 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Sites cache exists
2024-07-15 21:32:27.446 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Connecting to - https://api.solcast.com.au/rooftop_sites?format=json&api_key=******Db75Av
2024-07-15 21:32:28.066 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] HTTP session returned status 200/Success in sites_data()
2024-07-15 21:32:28.072 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Writing sites cache
2024-07-15 21:32:28.111 DEBUG (MainThread) [custom_components.solcast_solar.solcastapi] Sites data: {'sites': [{'name': '87 High Street (E)', 'resource_id': 'bc31-4d4c-e844-6a4e', 'capacity': 10, 'capacity_dc': 8.58, 'longitude': **.******, 'latitude': **.******, 'azimuth': -100, 'tilt': 37, 'install_date': '2023-01-07T00:00:00.0000000Z', 'loss_factor': 0.99,

blah blah, does a full sites download etc again

Been able to create the template sensors I wanted for total energy today per site, thanks

What lovely feedback to receive in the morning!
It is so annoying that any options change reloads the integration from scratch. I can see why it does it, and it is by design, because I looked into whether it would be possible to stop the behaviour for some settings changes. It is what it is for now.
Great suggestions. I don't use the detailed attributes, and having them makes for an ungainly attributes view in the UI for the forecast today.

Something like this, @gcoan?

Chef's kiss 😙

The atribute options are now more than a pretty face. They're functional. I'll test a bit more then commit to the branch.

Options will update again, Geoff, to version 9, which will mean a dual update for others 7->8->9.
I'm working out whether I can consolidate these into a single v8.

Options will update again, Geoff, to version 9, which will mean a dual update for others 7->8->9.
I'm working out whether I can consolidate these into a single v8.

If I upgrade to this latest branch of options 9 and you rewrite history am I going to have problems then as I'll be v9 and the code expects v8?


Add support for 10~15 ApplyN & RichTaskableN

For issue #284

The commit touches a lot of unnecessary lines:
https://github.com/holdenk/xsbt/commit/e32930bc3c572dcd527d1be13e133eef9f5c0a4c

Should be cleaned up now :)


[SPARK-46850][SQL] Convert _LEGACY_ERROR_TEMP_2102  to UNSUPPORTED_DATATYPE

What changes were proposed in this pull request?
The pr aims to convert _LEGACY_ERROR_TEMP_2102 to UNSUPPORTED_DATATYPE.
Why are the changes needed?
The changes improve the error framework.
Does this PR introduce any user-facing change?
No.
How was this patch tested?

Add new UT
Pass GA

Was this patch authored or co-authored using generative AI tooling?
No.

cc @MaxGekk
When I was working on https://github.com/apache/spark/pull/44665 related work, I found that _LEGACY_ERROR_TEMP_2102 can be converted into UNSUPPORTED_DATATYPE
Moreover, from the current implementation logic, some of its comment are incorrect.


Merge pull request #1 from shejain-hub/feature-add-requirements

Pull for requirements

Done merging


[FEATURE] Indicate the particular message being edited

Description
Currently, the user doesn't know which message is being edited and it's not a good UX.
When editing a message, there should be an indicator showing which message is being edited
Screenshots
No response

It's great having you contribute to this project by creating an issue Make sure you are assigned to this before you work on it and you read the Contributing.md file, Thank you! Welcome to the community :nerd_face:

Sounds good to me. I'm willing to contribute.
Please assign it to me.

Hey @Dun-sin  i would like to work on this

Hey @Dun-sin i would like to work on this

you have your first warning, don't spam else you will be blocked

my bad, was just going through the open issues. where can i read code of conduct here?

let me know if i can work on this now? @Dun-sin would love to contribute here

let me know if i can work on this now? @Dun-sin would love to contribute here

sure, thanks for wanting to contribute, Make sure you follow the rules 👉🏽here👈🏽, else your PR will not be accepted and will be closed. Good Luck


Silence warnings when loading the package

Import * and transpose from Base module before redefinition.

Thanks!

You may want to roll a new release, since the package is currently failing evaluation on Julia 0.5 due the bug fixed with this pull request ;-)

Done!


Document the committee review process for breaking changes involving security issue.

Documentation Issue
Document the committee review process for breaking changes involving security issue.
Issues:

Security issues should remain confidential before they are released
Committee members has non-microsoft members

Up!

Up!


Please mention alternative

https://github.com/dnsjava/dnsjava

and in README.md, pls add
... However we still recommend ALSO reporting patches to

And even a "https://github.com/dnsjava/dnsjava/pull/17" of the essential change here was contributed there


relnote: Also consider changes under docs/ to be documentation updates

So that relnote.go will not classify a commit which changes nothing but files under docs/ to be an "other change".

Codecov Report

Merging #872 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #872   +/-   ##
=======================================
  Coverage   34.69%   34.69%
=======================================
  Files          57       57
  Lines        3914     3914
=======================================
  Hits         1358     1358
  Misses       2396     2396
  Partials      160      160

Continue to review full report at Codecov.

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


Siteurl isn't really a URL

If I put connectordb behind a reverse proxy and redirect, say, /connectordb directly to the server, the website only partially works. I tried setting siteurl to something like https://my.connectordb.foo/connectordb, but the templated pages all have absolute URLs in them, so the images and javascript files fail to load.
I already run several web service apps such as Nextcloud behind a single reverse proxy this way, but I could not get connectordb to play nicely.

It looks like you are correct. The siteurl use case that works is redirecting a subdomain, ie, connectordb.foo.com. That will work temporarily - I will see what can be done about the general issue.


npm install fails on i-0.3.2

npm install fails with the following error:
npm ERR! fetch failed https://registry.npmjs.org/i/-/i-0.3.2.tgz
npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 504

This library no longer exists in the repo, hence the failure.
This is on the latest version of node 0.10.46, running under nvm.

Hi Jim just seeing this. What OS are you running? These are the versions we tested though I wouldn't think a dot increase on node 0.10 would matter: https://github.com/marklogic/marklogic-samplestack/wiki/Version-Compatibility
We have a few wikis on troubleshooting but I don't see your specific case.
https://github.com/marklogic/marklogic-samplestack/wiki/Node.js-and-npm-Tips-for-Samplestack-Development
https://github.com/npm/npm/wiki/Troubleshooting
Tagging @laurelnaiad - What's the workaround for the missing library?
@netdance - alternatively you could try running the Java version with the pre-built/static front end version: https://github.com/marklogic/marklogic-samplestack/blob/master/appserver/java-spring/README.md Would that meet your immediate needs?

Hi @netdance , @popzip,
Sorry it took me a while to figure this out. It's actually a simply fix/workaround, but until I realized it I was stumped....
What's happening is that the shrinkwrap file is preventing npm from addressing the fact that the npm i module version 0.3.2 was accidentally unpublished from npm.
$ rm -rf npm-shrinkwrap.json       # or delete it using whatever mechanism

should do the trick.
This tested on:
$ node --version ; npm --version
v0.10.46
3.10.8

If you need to update npm, that can be done via
$ npm i -g npm

I hope that gets you unstuck.

The removal of npm-schrinkwarp did not work for me.
Changed npm-schrinkwarp  the versions https://registry.npmjs.org/i/-/i-0.3.2.tgz  to  0.3.5.
Installation is now working, as described in the documentation. Samplestack seems to run without issues.
Maybe change this in the package.  Avoiding other running into the same issue, having to browse for a solution.


[BUG] . and , decimal seperators differ according to version (?)

Describe the bug
We saw that people with different PCs see different decimal separators as special cell format when using units.
To Reproduce
Steps to reproduce the behavior:

Create new Xlsx file with new annotation table (or use an existing one if you like)
Create new building block with a unit (e.g. "volt per meter")
Rightclick on a cell below the header –> Format cell
Examine custom format

Expected behavior
In best case always english format (".").
Screenshots

Own PC, here with english decimal separator ("."). I saw german format (",") on other PCs but did not make screenshots.
OS and framework information (please complete the following information):

OS: Windows 10 Pro 64-bit, (10.0, Build 19044)
MS Excel: MS 365, Version 2112 (Build 14729.20260)

Additional context
Maybe system styles get applied even if a specific format is hardcoded into Swate.
Could this lead to a problem when someone saves a Swate table-containing Xlsx file in, e.g., german format and another one with english format opens it and the "," get interpreted as thousands separators?
To check your system settings (Windows):

Control Panel
Region
Additional settings...
"Decimal symbol" and "Digit grouping symbol" (= thousands separator), under tab "Numbers"

Could this lead to a problem when someone saves a Swate table-containing Xlsx file in, e.g., german format and another one with english format opens it and the "," get interpreted as thousands separators?

I can not yet estimate. Maybe we can get further input on this.


RemoteWidget might not be updating correctly when you change the data argument

I can't reproduce this. I've asked for a reproduction test case upstream, and will follow-up if they provide one.


install sqlite3 3.45+ in upstream Dockerfile

Is your feature request related to a problem?
We are doing special config for Drupal 11 with sqlite3.45 (at start time)
Do it instead in the base config upstream Dockerfile

I was planning to change the default behavior of corepack_enable, but I think this could break a lot of people with unexpected versions of yarn etc. So not doing that.


configurator.sh is no longer functioning

I have noticed that in the newer Apollo builds that configurator.sh is no longer launching.
System information

OS Platform and Distribution: (Linux Ubuntu 14.04)
Apollo installed from: source (most recent master branch)
Apollo version: master
We have tested on multiple systems which were all previously working.

Steps to reproduce the issue:

bash configurator.sh while in docker

Supporting materials (screenshots, command lines, code/script snippets):
apollo@in_dev_docker:/apollo$ configurator.sh
Traceback (most recent call last):
File "modules/tools/configurator/configurator.py", line 160, in
curses.wrapper(main)
File "/usr/lib/python2.7/curses/wrapper.py", line 43, in wrapper
return func(stdscr, *args, **kwds)
File "modules/tools/configurator/configurator.py", line 149, in main
conf = Configurator(stdscr)
File "modules/tools/configurator/configurator.py", line 61, in init
moduleconf.parse_from_file()
File "/apollo/modules/tools/configurator/ModuleConf.py", line 47, in parse_from_file
self.proto = ast.literal_eval("mod." + self.proto_class)
File "/usr/lib/python2.7/ast.py", line 80, in literal_eval
return _convert(node_or_string)
File "/usr/lib/python2.7/ast.py", line 79, in _convert
raise ValueError('malformed string')
ValueError: malformed string
Thanks!

fixed and merged into master. thank you .


Unable to find frame01884.png

Hi,
I want to run SSD_training.ipynb. I converted that to .py and when I run that, I get the following error. What is that am missing?
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 429, in data_generator_task
generator_output = next(self._generator)
File "SSD_training.py", line 204, in generate
img = imread(img_path).astype('float32')
File "/usr/local/lib/python2.7/dist-packages/scipy/misc/pilutil.py", line 154, in imread
im = Image.open(name)
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 2312, in open
fp = builtins.open(filename, "rb")
IOError: [Errno 2] No such file or directory: u'../../frames/frame01884.png'
Traceback (most recent call last):
File "SSD_training.py", line 285, in
nb_worker=1)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1528, in fit_generator
str(generator_output))
ValueError: output of generator should be a tuple (x, y, sample_weight) or (x, y). Found: None

@nsivaramakrishnan I don't provide the dataset, so, you cannot simply run the training loop without changes, it is given only as a reference how to deal with API.


spotipy for oAuth

use spotipy or any other method for spotify user authentication

hey can you assign this to me


Chances Not Working

https://pastebin.com/3LtCz5DY  <--- This is my config if you see something wrong tell me but on the Jester Rank when I start a envoy the chance is not 1 to 100 it is more like 1 to 5 so if you could help me I would really like that thank you love the plugin.

Its probably because you only have a few prizes but it shouldn't be that common. If you need just make duplicates of some prizes and it will raise the chance of that and lower the chance of the prize you want less of.

@PrimeMoose was something wrong with what I said? I saw you gave me unhappy reactions.


Stop hard-coding NEON support for armv7-unknown-linux-musleabihf.

Fixes #252.
Signed-off-by: Brian Smith<EMAIL_ADDRESS>

bors: try

bors r+


Network compatibility more precise controls

Perhaps it would be worth it to add some more precise controls for the NetworkCompatibility.VersionStrictness enum. It may be useful to allow something along the lines of:

Versions do not matter
Everyone needs same major version, minor.patch does not matter
Everyone needs same major.minor version, patch does not matter
Everyone needs same mod version for major.minor.patch

Yeah this could be a decent addition to be honest with you. Nothing against this.


implement text-to-sql cache

right now, a bot will always generate new SQL even if it (in the current or previous session) has seen the same text and correctly generated SQL
primarily for demo purposes, we should enable attaching a cache database w/:

text
SQL
accuracy_score (?)

we would need some way of manually populated this database (perhaps outside the scope of Ibis Birdbrain) and adding to it as new queries are seen, w/ the user somehow able to give an accuracy score/delete incorrect generations

potential implementations:

exact string match
Levenstein distance
embeddings match
full text search extension (https://duckdb.org/docs/extensions/full_text_search.html)


Develop world map

Taken from:

https://github.com/lfex/lmud/issues/18

Depends on:

#1

Resources:

https://en.wikipedia.org/wiki/Pangaea_Proxima
https://qph.fs.quoracdn.net/main-qimg-0cd458d6f78f806e7505f1af686ebb5d
https://www.youtube.com/watch?v=2It3ETk2MGA

Progress on a world map:

Forests:

Yárrornë (Fangorn and Greenwood of old; continental drift merged these and moved them to the other side of the world)
Vercaornë (the Wild Wood of the 3rd age in the eastern lands)
Hyarmenornë (the south wood)
Sindëornë (the new wood, grew from what used to be east of the Grey Mountains in the lands of Harad)
Umbarornë (the new wood, grew from what used to be the lands of Umbar Harad)
Oromëornë (the remnants of the Woods of Oromë)
Valandórëornë (the descendant of the wood that once lay west of the plain of Valinor)

Mountain Ranges:

Oronti Tára (high mountains; the remnants of the Himalyas)
Oronti Erumë (desert mountains)
Oronti Avaháya (the far mountains)
Oronti Valandórë (the mountains far west of the plain of Valinor)
Oronti Ióna (mountains of the southern sea; Antarctica)
Oronti Foremen (the northern mountains created by the great Greenland Uplift; tallest mountains in the world)

Bodies of Water:

Alatairë (former Atlantic Ocean)
Altahópa (Great Bay; former East Sea / Indian Ocean)
Hyarmenairë (Southern Sea)
Órëairë (Sea of the Dawn; former western Pacific Ocean)
Númenyairë (Western Sea; former eastern Pacific Ocean)
Ëar Cuivië (remnant of Caspian Sea / Sea of Helcar, near Cuiviénen where the Elves first awoke)

Other:

Álatarumë (the great desert, curse of the Harad)


Perl error on usermin login with authentic theme

When I try to login to usermin, I get this error:
HTTP/1.0 500 Perl execution failed Server: MiniServ/1.730 Date: Wed, 27 Dec 2017 19:48:40 GMT Content-type: text/html; Charset=iso-8859-1 Connection: close
Error - Perl execution failed
Undefined subroutine &main::embed_noscript called at /usr/local/usermin-1.730/authentic-theme/authentic-lib.pm line 1693.
How can I fix this?
In this post it mentioned the bug was fixed in the latest version but I still encounter it in 19.06. Now I downloaded the gz and installed it I cannot delete the theme from usermin configuration...

I solved delete usermin module and reinstall via deb repository. Now everything works well!

You could pkill miniserv and then restart Webmin and Usermin.
We'll fix this on the next Webmin/Usermin releases.


A4 FIGMA - Prioritizing Nav Items

Fixes Issue #1096
On Narrower screens:
Overview, Inventory, Feeds, and Scans remain in the NAV
My Account, Manage Settings, Manage Users, My Settings, and Logout are in the Hamburger
Hamburger pops out on the right had side instead of left.

@aloftus23 review

@KeithBonesJr go ahead and merge it!


[BUG] Audio not being merged with video

Describe the bug
When generating the video, the spoken audio is generated, as well as the video itself with the subtitles, but both aren't combined together at the end.
To Reproduce
Steps to reproduce the behavior:

Generate a video
wait for it to finish
confirm both the full mp3 and full mp4 are there
mp4 does not contain the audio

Expected behavior
The final video (I suppose not in the temp folder?) should have both the video and the audio in it.
Desktop (please complete the following information):

OS: Mac 14.1.1 (23B81)
Browser Chrome/Firefox
Python Version 3.10.8

Additional context
The full output looks like this:
[Video to be generated]
   Subject: Hidden facts about onions, keep it to 1 fact that most people don't know, as well as concise.

**The Hidden Fact About Onions**

Onions contain a compound called quercetin, which has been shown to have anti-inflammatory and antioxidant effects. This compound is most concentrated in the outermost rings of the onion, so peeling off too many layers can lead to a significant loss of this beneficial compound. Therefore, to maximize the health benefits of onions, it's best to use as much of the edible portion as possible, including the outer layers.

Generated 5 search terms: hidden onion facts, onion health benefits, quercetin in onions, maximizing onion health benefits, onion compound quercetin
	=> "hidden onion facts" found 2 Videos
	=> "onion health benefits" found 2 Videos
	=> "quercetin in onions" found 1 Videos
	=> "maximizing onion health benefits" found 2 Videos
	=> "onion compound quercetin" found 2 Videos
[+] Downloading 5 videos...
[+] Videos downloaded!
[+] Script generated!

[+] TikTok TTS Service available!
[+] Audio file saved successfully as '../temp/9045f052-371c-4a61-b08a-1888746e6526.mp3'
[+] TikTok TTS Service available!
[+] Audio file saved successfully as '../temp/b738ab8f-0968-4411-9824-5584ac4bcba3.mp3'
[+] TikTok TTS Service available!
[+] Audio file saved successfully as '../temp/de822145-bf95-48e2-804b-3259a0b7075d.mp3'
MoviePy - Writing audio in ../temp/a7bc9680-6ff2-49c9-810e-1e2fcbe4a8b0.mp3
MoviePy - Done.
[+] Creating subtitles using AssemblyAI
INFO:httpx:HTTP Request: POST https://api.assemblyai.com/v2/upload "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: POST https://api.assemblyai.com/v2/transcript "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET https://api.assemblyai.com/v2/transcript/ba18dd27-d0e0-48d9-b0be-c964886354b7 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET https://api.assemblyai.com/v2/transcript/ba18dd27-d0e0-48d9-b0be-c964886354b7 "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: GET https://api.assemblyai.com/v2/transcript/ba18dd27-d0e0-48d9-b0be-c964886354b7/srt "HTTP/1.1 200 OK"
[+] Subtitles generated.
[+] Combining videos...
[+] Each clip will be maximum 7.168000000000001 seconds long.
Moviepy - Building video ../temp/7748c551-7836-4633-a9ea-282d17817afd.mp4.
Moviepy - Writing video ../temp/7748c551-7836-4633-a9ea-282d17817afd.mp4

Moviepy - Done !
Moviepy - video ready ../temp/7748c551-7836-4633-a9ea-282d17817afd.mp4
Moviepy - Building video ../temp/output.mp4.
MoviePy - Writing audio in outputTEMP_MPY_wvf_snd.mp3
MoviePy - Done.
Moviepy - Writing video ../temp/output.mp4

t: 100%|███████████████████████████████████████████████████████████████████▋| 1073/1077 [00:24<00:00, 59.09it/s, now=None]WARNING:py.warnings:/opt/homebrew/Caskroom/miniconda/base/lib/python3.10/site-packages/moviepy/video/io/ffmpeg_reader.py:123: UserWarning: Warning: in file ../temp/7748c551-7836-4633-a9ea-282d17817afd.mp4, 6220800 bytes wanted but 0 bytes read,at frame 1076/1077, at time 35.87/35.87 sec. Using the last valid frame instead.
  warnings.warn("Warning: in file %s, "%(self.filename)+

Moviepy - Done !
Moviepy - video ready ../temp/output.mp4

Okay, after some more checks it appears that the step MoviePy - Writing audio in finalTEMP_MPY_wvf_snd.mp3 isn't working as expected, as there is no file like that in temp

Okay, it appears that the file is actually named 90aabf47-31e3-4726-be27-c94bac0405c9.mp3, maybe there is some issue with the naming

Okay, after some more checks it appears that the step MoviePy - Writing audio in finalTEMP_MPY_wvf_snd.mp3 isn't working as expected, as there is no file like that in temp

Okay, it appears that the file is actually named 90aabf47-31e3-4726-be27-c94bac0405c9.mp3, maybe there is some issue with the naming

This file finalTEMP_MPY_wvf_snd.mp3 is generated in the Backend directory rather than temp i don't why but you can see

Still doesnt exist there, I think it has something to do with an python version incompatibility, as seen in the docker discussion

Still doesnt exist there, I think it has something to do with an python version incompatibility, as seen in the docker discussion

Once video generation is completed file gets deleted automatically you need to keep an eye while it's merging the video with subtitle and audio.
I was using python3.12 before which was causing issues. python3.11  works fine for me

I have the same problem still and I am also on python 3.11. Any other ideas?

I have the same problem still and I am also on python 3.11. Any other ideas?

yes, me too. I'm not sure if the python version is the issue here.

Okay finally figured out. It's the codec issue.
I am guessing you're checking the output video in the Quicktime/iMovie or finder itself if you're using Mac. I don't know about the other OS.
Can you try with VLC player and you will be able to hear audio

@iStorry I have been using VLC also the entire time, still nothing :/

Okay finally figured out. It's the codec issue. I am guessing you're checking the output video in the Quicktime/iMovie or finder itself if you're using Mac. I don't know about the other OS.
Can you try with VLC player and you will be able to hear audio @germansilva45 @jbrulmans

thank you! using VLC worked for me.


Updating rotation and position of AnimatableBody2D in code only updates using the last instruction

Godot version
4.0.2.stable, 4.1.dev1
System information
Windows 10
Issue description
In an attempt to create a moving and rotating platform that syncs to physics, I created an AnimatableBody2D and updated the code to manipulate my object rather than use an animation.
The code I'm using is this:
func _physics_process(delta):
	global_rotation_degrees += delta*10
	global_position.x += delta*10

What I expect:
A clockwise rotating object that goes from left to right.
What I get:
Only the last instructions updates the object, in this case, the position.
Doing this on the parent class (StaticBody2D) OR disabling the sync to physics makes it work, but you lose the sync to physics.
I might be doing this wrong, but couldn't find info around it, so sorry if this is a non-issue.
Steps to reproduce

Create AnimatableBody2D node
Add a sub node for visibility (Sprite2D with Godot logo)
Add script to AnimatableBody2D with
'''
func _physics_process(delta):
global_rotation_degrees += delta10
global_position.x += delta10
'''
Object will only translate to the right instead of translating and rotating

Minimal reproduction project
N/A

Duplicate of https://github.com/godotengine/godot/issues/74162 (same cause).

You can combine rotation/position/scale into Transform2D in advance and then set transform.


Polygons don't draw if you don't put a Border texture

Normal Polygon2D nodes draw the color you give to them, regardless of whether or not you give them a texture.
Expected:
The functionality from Polygon2D should maintain.
Actual result:
With BorderedPolygon2D, they don't draw at all if border_texture is null.

Solved by #43


[bug]  The installed metamask wallet cannot be displayed

Link to minimal reproducible example
none
Summary
The installed metamask wallet cannot be displayed，Chrome 111.0.0 Chrome OS 14541.0.0
List of related npm package versions
"@web3modal/ethereum": "^2.1.3",
"@web3modal/react": "^2.1.3",
"wagmi": "^0.11.6",

Unable to replicate, please provide minimal reproducible example with any custom tweaks you might be using i.e. custom images / errors with metamask image etc. Feel free to ping me to re-open the issue once these are added.


Create custom template for language selector

Hi,
I really appreciate what you did with this package.
It is really useful and very simple to use. I would like to create a custom template to display language selection in a different (and more complicated) way, for example with Bootstrap Button dropdowns
http://getbootstrap.com/components/#btn-dropdowns
I see I can create a static template, starting from this
https://github.com/TAPevents/tap-i18n-ui/blob/master/frameworks/i18n_ui_bootstrap.html
such as
<template name="i18n_custom_dropdown">

    {{#if i18n_enabled}}

      <button type="button" class="btn btn-danger"></button>
      <button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">

        Toggle Dropdown
      </button>

        {{#each i18n_sortedLanguages}}

{{name}}

        {{/each}}

    {{else}}
      No i18n files found
    {{/if}}

</template>

But I cannot understand I can bind language changing on click
Can you suggest me how to start?
Thanks!!

For the moment I solved with this code
Template.i18n_custom_dropdown.events({
    'click a': function (event) {
      event.preventDefault();

      var requestedLanguage = event.target.getAttribute('data-language');
      if(requestedLanguage) {
        console.log("setting language as: " + requestedLanguage);
        TAPi18n.setLanguage(requestedLanguage);
      }
    }
  });

Hi @ciro207  -- thanks for the issue.
Take a look at the following lines of code in coffee-script for how we're doing it:
https://github.com/TAPevents/tap-i18n-ui/blob/master/frameworks/i18n_ui_bootstrap.coffee#L5-L7
In other words, you can replace
var requestedLanguage = event.target.getAttribute('data-language');
if(requestedLanguage) {
    console.log("setting language as: " + requestedLanguage);
    TAPi18n.setLanguage(requestedLanguage);
}

with
TAPi18n.setLanguageAmplify(this.tag)

And it should work. The context of this (or @ in coffee) will contain all the information about the language, so this.tag is the language tab. We use setLanguageAmplify in order to make it 'sticky' so if a user navigates back at a later date it remembers the language.
By the way, feel free to submit a Pull Request if you add this and we can include it in the main package!
Cheers


Higlighting the entire code block

Would it be possible to higlight the entire fenced code block, similar to what RStudio does? Even if this was just an option, or if there was an easy way to do this I could make the edit myself... I find it much cleaner to have the Markdown visually separated from the code.
Thanks!

closing since this is something I personally would dislike.. however, I'd be happy to take a pr if someone would like to add preferences that would allow this to be enabled/disabled.


Document removal no longer notifies on StreamSubscription since 1.2.0

Stream<DocumentSnapshot>.listen() used to notify when the document is deleted in version 1.1.3.
It no longer does it in version 1.2.0.

This looks like a bug, it broke my unit tests.

Thanks for reporting. It's fixed now and released as version 1.2.1. https://pub.dev/packages/fake_cloud_firestore/changelog#121
Ideally I should have reverted the offending commit and re-released a quick patch, but didn't have the time to. In case a regression happens again and I can't fix it fast, the best way to work around it is to set your dependency to fake_firestore_to the latest working version in pubspec.yaml:
fake_cloud_firestore: 1.1.3


Support pass backend

Can we get support for the pass backend?  As I run in WSL2, this is the only keyring I've found that works for me.  aws-vault has been supporting this backend for a while now.

Yep, seems like we just need to upgrade keyring

When can we get a release with this?

@ryan-dyer 	Today!

https://github.com/segmentio/aws-okta/releases/tag/v0.22.0


Gradually fix RuboCop todos

We added a .rubocop.yml in https://github.com/thoughtbot/factory_bot/commit/5b0257363ca4d14466e740b826374337f0c06d9b with a bunch of todos. It would be nice to gradually fix them. I would like to do it one at a time so nobody has to review a giant PR. 😸

Thinking like 1 commit per offense type?

Yeah, I think so, but use your best judgement. The main thing would be to keep each pull request fairly small.

Are there any of these remaining to be addressed? It looks like #1208 hits most remaining things, unless we want to deviate from the primary rubocop.yml from thoughtbot.

@ChaoticBoredom I merged #1208, but there are still a few more TODOs in https://github.com/thoughtbot/factory_bot/blob/master/.rubocop.yml


Add type definition/implementation/diagnostic support

So far the PR only supported the json typed database.

Hi @dbaeumer, I created a new PR to support type definition/implementation/diagnostic. So far it only implemented in json data store.


Fix performBatchUpdates crash

Now I remember faced a similar crash and adding this line fixes it. Got the answer from SO initially: https://stackoverflow.com/a/46751421/1032900
This should fix https://github.com/zhangao0086/DKImagePickerController/issues/565
Also started using optional group instead of group! which caused other crashes

Thanks for your PR!!!

Thanks for maintaining the lib!


[Bug]: Jest reports a wrong test to have failed due to an exception

Version
27.2.0
Steps to reproduce

Clone repo at https://github.com/darioackermann/jest-async-network-wrong-failing-attribution
npm i
Run npm test with network connection: they will all pass
Run npm test without network connection.

Expected behavior
Jest should report that the test with the name should do a request which fails when no network failed, or if not backtraceable, an async test has failed at some point
Actual behavior
Jest reports that should do something else failed
Additional context
No response
Environment
System:
    OS: Windows 10 10.0.19043
    CPU: (12) x64 Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz
  Binaries:
    Node: 14.17.0 - C:\Program Files\nodejs\node.EXE
    npm: 6.14.13 - C:\Program Files\nodejs\npm.CMD
  npmPackages:
    jest: ^27.2.0 => 27.2.0

You need to tell Jest to wait for the async work, otherwise it has no way of knowing which test is running when it fails.
diff --git i/network.test.js w/network.test.js
index 2b0c1a4..908166b 100644
--- i/network.test.js
+++ w/network.test.js
@@ -4,7 +4,7 @@ const sleep = require("sleep-promise");
 const Test =
 {
     doRequest() {
-        axios.get('http://example.com')
+        return axios.get('http://example.com')
     },
 }

@@ -12,7 +12,7 @@ describe('a failing test', function () {

     it('should do a request which fails when no network', async function () {
         let requestSpy = jest.spyOn(Test, "doRequest")
-        Test.doRequest();
+        await Test.doRequest();
         // passes in any case
         expect(requestSpy).toBeCalledTimes(1)
     });

I am afraid this example was not the best to bring up the problem.
What if waiting is not possible because the thing we're waiting for is not directly returned?


Wrong mapping on IdMember in linq query

Hello. I have classes.
    public interface IIdentity
    {
        string Id { get; set; }
    }
    public interface IStorableObject : IIdentity
    {
        string SystemId { get; set; }
        int Version { get; set; }
    }
    public abstract class PocoStorableObject : IStorableObject
    {
        public string Id { get; set; }
        public string SystemId { get; set; }
        public int Version { get; set; }
    }
    public class BaseClass : PocoStorableObject
    {
        public string Name { get; set; }
    }

The IdMember is SystemId not a Id.
DocumentStore store = DocumentStore.For(x =>
            {
                var memberInfo = typeof(BaseClass).GetMember("SystemId").FirstOrDefault();
                x.MappingFor(typeof(BaseClass)).IdMember = memberInfo;
};

In postgre stored correctly.
Stored a few objects.
new BaseClass() {Id = "qwe", SystemId = "123"},
new BaseClass() {Id = "asd", SystemId = "456"},
new BaseClass() {Id = "zxc", SystemId = "789"}

I have 2 list:
var listIds = new List<string>() { "qwe", "zxc" };
var listSystemIds = new List<string>() { "123", "456" };

Mapping in linq not working.
var resultId1 = martenQueryable.Count(o => listIds.Contains(o.Id)); // result 0
var resultId2 = martenQueryable.Count(o => listSystemIds.Contains(o.Id)); // result 2
var resultSystemId3 = martenQueryable.Count(o => listIds.Contains(o.SystemId)); // result 0
var resultSystemId4 = martenQueryable.Count(o => listSystemIds.Contains(o.SystemId)); // result 2

All query search by Id property, but need for searching by SystemId property.

if you would want to search by IdMember, use the below:
var listSystemIds = new List<string>() { "123", "456" };
// this query will allow you to fetch by the Identity field and then you can get count
var result = session.LoadMany<BaseClass>(listSystemIds.ToArray());

// your last query as below should work as well
var resultSystemId4 = martenQueryable.Count(o => listSystemIds.Contains(o.SystemId));

Note that Marten stores the data as below:
 id                        | character varying <== this will have the id value stored which is SystemId
 data                    | jsonb <== serialized data which also contains SystemId
 mt_last_modified | timestamp with time zone
 mt_version          | uuid
 mt_dotnet_type   | character varying

123 | {"Id": "qwe", "Name": null, "Version": 0, "SystemId": "123"} | 2017-04-25 18:53:24.311813+05:30 | 015ba547-e5ec-4ffe-8ac4-1f446ae69885 | MartenTest1.BaseClass
 456 | {"Id": "asd", "Name": null, "Version": 0, "SystemId": "456"} | 2017-04-25 18:53:24.311813+05:30 | 015ba547-e5ec-488e-b940-e06ec7e1c036 | MartenTest1.BaseClass
 789 | {"Id": "zxc", "Name": null, "Version": 0, "SystemId": "789"} | 2017-04-25 18:53:24.311813+05:30 | 015ba547-e5ec-4b1a-b66b-0e55e1436f65 | MartenTest1.BaseClass

session.Load<T> or session.LoadMany<T> methods will allow you to access records based on the Identity column i.e. id in table.
Count(...) or Where(...) are queries which are applied on the document i.e. data column in table

Searching by SystemId works well.
The question is how I can search by Id property that not the IdMember.
This is query search by SystemId, not by Id:
var resultId1 = martenQueryable.Count(o => listIds.Contains(o.Id)); // result 0

I understood you issue. When you query with a property name Id, Marten runs the query against idcolumn in the table and not the Id property in document stored in jsonbdata` column.
I certainly think it is not a good idea to have a both Id as a property and also a different property as IdMember column.

Yes, you understood me.
Martens allows you to store another property as IdMember. I use it.
The same use case of stored casses I used in mongodb. Mapped in SystemId. All query works well.
It seems to me normal storage option Id property and SystemId property.

Can anyone tell me if there are plans to solve this issue?

@KopIlya Same thing, if there really is an issue here, could you add a pull request with a failing test to the 1.5 branch that demonstrates this one?

I created pull request https://github.com/JasperFx/marten/pull/759

@KopIlya Got it. I did change the tests a little bit. You'll want to use the IsOneOf() method or IQuerySession.LoadMany<T> to load documents by an array of id's.
See the commit that'll be tagged against this issue in a second. This'll be in 1.5.2


Feature request: Option to choose default browser

I use Safari as my system default browser, but would like NetNewsWire articles to open in Brave. Would it be possible to offer a choice for the default browser in the preferences?

I'm using Bumpr to achieve this. It's not ideal solution, but it works.

I’m part of the way there on an old branch if we want to do this.

I'm all of the way there on a new branch if we want to do this. 😬

Just want to check: the desired function for this issue is upon clicking a headline or other link, the link will open in the default iOS browser?

@cwmke This was a Mac feature.


User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"

When install a helm package, I got the following error like this:
[root@k8s-master3 ~]# helm install --name nginx stable/nginx-ingress
Error: release nginx failed: namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"

Here is my helm version:
[root@k8s-master3 ~]# helm version
Client: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}

And my kubectl version:
[root@k8s-master3 ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"8+", GitVersion:"v1.8.1-alicloud", GitCommit:"19408ab2a1b736fe97a9d9cf24c6fb228f23f12f", GitTreeState:"clean", BuildDate:"2017-10-19T04:05:24Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.1", GitCommit:"f38e43b221d08850172a9a4ea785a86a3ffa3b3a", GitTreeState:"clean", BuildDate:"2017-10-11T23:16:41Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

Any help will be appreciated, thanks a lot!

It seems that you have encountered a problem related to privileges.
You could enable rbac in when deploying the chart:
$ helm install --name nginx --set rbac.create=true stable/nginx-ingress

@flyer103
It still can not work.

Same problem here. Enabling rbac does not help.
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.3", GitCommit:"f0efb3cb883751c5ffdbe6d515f3cb4fbe7b7acd", GitTreeState:"clean", BuildDate:"2017-11-10T13:17:12Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.2", GitCommit:"bdaeafa71f6c7c04636251031f93464384d54963", GitTreeState:"clean", BuildDate:"2017-10-24T19:38:10Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
$ helm install --name my-hdfs-namenode hdfs-namenode-k8s
Error: release my-hdfs-namenode failed: namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"
Help would really be appreciated!

What you need to do is grant tiller (via the default service account) access to install resources in the default namespace. See https://github.com/kubernetes/helm/blob/master/docs/service_accounts.md

Hi, @bacongobbler
Thanks for help. I follow your instructions mentioned above, and I've done the following things:
First of all, I reset the tiller:
helm reset --force

After doing this, I create a RBAC yaml file:
[root@k8s-master3 ~]# cat rbac-config.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: default

And then init my tiller:
helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.7.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

However, the tiller is not installed successfully:
[root@k8s-master3 ~]# helm version
Client: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}
Error: cannot connect to Tiller

And I sew the deployments in kube-system namespace is like this:
[root@k8s-master3 ~]# kubectl get deployments --all-namespaces
NAMESPACE     NAME                       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
ci            jenkins                    1         1         1            1           5d
default       redis-master               1         1         1            0           4d
kube-system   default-http-backend       1         1         1            1           5d
kube-system   heapster                   1         1         1            1           5d
kube-system   kube-dns                   1         1         1            1           5d
kube-system   kubernetes-dashboard       1         1         1            1           5d
kube-system   monitoring-influxdb        1         1         1            1           5d
kube-system   nginx-ingress-controller   1         1         1            1           5d
kube-system   tiller-deploy              1         0         0            0           9m

Any ideas about how to solve this problem?
Thanks in advance!

@noprom  try this
delete the deployment of tiller manually
create these rbac config for tiller
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-clusterrolebinding
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: ""

run delete (yes delete) on that  rbac config
run create again
then run helm init --upgrade to replace
you should not have any more errors.

@innovia
Great! Thanks, I've solved this problem.
Thanks a lot!

Happy to help :)

@noprom please check my post on how to setup helm and tiller with rbac per namespace

@innovia
Fantastic post!😄

Thanks!

the above doesn't work Still getting
namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"

That's because you don't have permission to deploy tiller, add an account for it:
kubectl create serviceaccount --namespace kube-system tiller
  serviceaccount "tiller" created

kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
 clusterrolebinding "tiller-cluster-rule" created

kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
  deployment "tiller-deploy" patched

Then run below  to check it :
helm list
helm repo update

@ykfq Thanks a ton, it works!

@antran89
If you use the official tiller installation instruction, you'll have to do so:

Create a serviceaccount for tiller
Bind a role for the ServiceAccout created above (cluster-admin role is needed)
Make a ClusterRoleBinding for ServiceAccout
Patch the deployment created when using helm init

So, there is another way to make it easer - install via yaml file:
vim tiller.yaml
apiVersion: v1
kind: Service
metadata:
  name: tiller-deploy
  namespace: kube-system
  labels:
    app: helm
    name: tiller
spec:
  ports:
  - name: tiller
    port: 44134
    protocol: TCP
    targetPort: tiller
  selector:
    app: helm
    name: tiller
  type: ClusterIP
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tiller-deploy
  namespace: kube-system
  labels:
    app: helm
    name: tiller
  annotations:
    deployment.kubernetes.io/revision: "5"
spec:
  replicas: 1
  selector:
    matchLabels:
      app: helm
      name: tiller
  template:
    metadata:
      labels:
        app: helm
        name: tiller
    spec:
      containers:
      - env:
        - name: TILLER_NAMESPACE
          value: kube-system
        - name: TILLER_HISTORY_MAX
          value: "0"
        name: tiller
        image: gcr.io/kubernetes-helm/tiller:v2.8.2
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 44134
          name: tiller
          protocol: TCP
        - containerPort: 44135
          name: http
          protocol: TCP
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /liveness
            port: 44135
            scheme: HTTP
          initialDelaySeconds: 1
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /readiness
            port: 44135
            scheme: HTTP
          initialDelaySeconds: 1
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      serviceAccount: tiller
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-cluster-rule
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: ""

Then create the resourses:
kubectl create -f tiller.yaml

Make sure to check your service .
the above yaml content was exported from a running cluster, using command:
kubectl -n kube-system get svc tiller-deploy -o=yaml
kubectl -n kube-system get deploy tiller-deploy -o=yaml
kubectl -n kube-system get sa tiller -o=yaml
kubectl -n kube-system get clusterrolebinding tiller-cluster-rule -o=yaml

This yaml hasn't tested yet, if you have any question, make a conment.

@ykfq I don't like the idea of giving Tiller full cluster admin privileges, but nothing else worked for me. I tried following this example. I was trying to restrict Tiller to acting only on namespaces I let it act.
But always ran into this issue (was deploying Concourse):
Error: release concourse failed: namespaces "concourse" is forbidden: User "system:serviceaccount:tiller-system:tiller-user" cannot get namespaces in the namespace "concourse": Unknown user "system:serviceaccount:tiller-system:tiller-user"

Any ideas of how to make that specific example work? I changed some parameters around, the entire YAML with RBACs was this one:
apiVersion: v1
kind: Namespace
metadata:
  name: tiller-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller-user
  namespace: tiller-system
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-manager
  namespace: tiller-system
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["configmaps"]
  verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-binding
  namespace: tiller-system
subjects:
- kind: ServiceAccount
  name: tiller-user
  namespace: tiller-system
roleRef:
  kind: Role
  name: tiller-manager
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: Namespace
metadata:
  name: concourse
---
apiVersion: v1
kind: Namespace
metadata:
  name: concourse-main
----
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-role
  namespace: concourse
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-namespace-role
  namespace: concourse
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["namespaces"]
  verbs: ["*"]
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-main-role
  namespace: concourse-main
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-main-role
subjects:
- kind: ServiceAccount
  name: tiller-user
  namespace: tiller-system
roleRef:
  kind: Role
  name: tiller-concourse-main-role
  apiGroup: rbac.authorization.k8s.io
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-role
subjects:
- kind: ServiceAccount
  name: tiller-user
  namespace: tiller-system
roleRef:
  kind: Role
  name: tiller-concourse-role
  apiGroup: rbac.authorization.k8s.io
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-namespace-role
subjects:
- kind: ServiceAccount
  name: tiller-user
  namespace: tiller-system
roleRef:
  kind: Role
  name: tiller-concourse-namespace-role
  apiGroup: rbac.authorization.k8s.io

helm init --upgrade --service-account tiller

@brunoban helm v3 will remove tiller so from what i understood the permissions will be by the user who apply it

then run helm init --upgrade to replace
@innovia Where to put the rbac config file?

@cjbottaro did you read the post i wrote Hwo to setup helm and tiller per namespace ?
I don't follow your question, can you please re-explain?

@innovia Nevermind, I figured it out. Just had to run
kubectl create -f tiller.yaml
helm init --upgrade --service-account tiller

this worked for me:
kubectl --namespace kube-system create serviceaccount tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
helm init --service-account tiller --upgrade

I'm following the official Helm documentation for "Deploy Tiller in a namespace, restricted to deploying resources only in that namespace". Here is my bash script:
Namespace="$1"

kubectl create namespace $Namespace
kubectl create serviceaccount "tiller-$Namespace" --namespace $Namespace
kubectl create role "tiller-role-$Namespace" --namespace $Namespace --verb=* --resource=*.,*.apps,*.batch,*.extensions
kubectl create rolebinding "tiller-rolebinding-$Namespace" --namespace $Namespace --role="tiller-role-$Namespace" --serviceaccount="$Namespace:tiller-$Namespace"

Running helm upgrade gives me the following error:

Error: UPGRADE FAILED: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list configmaps in the namespace "kube-system"

Is there a bug in the official documentation? Have I read it wrong?

what was the full command for helm init?

@bacongobbler Moved issue here https://github.com/helm/helm/issues/4933

the above doesn't work Still getting
namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"

Follow below Command:-
helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

What you need to do is grant tiller (via the default service account) access to install resources in the default namespace. See https://github.com/kubernetes/helm/blob/master/docs/service_accounts.md

The file name is now rbac.md and the link is at https://github.com/helm/helm/blob/master/docs/rbac.md.

That's because you don't have the permission to deploy tiller, add an account for it:
kubectl --namespace kube-system create serviceaccount tiller

kubectl create clusterrolebinding tiller-cluster-rule \
 --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

kubectl --namespace kube-system patch deploy tiller-deploy \
 -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

Console output:
serviceaccount "tiller" created
clusterrolebinding "tiller-cluster-rule" created
deployment "tiller-deploy" patched

Then run command below to check it :
helm list
helm repo update
helm install --name nginx-ingress stable/nginx-ingress

It would be great if tiller installation docs be updated with these precise instructions
I had the following yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: ""
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

If I'm correct i was missing the tiller deployment in this yaml?

helm init --upgrade --service-account tiller

The above command fixes this issue, highly recommend this step at first :)


Request processing failed: com.documents4j.throwables.ConversionInputException: The input file seems to be corrupt

Hello,
We encounter an issue when trying to convert a docx document to PDF when starting the Document4j JAR as a Windows service using NSSM (Windows Server 2019 / Office 2016):
"message":"Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: com.documents4j.throwables.ConversionInputException: The input file seems to be corrupt] with root cause","component":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]","level":"ERROR","stacktrace":"com.documents4j.throwables.ConversionInputException: The input file seems to be corrupt\r\n\tat com.documents4j.util.Reaction$ConversionInputExceptionBuilder.make(Reaction.java:159)\r\n\tat com.documents4j.util.Reaction$ExceptionalReaction.apply(Reaction.java:75)\r\n\tat com.documents4j.conversion.ExternalConverterScriptResult.resolve(ExternalConverterScriptResult.java:70)\r\n\tat com.documents4j.conversion.ProcessFutureWrapper.evaluateExitValue(ProcessFutureWrapper.java:59)\r\n\tat com.documents4j.conversion.ProcessFutureWrapper.get(ProcessFutureWrapper.java:47)\r\n\tat com.documents4j.conversion.ProcessFutureWrapper.get(ProcessFutureWrapper.java:14)\r\n\tat com.documents4j.job.AbstractFutureWrappingPriorityFuture.run(AbstractFutureWrappingPriorityFuture.java:78)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\r\n\tat java.base/java.lang.Thread.run(Thread.java:833)\r\n"}
However, everything works fine when we start the app in PowerShell or CMD.
We have already tried multiple resolution steps mentioned here: https://social.technet.microsoft.com/Forums/en-US/334c9f30-4e27-4904-9e71-abfc65975e23/problem-running-windows-service-with-excel-object-on-windows-server-2008-64-bit?forum=officesetupdeploylegacy
Has anyone encountered this issue on the latest versions of Windows Server? If not, do you have a workaround solution to run Document4j as a Windows service and deploy it in production with this excellent product ?
Thank you in advance for your help.

Hello, I'd like to return to the topic. Is anyone experiencing this issue on the latest versions of Windows Server ( 2016 version 1607) ?