grdchk output cleanup

This is a feature request to enable grdchk output whether or not UseSingleCpuIO is set:
https://github.com/MITgcm/MITgcm/blob/4c91ca28d5d29f14641d58b64b890a8324c5893c/pkg/grdchk/grdchk_main.F#L536
Currently, this MDS writes both AD/TL output only if UseSingleCpuIO=.false.

In order to do so, we will probably need an exchange of the fields tmpplot1/2/3 (_EXCH_XYZ_RL( tmpplot1, myThid ), etc.) before writing and then we can remove the entire if-statement. Did you try that?

I don't know if this is helpful (probably not), but this is the log of the CVS commit that modified this condition (adding "AND .NOT.useSingleCpuIO)":
Revision 1.38 - (view) (download) (annotate) - [select for diffs]
Tue Aug 21 14:00:04 2012 UTC (12 years, 1 month ago) by gforget
Branch: MAIN
Changes since 1.37: +18 -44 lines
Diff to previous 1.37

attempt to fix grdchk in the case of useSingleCpuIO.
"if ( myProcId .EQ. grdchkwhichproc .AND. ierr .EQ. 0 )"
statements were moved from grdchk_main.F and into
grdchk_getadxx.F grdchk_getxx.F grdchk_setxx.F.
a global sum is applied to record numbers icvrec/layer
out of grdchk_loc so that they be passed to I/O routines.

And regarding adding EXCH to these 3 fields, I would be surprised if this was needed (but who knows ...), as these I/O routines only output the interior of the tile (without the overlap), just my impression.

And I forgot: I agree entirely with @mjlosch about this:

and then we can remove the entire if-statement.
as removing only the ".AND. .NOT.useSingleCpuIO" will not work with MPI. (may be the reason it was added back in 2012 ?)

I am a little confused here. In an earlier change (commit 78a0e1c), the if-statement was added, i.e. it was no there before Feb 08, 2003.
I don't understand, what the grdchkWhichProc does, maybe some backward compatibility thing? Used to be a runtime parameter, but currently it is set to myProcId in grdchk_readparms.F within _BEGIN/END_MASTER, but that means that for each MPI process, grdchkWhichProc is different, doesn't it?
There are a couple of places with myProcId .EQ. grdchkwhichproc is tested, but since grdchkwhichproc=myProcId (as set in grdchk_readparms.F), this will always be true and probably can be removed everywhere. What do you think?

@mjlosch regarding this:

I guess a lot of this has historic reasons, but it's not very intuitive. Should we try to change it? and if so, how?

I don't think it would be difficult to allow to do gradient check over a set of locations across tiles (and with MPI, across procs), just a little bit teadious (and requires some time to test this). The main issue would be make decision about a global-map specification of the location of the points we check, with or without pkg/exch2 (and blank tiles). But this other related question is, does this is really needed for what we are doing ?

I guess the answer to the second question is "no", we don't need it, but it would make things more transparent and easier to use. So I'll happily not delve into this at this point.
I tried removing the if-statement in l536 in grdch_main.F and things work with and without MPI (for me). I can turn this into a small PR, unless @IvanaEscobar wants to do it herself.

I’m happy to try out the changes you’ve implemented!
I don’t have an alternative conceptualized, so @mjlosch feel free to take this to a PR!

This may be unrelated to this issue, but I'll post here to start.

Using the verification problem verification/global_oce_biogeo_bling along with modifications from #873 , I am able to get the TLM executable to compile and run.
When I run the problem 'out of the box', ctrl_init_ctrlvar.f will issue a warning that my perturbations are initialized to values of zero for all control variables set inside data.ctrl
** WARNING ** CTRL_INIT_CTRLVAR: could not find g_xx_theta.0000000000.data
** WARNING ** for TLM perturbation so will initialize this file with all zeros

At runtime, I get g__dynstat_* to always equal zero.
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) // Begin TL_MONITOR dynamic field statistics
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) %MON g__time_tsnumber             =                     4
(PID.TID 0000.0001) %MON g__time_secondsf             =   3.6000000000000E+03
(PID.TID 0000.0001) %MON g__dynstat_g_eta_max         =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_eta_min         =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_eta_mean        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_eta_sd          =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_eta_del2        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_max        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_min        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_mean       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_sd         =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_del2       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_max        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_min        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_mean       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_sd         =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_del2       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_max        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_min        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_mean       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_sd         =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_del2       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_theta_max       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_theta_min       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_theta_mean      =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_theta_sd        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_theta_del2      =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_salt_max        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_salt_min        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_salt_mean       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_salt_sd         =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_salt_del2       =   0.0000000000000E+00
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) // End TL_MONITOR dynamic field statistics
(PID.TID 0000.0001) // =======================================================

The cost function seems to accumulate fine, and the gradient check is showing unique perturbation results:
(PID.TID 0000.0001) == cost_profiles: begin ==
(PID.TID 0000.0001)  cost_profiles( 1, 1)=  0.15761D+05 0.24000D+02
(PID.TID 0000.0001)  cost_profiles( 1, 2)=  0.17325D+06 0.19000D+02
(PID.TID 0000.0001)  cost_profiles( 1,14)=  0.99578D+03 0.24000D+02
(PID.TID 0000.0001) == cost_profiles: end   ==
(PID.TID 0000.0001)
(PID.TID 0000.0001)  --> f_profiles = 0.157611479210415D+05 1 1
(PID.TID 0000.0001)  --> f_profiles = 0.173248996930195D+06 1 2
(PID.TID 0000.0001)  --> f_profiles = 0.995782615798402D+03 114
(PID.TID 0000.0001)  --> f_gencost = 0.837874963434406D-02 1
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 1
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 2
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 3
(PID.TID 0000.0001)  --> f_genarr3d = 0.999999949475751D-10 4
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 5
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 6
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 7
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 8
(PID.TID 0000.0001)  --> fc               = 0.995783453673465D+03
(PID.TID 0000.0001)   early fc =  0.000000000000000D+00
(PID.TID 0000.0001)   local fc =  0.995783453673465D+03
(PID.TID 0000.0001)  global fc =  0.995783453673465D+03
(PID.TID 0000.0001) grdchk perturb(-)fc: fcpertminus =  9.95783453673465E+02
grad-res -------------------------------
 grad-res     0    4   37   10    1    2    1    1   9.95783453768E+02  9.95783453863E+02  9.95783453673E+02
 grad-res     0    4    4  260    0    2    1    1   9.46742831161E-03  9.46741920416E-03  9.61977122182E-07
(PID.TID 0000.0001)  TLM  ref_cost_function      =  9.95783453768039E+02
(PID.TID 0000.0001)  TLM  tangent-lin_grad       =  9.46742831160606E-03
(PID.TID 0000.0001)  TLM  finite-diff_grad       =  9.46741920415661E-03
(PID.TID 0000.0001) ====== End of gradient-check number   4 (ierr=  0) =======
(PID.TID 0000.0001)
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) // Gradient check results  >>> START <<<
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001)
(PID.TID 0000.0001)  EPS = 1.000000E-05 ; grdchk CTRL var/file name: "xx_ptr2"
(PID.TID 0000.0001)
(PID.TID 0000.0001) grdchk output h.p:  Id Itile Jtile LAYER   bi   bj   X(Id)           X(Id)+/-EPS
(PID.TID 0000.0001) grdchk output h.c:  Id  FC                   FC1                  FC2
(PID.TID 0000.0001) grdchk output h.g:  Id     FC1-FC2/(2*EPS)      TLM GRAD(FC)        1-FDGRD/TLMGRD
(PID.TID 0000.0001)
(PID.TID 0000.0001) grdchk output (p):   1    34    10     1    2    1   0.000000000E+00 -1.000000000E-05
(PID.TID 0000.0001) grdchk output (c):   1  9.9578345376804E+02  9.9578345379595E+02  9.9578345374033E+02
(PID.TID 0000.0001) grdchk output (g):   1     2.7808312097477E-03  2.7808362379711E-03  1.8081695546401E-06
(PID.TID 0000.0001)
(PID.TID 0000.0001) grdchk output (p):   2    35    10     1    2    1   0.000000000E+00 -1.000000000E-05
(PID.TID 0000.0001) grdchk output (c):   2  9.9578345376804E+02  9.9578366018552E+02  9.9578324734342E+02
(PID.TID 0000.0001) grdchk output (g):   2     2.0642104743729E+01  2.0642105255840E+01  2.4809068799314E-08
(PID.TID 0000.0001)
(PID.TID 0000.0001) grdchk output (p):   3    36    10     1    2    1   0.000000000E+00 -1.000000000E-05
(PID.TID 0000.0001) grdchk output (c):   3  9.9578345376804E+02  9.9578425022978E+02  9.9578265727945E+02
(PID.TID 0000.0001) grdchk output (g):   3     7.9647516497516E+01  7.9647518485648E+01  2.4961626432507E-08
(PID.TID 0000.0001)
(PID.TID 0000.0001) grdchk output (p):   4    37    10     1    2    1   0.000000000E+00 -1.000000000E-05
(PID.TID 0000.0001) grdchk output (c):   4  9.9578345376804E+02  9.9578345386281E+02  9.9578345367347E+02
(PID.TID 0000.0001) grdchk output (g):   4     9.4674192041566E-03  9.4674283116061E-03  9.6197712218249E-07
(PID.TID 0000.0001)
(PID.TID 0000.0001) grdchk  summary  :  RMS of    4 ratios =  1.0242211302520E-06
(PID.TID 0000.0001)
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) // Gradient check results  >>> END <<<
(PID.TID 0000.0001) // =======================================================

Now, I modify the gradient check to a different control parameter by editing data.grdchk to
 nend = 0,
...
 grdvarname = "xx_theta",

with the idea to change what parameter grdchk is using the generate central difference perturbations with. Because of this change, I am now seeing non-zero values of the TLM variables being monitored, causing differences in fc.
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) // Begin TL_MONITOR dynamic field statistics
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) %MON g__time_tsnumber             =                     4
(PID.TID 0000.0001) %MON g__time_secondsf             =   3.6000000000000E+03
(PID.TID 0000.0001) %MON g__dynstat_g_eta_max         =   4.0132170335025E-03
(PID.TID 0000.0001) %MON g__dynstat_g_eta_min         =  -9.2700587966479E-05
(PID.TID 0000.0001) %MON g__dynstat_g_eta_mean        =   3.7973653472944E-19
(PID.TID 0000.0001) %MON g__dynstat_g_eta_sd          =   4.6626434103923E-05
(PID.TID 0000.0001) %MON g__dynstat_g_eta_del2        =   3.0604800864425E-06
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_max        =   4.7438152647389E-04
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_min        =  -4.7435212277498E-04
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_mean       =   1.0508150095945E-08
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_sd         =   9.7885024353939E-07
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_del2       =   5.0577403367145E-08
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_max        =   2.1651595917616E-04
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_min        =  -2.1616112925055E-04
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_mean       =  -1.4581393343262E-08
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_sd         =   6.6160058531379E-07
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_del2       =   2.4233559536022E-08
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_max        =   2.4944165186533E-07
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_min        =  -1.5718571107292E-07
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_mean       =  -9.8636830389434E-27
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_sd         =   3.0752088269785E-09
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_del2       =   7.3553748446778E-11
(PID.TID 0000.0001) %MON g__dynstat_g_theta_max       =   9.9976362391151E-01
(PID.TID 0000.0001) %MON g__dynstat_g_theta_min       =  -6.9221103007796E-05
(PID.TID 0000.0001) %MON g__dynstat_g_theta_mean      =   1.7510091769334E-06
(PID.TID 0000.0001) %MON g__dynstat_g_theta_sd        =   1.3218897140900E-03
(PID.TID 0000.0001) %MON g__dynstat_g_theta_del2      =   6.2200076133676E-05
(PID.TID 0000.0001) %MON g__dynstat_g_salt_max        =   9.3829421554705E-06
(PID.TID 0000.0001) %MON g__dynstat_g_salt_min        =  -9.7114982810698E-06
(PID.TID 0000.0001) %MON g__dynstat_g_salt_mean       =  -5.9943476234520E-12
(PID.TID 0000.0001) %MON g__dynstat_g_salt_sd         =   2.5177509823812E-08
(PID.TID 0000.0001) %MON g__dynstat_g_salt_del2       =   9.5499951147917E-10
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) // End TL_MONITOR dynamic field statistics
(PID.TID 0000.0001) // =======================================================

I think it stems from a max value in the monitor stats being changed to equal g__dynstat_g_theta_max = 1
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) // Begin TL_MONITOR dynamic field statistics
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) %MON g__time_tsnumber             =                     0
(PID.TID 0000.0001) %MON g__time_secondsf             =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_eta_max         =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_eta_min         =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_eta_mean        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_eta_sd          =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_eta_del2        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_max        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_min        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_mean       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_sd         =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_uvel_del2       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_max        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_min        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_mean       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_sd         =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_vvel_del2       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_max        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_min        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_mean       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_sd         =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_wvel_del2       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_theta_max       =   1.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_theta_min       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_theta_mean      =   1.7482196967887E-06
(PID.TID 0000.0001) %MON g__dynstat_g_theta_sd        =   1.3222014371935E-03
(PID.TID 0000.0001) %MON g__dynstat_g_theta_del2      =   6.2222291148991E-05
(PID.TID 0000.0001) %MON g__dynstat_g_salt_max        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_salt_min        =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_salt_mean       =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_salt_sd         =   0.0000000000000E+00
(PID.TID 0000.0001) %MON g__dynstat_g_salt_del2       =   0.0000000000000E+00
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) // End TL_MONITOR dynamic field statistics
(PID.TID 0000.0001) // =======================================================

The cost function values change even within the profiles package itself! I was not expecting that, see f_profiles
(PID.TID 0000.0001) == cost_profiles: begin ==
(PID.TID 0000.0001)  cost_profiles( 1, 1)=  0.15761D+05 0.24000D+02
(PID.TID 0000.0001)  cost_profiles( 1, 2)=  0.17325D+06 0.19000D+02
(PID.TID 0000.0001)  cost_profiles( 1,14)=  0.99578D+03 0.24000D+02
(PID.TID 0000.0001) == cost_profiles: end   ==
(PID.TID 0000.0001)
(PID.TID 0000.0001)  --> f_profiles = 0.157611479211368D+05 1 1
(PID.TID 0000.0001)  --> f_profiles = 0.173248996930408D+06 1 2
(PID.TID 0000.0001)  --> f_profiles = 0.995782615893182D+03 114
(PID.TID 0000.0001)  --> f_gencost = 0.837872551897835D-02 1
(PID.TID 0000.0001)  --> f_genarr3d = 0.999999949475751D-10 1
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 2
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 3
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 4
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 5
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 6
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 7
(PID.TID 0000.0001)  --> f_genarr3d = 0.000000000000000D+00 8
(PID.TID 0000.0001)  --> fc               = 0.995783453765834D+03
(PID.TID 0000.0001)   early fc =  0.000000000000000D+00
(PID.TID 0000.0001)   local fc =  0.995783453765834D+03
(PID.TID 0000.0001)  global fc =  0.995783453765834D+03
(PID.TID 0000.0001) grdchk perturb(-)fc: fcpertminus =  9.95783453765834E+02
grad-res -------------------------------
 grad-res     0    1   34   10    1    2    1    1   9.95783453768E+02  9.95783453770E+02  9.95783453766E+02
 grad-res     0    1    1  257    0    2    1    1   2.31371944543E-04  2.31904095926E-04 -2.29998232679E-03
(PID.TID 0000.0001)  TLM  ref_cost_function      =  9.95783453768039E+02
(PID.TID 0000.0001)  TLM  tangent-lin_grad       =  2.31371944543075E-04
(PID.TID 0000.0001)  TLM  finite-diff_grad       =  2.31904095926438E-04
(PID.TID 0000.0001) ====== End of gradient-check number   1 (ierr=  0) =======
(PID.TID 0000.0001)
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) // Gradient check results  >>> START <<<
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001)
(PID.TID 0000.0001)  EPS = 1.000000E-05 ; grdchk CTRL var/file name: "xx_theta"
(PID.TID 0000.0001)
(PID.TID 0000.0001) grdchk output h.p:  Id Itile Jtile LAYER   bi   bj   X(Id)           X(Id)+/-EPS
(PID.TID 0000.0001) grdchk output h.c:  Id  FC                   FC1                  FC2
(PID.TID 0000.0001) grdchk output h.g:  Id     FC1-FC2/(2*EPS)      TLM GRAD(FC)        1-FDGRD/TLMGRD
(PID.TID 0000.0001)
(PID.TID 0000.0001) grdchk output (p):   1    34    10     1    2    1   0.000000000E+00 -1.000000000E-05
(PID.TID 0000.0001) grdchk output (c):   1  9.9578345376804E+02  9.9578345377047E+02  9.9578345376583E+02
(PID.TID 0000.0001) grdchk output (g):   1     2.3190409592644E-04  2.3137194454308E-04 -2.2999823267855E-03
(PID.TID 0000.0001)
(PID.TID 0000.0001) grdchk  summary  :  RMS of    1 ratios =  2.2999823267855E-03
(PID.TID 0000.0001)
(PID.TID 0000.0001) // =======================================================
(PID.TID 0000.0001) // Gradient check results  >>> END <<<
(PID.TID 0000.0001) // =======================================================

I wasn't expecting a change in data.grdchk's parameter to cause a change in the cost function accumulation, and am unsure if this is what is supposed to happen.
any thoughts? @mjlosch @heimbach

@IvanaEscobar If you are used to only look at the AD-model, the TL-model is a bit weird. Basically it needs to be forced by initial sensitivities that provided to the model by the g_xx_-files. In a standard verification experiment these files only contain zeros by default leading to zero gradients. Only in the grdchk_main, individual points of the grdchk-variable are assigned values of 1 (this is the initial sensitivity) and just as in a FD-check the gradient of the cost function w.r.t this point and variable is computed. E.g., in global_oce_biogeo_bling, this means that the first call of g_the_main_loop from the_model_main leads only to zero derivatives (g_fc), and only the calls from grdchk_main give non-zero g_fc, along with the FD checks. In global_oce_biogeo_bling, the variables that is checked is xx_ptr2, a passive tracer (in the physical model's sense), so that no sensitivities are propagated into the dynamic variables and hence the monitor output just gives zeros. There is no monitor output for passive TL-tracers, but if you were to print some values, you'd see that they are non-zero (I did this in the context of debugging cost_profiles_tl in PR #873)
When you modify data.grdchk to have xx_theta tested (initial conditions of temperature), there are (obviously) non-zero sensitivities/derivatives on the monitor output because, this initial condition affects the dynamical state variables. nend=0 makes little sense to me, because you would only have one (or zero?) points tested, but that's maybe a side issue.
In this experiment, the profiles cost for variables 1 (theta), 2 (salt), 14 (ph), but the multiplies are only non-zero for 14. To me it is no surprise the that
I agree that the cost function values should not change just because you change the forcing for the TL-model, but here you are looking at the output of the grdchk-package and the cost function is the result of the perturbed (by grdchk_eps=1e-5) xx_theta, so that the difference in the cost functions are expected as the initial temperature basically affects everything in the model, also the bgc-fields. Does this make sense?
This does not mean that the cost function accumulation in the TL model is "correct" and I just found a place in exf_set_uv_tl in verification_other/global_oce_cs32 where things go terribly wrong (see #PR 873).

Ok, to make sure I understood.
A forward sensitivity perturbation should be defined via g_xx_*.data for the TLM to show non-zero adjustments in the forward gradients. This is independent of the grdchk package.

I have adjusted central difference perturbations to be applied at a single point by changing to nend=0. In grdchk_main.F we see the ratio counter begins at 0:
https://github.com/MITgcm/MITgcm/blob/c7a06a2c29b2186c216f05f729b330d10e23c8be/pkg/grdchk/grdchk_main.F#L229
nbeg=0 by default:
https://github.com/MITgcm/MITgcm/blob/c7a06a2c29b2186c216f05f729b330d10e23c8be/pkg/grdchk/grdchk_readparms.F#L82

For the gradient check study within the TLM run, I have perturbed xx_theta, causing the TLM to perturb g_xx_theta (var name?). The monitor output pasted above shows f_profiles with a slightly different accumulation because it's the perturbed profiles package result. This is all done to be able to create the grdchk ratio.

The last confusion I have on this is that data.profiles has the theta observed points be ignored:
https://github.com/MITgcm/MITgcm/blob/c7a06a2c29b2186c216f05f729b330d10e23c8be/verification/global_oce_biogeo_bling/input_ad/data.profiles#L8
This doesn't affect the gradient check perturbation because the perturbation is applied to the predicted (or model equivalent) and not to the data. Is that right?

@IvanaEscobar your summary describes what happens. The cost in global_oce_biogeo_bling does not include contributions from profiles-data with variable theta, but only with ph, but ph depends on the initial condition (perturbation) theta + xx_theta, and the grdchk-packages adds g_xx_theta = 1 for running the TL-model and xx_theta = grdchk_eps for each grid point specified in data.grdchk.
About grdchk_findiff/ratio_ad/ration_flt.

with PR #877, you can use singleCpuIO
the ratio file are identical to the findiff files if the AD or TL models give zero results: https://github.com/MITgcm/MITgcm/blob/c7a06a2c29b2186c216f05f729b330d10e23c8be/pkg/grdchk/grdchk_main.F#L428-L450 This may not be the best choice and one could easily add CPP-flags to only print the relevant files.

Another thing to note is that using pkg/grdchk with pkg/ecco may result in confusing final results for cost function accumulation.
For example, in verification/global_oce_biogeo_bling, compiling and running the TAF AD model out-of-the-box, with the gradient check package turned on, you will get the following costfunction0000:
 fc =   15761.1487590094       0.0000000E+00
sample_prof                    prof_T   =  0.157611479211368D+05 0.240000000000000D+02
sample_prof                    prof_S   =  0.173248996930408D+06 0.190000000000000D+02
sample_prof                    prof_PH  =  0.995782615893182D+03 0.240000000000000D+02
sst-MW          (gencost  1) =  0.837872551897835D-02 0.444700000000000D+04
xx_theta        (genarr3d  1) =  0.999999949475751D-10 0.556730000000000D+05
xx_salt         (genarr3d  2) =  0.000000000000000D+00 0.556730000000000D+05
xx_ptr1         (genarr3d  3) =  0.000000000000000D+00 0.556730000000000D+05
xx_ptr2         (genarr3d  4) =  0.000000000000000D+00 0.556730000000000D+05
xx_ptr3         (genarr3d  5) =  0.000000000000000D+00 0.556730000000000D+05
xx_ptr4         (genarr3d  6) =  0.000000000000000D+00 0.556730000000000D+05
xx_ptr5         (genarr3d  7) =  0.000000000000000D+00 0.556730000000000D+05
xx_ptr6         (genarr3d  8) =  0.000000000000000D+00 0.556730000000000D+05

Looking closely, the cost function accumulation printed to file is actually from the gradient check perturbed state! Specifically from the final gradient check of perturbing by subtraction:
(PID.TID 0000.0001) grdchk perturb(-)fc: fcpertminus =  1.57611487590094E+04

To print out the correct costfunction0000, I have to turn off gradient check entirely and re-run:
 fc =   15761.1487589165       0.0000000E+00
sample_prof                    prof_T   =  0.157611479210415D+05 0.240000000000000D+02
sample_prof                    prof_S   =  0.173248996930195D+06 0.190000000000000D+02
sample_prof                    prof_PH  =  0.995782615893076D+03 0.240000000000000D+02
sst-MW          (gencost  1) =  0.837874963434406D-02 0.444700000000000D+04
xx_theta        (genarr3d  1) =  0.000000000000000D+00 0.556730000000000D+05
xx_salt         (genarr3d  2) =  0.000000000000000D+00 0.556730000000000D+05
xx_ptr1         (genarr3d  3) =  0.000000000000000D+00 0.556730000000000D+05
xx_ptr2         (genarr3d  4) =  0.000000000000000D+00 0.556730000000000D+05
xx_ptr3         (genarr3d  5) =  0.000000000000000D+00 0.556730000000000D+05
xx_ptr4         (genarr3d  6) =  0.000000000000000D+00 0.556730000000000D+05
xx_ptr5         (genarr3d  7) =  0.000000000000000D+00 0.556730000000000D+05
xx_ptr6         (genarr3d  8) =  0.000000000000000D+00 0.556730000000000D+05

This feels like another opportunity for CPP macros or clever flag conditionals to save the day, but I am not sure where to start.

Currently, we have no way of stopping the output into costfunction0000. You'd have to introduce a runtime flag within pkg/ecco that is true when the model starts then set to false after costfunction0000 is written (for the first time), or if the file exists ...

Here's a patch
grdchk_improvements.patch
that addresses both points:

not writing grdchk_ratio_ftl in AD-mode and vice versa
writing costfunction0000 only the first time ecco_cost_final is called.

We could add this to #877

Another thing to note is that using pkg/grdchk with pkg/ecco may result in confusing final results for cost function accumulation.

The last comment is addressed by #877

@IvanaEscobar and @mjlosch since PR #877 is now merged in master branch, I suggest to close this issue.


alonzo refactor in interactions/serialization

https://github.com/vacuumlabs/ledgerjs-cardano-shelley/pull/132/files#r735398482
There does not seem to be a good reason to split the code in interactions/serialization into txOther and txOutput, especially given that serializing native tokens is in txOther. It would be more logical to separate output + mint + native tokens into, say, txOutputMint, or nothing at all.

resolved in #190


Missing Active Tickets

Good Morning!
In tab Active Tickets, missing tickets. I checked everything and the error remains, following images below

Thanks!

I had not created Status for tickets.
Problem Solved!


fix: image from docker file cant't running

Description
Image from docker file can't running if i have public directory on my dart_frog project
Steps To Reproduce

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected Behavior
A clear and concise description of what you expected to happen.
Screenshots

If applicable, add screenshots to help explain your problem.
Additional Context
Add any other context about the problem here.

I got that too in past (forgot to open the issue), so it is not something from latest version.
Steps To Reproduce

dart pub global activate dart_frog_cli
dart_frog --version

0.1.6

dart_frog create my_project
create the public folder + a simple file.txt
dart_frog dev
curl http://localhost:8080/file.txt works
dart_frog build
dart build/bin/server.dart
curl http://localhost:8080/file.txt still working
docker build build + docker run

Unhandled exception:
Invalid argument(s): A directory corresponding to fileSystemPath "public" could not be found
#0      createStaticHandler (package:shelf_static/src/static_handler.dart:50)
#1      createStaticFileHandler (package:dart_frog/src/create_static_file_handler.dart:7)
#2      createServer (file:///app/bin/server.dart:17)
#3      main (file:///app/bin/server.dart:12)
#4      _delayEntrypointInvocation. (dart:isolate-patch/isolate_patch.dart:297)
#5      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192)

Hi @ekokurniadi 👋
Thanks for opening an issue!
This issue should have been resolved already.
Can you confirm that you’re using the latest version of dart_frog_cli by running dart pub global activate dart_frog_cli and ensure you’re using the latest version of package:dart_frog (dart_frog: ^0.1.6)?

on this project i use dart_frog : ^0.1.2

on this project i use dart_frog : ^0.1.2

Can you upgrade to dart_frog: ^0.1.6?
Also, what version of dart_frog_cli are you using (run dart_frog --version )? If you’re not on the latest version can you upgrade and try again?

dart_frog is already use ^0.1.6, but i got same error

  dart_frog is already use ^0.1.6, but i got same error

Can you provide a link to a minimal reproduction sample?

sure, https://github.com/ekokurniadi/mahasiswa_api

@ekokurniadi thanks I was able to reproduce and should have a fix shortly. Sorry for the inconvenience!

@felangel Thanks, glad to be able to use the dart frog

@ekokurniadi this should be resolved now in dart_frog_cli 0.1.7 🎉

@felangel amazing, thank you 👍


Add new method to MarkdownGenerator called new_code_block

This method should be added to mdgen.markdown.MarkdownGenerator.
Here's what the method signature will look like:
def new_code_block(self, code, language='python'):
    pass

So that when the method is called, it will act something like:
>>> m = MarkdownGenerator()
>>> m.new_code_block("import os\nprint(os.cwd())", code="python")
```python
import os
print(os.cwd())
\```
>>> print('ok')
ok

(\ added because of escaping issues)
Note: The logic shouldn't be added to MarkdownGenerator directly. Instead a releavant class should be created in mdgen/core/code.py (create if necessary) and then imported from there. See source code to understand what I mean.
Also please make your PR to the dev branch.

Hi, do you mind if I pick this up?

Please feel free to pick it up!
Assigned to @shngt


NETOBSERV-1904 add configs for UDNs

Description
Update the config for UDNs to:

manage columns
filters
fields
scopes and groups

Dependencies
https://github.com/netobserv/network-observability-console-plugin/pull/656 for some display polishing
Checklist
If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

[X] Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
[ ] Does this PR require product documentation?

[ ] If so, make sure the JIRA epic is labeled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.

[ ] Does this PR require a product release notes entry?

[ ] If so, fill in "Release Note Text" in the JIRA.

[ ] Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.

[ ] If so, make sure it is described in the JIRA ticket.

QE requirements (check 1 from the list):

[X] Standard QE validation, with pre-merge tests unless stated otherwise.
[ ] Regression tests only (e.g. refactoring with no user-facing change).
[ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

Holding this PR until we confirm https://github.com/netobserv/network-observability-console-plugin/pull/656#discussion_r1860354838


Domain Registration (.tv)

Domain Registration (.tv)
I dont find it in Blesta Module Many EXT is missing for BLesta module

Hi @domaingood,
.TV TLD is supported by Blesta ISPAPI registrar module. Could you please provide more details on your issue? Are you not able to find the TLD during package creation?
Could you please also provide a list of missing TLDs?

Closing as of missing feedback. Feel free to follow-up with us to get this ticket re-opened.


WIP: feat: support cyclonedx format for an SBOM file

Signed-off-by: Batuhan Apaydın<EMAIL_ADDRESS>I tested this locally with my own project and got the following result:
KO_DOCKER_REPO=docker.io/devopps VERSION=v1.2.3 /Users/batuhan.apaydin/workspace/projects/personal/poc/ko/ko build --bare -B --platform=linux/amd64 --sbom=cyclonedx --tags latest github.com/GoTurkiye/hello-world-cli
running over here
2022/01/05 23:21:42 Using base gcr.io/distroless/static:nonroot for github.com/GoTurkiye/hello-world-cli
2022/01/05 23:21:45 Using build config foo for github.com/GoTurkiye/hello-world-cli
2022/01/05 23:21:45 Building github.com/GoTurkiye/hello-world-cli for linux/amd64
generating cyclone dx
<?xml version="1.0" encoding="UTF-8"?>
<bom xmlns="http://cyclonedx.org/schema/bom/1.3" serialNumber="urn:uuid:2773bfa6-82d6-41b3-b5ab-4df1c3908764" version="1"><metadata><timestamp>1970-01-01T00:00:00Z</timestamp><tools><tool><vendor>ko (devel)</vendor><name>ko</name><version>(devel)</version></tool></tools></metadata><dependencies><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref=""></dependency><dependency ref="github.com/fsnotify/fsnotify"></dependency><dependency ref="github.com/hashicorp/hcl"></dependency><dependency ref="github.com/magiconair/properties"></dependency><dependency ref="github.com/mitchellh/go-homedir"></dependency><dependency ref="github.com/mitchellh/mapstructure"></dependency><dependency ref="github.com/pelletier/go-toml"></dependency><dependency ref="github.com/spf13/afero"></dependency><dependency ref="github.com/spf13/cast"></dependency><dependency ref="github.com/spf13/cobra"></dependency><dependency ref="github.com/spf13/jwalterweatherman"></dependency><dependency ref="github.com/spf13/pflag"></dependency><dependency ref="github.com/spf13/viper"></dependency><dependency ref="github.com/subosito/gotenv"></dependency><dependency ref="golang.org/x/mod"></dependency><dependency ref="golang.org/x/sys"></dependency><dependency ref="golang.org/x/text"></dependency><dependency ref="golang.org/x/xerrors"></dependency><dependency ref="gopkg.in/ini.v1"></dependency><dependency ref="gopkg.in/yaml.v2"></dependency></dependencies></bom>
2022/01/05 23:21:47 Publishing docker.io/devopps/hello-world-cli:latest
2022/01/05 23:21:50 pushed blob: sha256:8e42ad0c91a1b3648947d43bcdd9bd583e17da22ae0e58c8861451d8b76e6a12
2022/01/05 23:21:50 pushed blob: sha256:703ccee872d81ff6e1e9898f16671741f0488818b3b6411b35b2b156233d3743
2022/01/05 23:21:50 index.docker.io/devopps/hello-world-cli:sha256-e44307be95b2af6cfe832073c156737eda000818d50043528cdd1c44151b753b.sbom: digest: sha256:acf2448b33f249b69e0e1b426ab35a9a577e04b22f639aa8fcb50fd2f9e42b94 size: 327
2022/01/05 23:21:50 Published SBOM index.docker.io/devopps/hello-world-cli:sha256-e44307be95b2af6cfe832073c156737eda000818d50043528cdd1c44151b753b.sbom
2022/01/05 23:21:52 pushed blob: sha256:3dea2186f9413d5ef055a608d58075c6684c71c007b10886a0d672716741564a
2022/01/05 23:21:52 pushed blob: sha256:250c06f7c38e52dc77e5c7586c3e40280dc7ff9bb9007c396e06d96736cf8542
2022/01/05 23:21:53 pushed blob: sha256:3fd3cca02fdc9c3d71f406c9ebe7f7659718a2b0721c375c85301201a08188d7
2022/01/05 23:21:54 pushed blob: sha256:2df365faf0e3007f983fadd7a65ba51d41b488eb2ed8fc70f4bf97043cfea560
2022/01/05 23:21:54 docker.io/devopps/hello-world-cli:latest: digest: sha256:e44307be95b2af6cfe832073c156737eda000818d50043528cdd1c44151b753b size: 952
2022/01/05 23:21:54 Published docker.io/devopps/hello-world-cli@sha256:e44307be95b2af6cfe832073c156737eda000818d50043528cdd1c44151b753b
docker.io/devopps/hello-world-cli@sha256:e44307be95b2af6cfe832073c156737eda000818d50043528cdd1c44151b753b

<?xml version="1.0" encoding="UTF-8"?>
<bom
	xmlns="http://cyclonedx.org/schema/bom/1.3" serialNumber="urn:uuid:2773bfa6-82d6-41b3-b5ab-4df1c3908764" version="1">
	<metadata>
		<timestamp>1970-01-01T00:00:00Z</timestamp>
		<tools>
			<tool>
				<vendor>ko (devel)</vendor>
				<name>ko</name>
				<version>(devel)</version>
			</tool>
		</tools>
	</metadata>
	<dependencies>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref=""></dependency>
		<dependency ref="github.com/fsnotify/fsnotify"></dependency>
		<dependency ref="github.com/hashicorp/hcl"></dependency>
		<dependency ref="github.com/magiconair/properties"></dependency>
		<dependency ref="github.com/mitchellh/go-homedir"></dependency>
		<dependency ref="github.com/mitchellh/mapstructure"></dependency>
		<dependency ref="github.com/pelletier/go-toml"></dependency>
		<dependency ref="github.com/spf13/afero"></dependency>
		<dependency ref="github.com/spf13/cast"></dependency>
		<dependency ref="github.com/spf13/cobra"></dependency>
		<dependency ref="github.com/spf13/jwalterweatherman"></dependency>
		<dependency ref="github.com/spf13/pflag"></dependency>
		<dependency ref="github.com/spf13/viper"></dependency>
		<dependency ref="github.com/subosito/gotenv"></dependency>
		<dependency ref="golang.org/x/mod"></dependency>
		<dependency ref="golang.org/x/sys"></dependency>
		<dependency ref="golang.org/x/text"></dependency>
		<dependency ref="golang.org/x/xerrors"></dependency>
		<dependency ref="gopkg.in/ini.v1"></dependency>
		<dependency ref="gopkg.in/yaml.v2"></dependency>
	</dependencies>
</bom>

https://github.com/CycloneDX/cyclonedx-gomod has an amazing repository but all the useful packages within the internal/ package, so, I couldn't make use of it as a module :(

Other useful links that might help:

https://zt.dev/posts/creating-cyclonedx-gomod-sbom/
https://zt.dev/posts/analysis-cyclonedx-gomod-sbom/

https://github.com/CycloneDX/cyclonedx-gomod has an amazing repository but all the useful packages within the internal/ package, so, I couldn't make use of it as a module :(

Sad indeed, but maybe there's hope if they can refactor some things around: https://github.com/CycloneDX/cyclonedx-gomod/pull/109#issuecomment-996581260
It might be possible via https://github.com/CycloneDX/cyclonedx-gomod/issues/99#issuecomment-972996531 if they expose a high-level method that we can plug into 🤞

It might be possible via CycloneDX/cyclonedx-gomod#99 (comment) if they expose a high-level method that we can plug into 🤞

I'm in the process of making this happen right now (https://github.com/CycloneDX/cyclonedx-gomod/pull/114).
You should then be able to do something along the lines of:
import (
	// ...
	cdx "github.com/CycloneDX/cyclonedx-go"
	cdxbin "github.com/CycloneDX/cyclonedx-gomod/pkg/generate/bin"
)

func cyclonedx(version string) sbomber {
	return func(ctx context.Context, file string, appPath string, img v1.Image) ([]byte, types.MediaType, error) {
		generator, err := cdxbin.NewGenerator(file,
			cdxbin.WithLogger(zerolog.New(io.Discard)), // Disable logging
			cdxbin.WithStdlib(true))                    // Include stdlib component
		if err != nil {
			return nil, "", err
		}
		bom, err := generator.Generate()
		if err != nil {
			return nil, "", err
		}

		cfg, err := img.ConfigFile()
		if err != nil {
			return nil, "", err
		}

		bom.SerialNumber = uuid.New().URN()
		bom.Metadata.Timestamp = cfg.Created.Time.Format(time.RFC3339)
		bom.Metadata.Tools = &[]cdx.Tool{
			{
				Vendor:  "google",
				Name:    "ko",
				Version: version,
			},
		}

		out := new(bytes.Buffer)
		encoder := cdx.NewBOMEncoder(out, cdx.BOMFileFormatJSON)
		if err = encoder.Encode(bom); err != nil {
			return nil, "", err
		}

		return out.Bytes(), ctypes.CycloneDXMediaType, nil
	}
}

The functionality mentioned above is now merged to main.  It should just work, but I haven't tried it as I'm not familiar with ko.
Relevant godoc can be found here.

The functionality mentioned above is now merged to main.  It should just work, but I haven't tried it as I'm not familiar with ko.
Relevant godoc can be found here.

Excellent! Thanks so much! 👍


Investigate and fix flaky unit test: TestReconcileInSubnet

What happened?

PR #24 failed to pass unit tests due to a failed TestReconcileInSubnet test. Rerun of the tests on Jenkins reported successful.
How can we reproduce it?

That is what this issue is for :)
What environment did it happen in?
stack-azure version: https://github.com/crossplaneio/stack-azure/commit/e411d7ab8016beff6d37ec61e68ade08dfb52ec6

This test has not failed since this one flaky run. It should also be replaced when AKSCluster is moved to v1beta1.


Cannot access jsbin.com

Hello,
I created a jsbin HTML page with some JS into it and saved it (https://jsbin.com/qefehuyini/1/edit?output). However, if I try to open jsbin.com now I get this error:

All other websites can be accessed so I guess it is not a network error. Could you please check if everything is OK?
Thank you!

Sorry, outage.

Everything works now!
Thank you for the support!

Hello, the site is down again today!

Thank you! It's up again!


Remove stacktraces in server logs for handled failures

Certain operations, when they fail, cause stack traces to be flushed to the
server logs.
A simple error message in the logs should suffice, and would also better
express that the failure has been properly handled.

Known examples:

- When posting an update without a body (for parameters). ex:
curl -X POST http://localhost:8020/mybucket/akey/update -H "Content-Type:
application/json"

- When getting a key that does not exist. ex:
curl -X GET http://localhost:8020/bucket/nokey

- Getting a key with an invalid predicate (or passing in an invalid predicate
to any operation that takes a predicate). ex:
curl -X GET http://localhost:8020/mybucket/key?predicate=greatballsoffire

- Querying by range with unknown comparator (or passing in an unknown
comparator to any operation that takes a comparator). ex:
curl -X GET
"http://localhost:8020/mybucket/range?startKey=start&comparator=bouillabaisse"

I have yet to probe the Map/Reduce & merge-operations for similar failures, but
I expect to find similar behaviour, especially with MapReduce (since it's heavy
on named functions, etc).

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 23 Jan 2011 at 1:04

Original comment by<EMAIL_ADDRESS>on 23 Jan 2011 at 6:41

Changed state: Accepted

Original comment by<EMAIL_ADDRESS>on 31 Jan 2011 at 5:18

Added labels: Milestone-0.8.2
Removed labels: Milestone-0.8.1

Now, only server error codes (>= 500) get printed with the full stack trace.

Original comment by<EMAIL_ADDRESS>on 26 Apr 2011 at 10:01

Changed state: Fixed

Hey Sven, any estimates for this one? If you're currently too busy, I'll take
it up if you don't mind.

Original comment by<EMAIL_ADDRESS>on 12 Mar 2011 at 7:59

Added labels: Priority-High
Removed labels: Priority-Medium


Examples

Hello.
How do i specify the area in HA?
I have this in my configuration.yaml
sensor:

platform: brottsplatskartan
name: "Brott på Gotland"
area: "Gotlands län"

And getting this
Unable to read file /home/homeassistant/.homeassistant/configuration.yaml: 'utf-8' codec can't decode byte 0xe5 in position 7368: invalid continuation byte
What is the "Right" way to write it?
sorry for dumb questions.

Hello!
I thought I was watching this repo but I was not, so I haven't seen this message until now. :)
I don't know if you fixed it already but that "should" work.
I tried your config and it worked for me liked this:
sensor:
  - platform: brottsplatskartan
    name: "Brott på Gotland"
    area: "Gotlands län"

If that snippet won't work for you then I don't know. It looks like Home Assistant was not able to read you configuration yaml for reasons that are pretty specific to your installation.
Christian


Requesting VidHoi dataset download link

Requesting VidHoi dataset download link

Please refer to this section https://github.com/nizhf/hoi-prediction-gaze-transformer/blob/main/train.md#vidhoi


[docs] spelling mistake under ST1504 AlexNet.md

Rectified Linear Unit

Hi, would you like to help to contribute towards rectifying the issue? :D @TYH71


Integration Test - Release - 2018/12/18 01:31:25

Auto create for integration test. AnotherAuthorUpdatedArticleFlow

@PRMergerTest3 : Thanks for your contribution! The author, @v-caxian, has been notified to review your proposed change.


JAR -> Multiplatform (JVM Only)

This compiles great from the command-line!  But not so much from Android Studio at the moment.  Need to figure that out.
Error in Android Studio:
Cannot find module with id: GradleProjectPath(buildRoot=/Users/samedwards/src/ShoppingApp, path=:mock-data, sourceSet=MAIN)

I tried the code on Bumblebee Beta 5 and it worked fine.  It's an issue in Chipmunk Canary: https://issuetracker.google.com/issues/208357458?pli=1


404 GET /ng2-smart-table/

Hi first thanks for this project. I'm trying to import this module into a project based on quickstart for Angualr 2. when i launch npm start i have this issue 404 GET /ng2-smart-table/. how can I fix it ? thanks

Can you provide example code in plunker or the code snippet that you have used. So that its easy to identify.


App not functioning properly on Firefox?

Describe the bug
When trying to use the app on Firefox, can't click on any of the 'Gen (number)' tabs after 'New Game' or any of the game icons to start a new nuzlocke.
To Reproduce
Steps to reproduce the behavior:

Access the page with the Firefox browser
Click on 'New Game'
Click on any of the generation tabs or game icons
See error

Expected behavior
Probably goes without saying, but I was expecting it to highlight the game and let me use the app.
Screenshots
When I used F12 I saw this. I don't really have any actual experience with coding and have no idea what it means, but maybe it means something?

Desktop (please complete the following information):

OS: Windows 10
Browser: Firefox
Version: 116

Additional context
I'm assuming that it has to do with using Firefox as opening the app on my phone or in a different browser on the same computer has it work fine.

Works fine for me on Firefox 116.0.3 (64-bit) (win11)

looks like it's just an issue on my end, then, but ty


Add device-tree-compiler to ubuntu-precise; resolves travis-ci/apt-pa…

…ckage-whitelist#3383
Packages: device-tree-compiler
Signed-off-by: Abhijit Mahajani<EMAIL_ADDRESS>

Superseded by #3388.


minor fix in the indentation of new sentence in readme.

Overview
made a very minor change to fix the punctuation of a sentence, these was a missing space after a full stop.

thanks @shaarifkhan can you check your DCO?


Is there an editor, which uses marked?

Is there a HTML embeddable editor, which uses marked for rendering?

SimpleMDE

@ciel Thanks!


Some fixes and addons

If the "member" can be either a member, an owner or a contributor, we really should use a different term in the name and in the URL...

and the "member" object :(


SDN-4596: Promote AdminNetworkPolicy to GA

This PR:

Moves ANP featuregate to also be part of the default set so that the feature is enabled by default (gate was being used from CNO)
Work related to https://issues.redhat.com/browse/SDN-4157 4.16 epic ANP
Aim is to have this feature ON by default on all OCP/HCP clusters

Unsure if I need to do PRs in other repos like CCC? I tried to look through https://docs.google.com/document/d/1zOL38_KDKwAvsx-LMHfyDdX4-jq3HQU1YWBjfuHaM0Q/edit but not sure what the new process is since the API code around FG has changed quiet a bit. After this PR I wonder if I need to do something else, pointers in right direction will be much appreciated!
E2E Test Info: This feature's tests live in: https://github.com/kubernetes-sigs/network-policy-api/tree/main/conformance and they are run as presubmits in: https://github.com/ovn-org/ovn-kubernetes/blob/master/test/conformance/network_policy_v2_test.go#L58 repo
Feature has been TechPreview for 2 releases, time to GA this.

/assign @knobunc @trozet

Can you either

link to the automated tests results in periodic jobs running on a schedule to ensure regression protection both from the owning component and other components via side-effect (cluster-node-tuning-operator just benefited from such protection when an MCO PR broke them)
A direct QE sign off that this feature is ready.

See deeper examples of how to be promoted here: https://github.com/openshift/enhancements/blob/master/dev-guide/featuresets.md#id-like-to-declare-a-feature-accessible-by-default--what-is-the-process

thanks @deads2k ! that makes totally sense.
@asood-rh: could you please give your blessing for this: https://github.com/openshift/enhancements/blob/master/dev-guide/featuresets.md#obtaining-qe-sign-off IIRC you already did the necessary testing for 4.14/4.15 to ensure this feature is isolated enough to not break anything else?
I also plan to do some e2e's on origin i.e add https://github.com/ovn-org/ovn-kubernetes/blob/master/test/conformance/network_policy_v2_test.go#L58 also in OCP which is tracked via https://issues.redhat.com/browse/SDN-3807 but that needs the test infra to be more stable, I want to spend some time soaking the new tests upstream in OVNK before bringing them into OCP.

/lgtm

/label qe-approved

/approve


fix(sbb-toast): fix default z-index

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

:exclamation: No coverage uploaded for pull request base (main@adfb313). Click here to learn what that means.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2428   +/-   ##
=======================================
  Coverage        ?   93.84%
=======================================
  Files           ?      230
  Lines           ?    23554
  Branches        ?     2085
=======================================
  Hits            ?    22105
  Misses          ?     1411
  Partials        ?       38

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


Application is not respecting system wide preference for disabled animation

Summary
Animation are not disabled in the app while they should because I have animation disabled in system accessibility settings.
Environment Information

Device Name: moto g100
OS Version:  android 12
Mattermost App Version: 2.0.1
Mattermost Server Version: 7.7.1

Steps to reproduce
Check the "disabled animations" option under accessibility, then use the app.
Expected behavior
App should have no animations except those triggered by direct user input (like scrolling). The most disturbing one is when posting a message, the new message should be added at the end instantly without animations. Other animations that should be disabled is expanding collapsing channel list...
Observed behavior (that appears unintentional)
Animation plays at regular speed.
Notes
In css, the media request is prefers-reduced-motion, but I do not know if this is exposed in react native.
This SO answer should provide a solution for android API: https://stackoverflow.com/questions/66891508/how-to-check-status-of-remove-animations-accessibility-setting-programmatically

@kuon There has been many updates in the app that may or may have not improved this behavior. Any chance you can take a look and verify if you are still seeing too many animations?

Closed because of age and lack of activity.
This should be already solved with the different version updates. If there is any other particular problem, please create a new issue.


feat: update langs/tg.json

I am currently the student of @school21moscow & I am very passionate about translating https://reactjs.org/ to my native language: tajik language.
Once the PR is accepted, I would invite professional coders and IT teachers from my community at FB to review and contribute translation.

I am ready to contribute to translation of reactjs to tajik language and keep it up to date together with tajik bros.

@HalimHamidov @ZafarHamidov here's your repo:
https://github.com/reactjs/tg.reactjs.org/issues/1
Happy translating!


dbeaver/pro#1297 Verify real hostname when connecting through jump server

It is still reproducible to me for SSHJ connections

Also currently we verify jump server host identity, but doesn't verify ssh target host identity - we are trying to verify it's fingerprint with localhost which is not correct. Skip host key verification when the host is localhost is bad, because then we're not checking target host at all.
The correct solution is still substitution of the localhost with the target host name during the fingerprint validation. It can be done by overriding verifyKey method for sshj and setting hostAlias for jsch.

Also I've found alive jsch repository https://github.com/mwiede/jsch. Maybe we could migrate to it. (For discussion)

The migration is possible, yet the fork still has the same issue regarding confirmation messages: https://github.com/mwiede/jsch/pull/257

Yeah, I see. But we could contribute here and it's supported.

I did, in fact. It's not a blocker by any means. We can migrate at any time and eliminate the hack on our side.

I'm not sure about the host alias semantics actually. Maybe the correct fix is not to replace host to chost, but show both of them or check host alas existence first. (Just my thoughts to think about).

Verified


Alternative tech -> replace with alternative ways (?)

Here:
https://onelinerhub.com/python/if_else

Fixed


Audio keeps playing after calling seekTo(1)

Wavesurfer.js version(s):
6.4.0
Browser and operating system version(s):
Chrome 107.0.5304.110
macOS  12.6
Code needed to reproduce the issue:
https://codesandbox.io/s/dazzling-varahamihira-3lpn86?file=/src/_app.js
Use behaviour needed to reproduce the issue:
I have this issue where user clicks on progress bar at the very end of it and audio is still playing for a few more seconds. Current time starts exceeding audio duration. This only happens with long audios. It's hard to reproduce it by clicking, so I've added button which calls seekTo(1), which results in same behavior.

Load a long audio file (1h+ in my case)
Start playing audio by clicking Play/Pause button
Anytime when audio plays click seekTo(1) button

Expected behavior: audio is seeked to the end - stops playing
Actual result: audio current time exceeds its duration and continues playing for a few more seconds.

@armiiis I used the latest version and not able to replicate the issue. Can you provide a link to the actual audio file you are using instead, it might be the issue?
Have a look here:
https://www.entonbiba.com/lab/wavesurfer/2619.html
Config:

	<button onclick="wavesurfer.play()">Play</button>
	<button onclick="wavesurfer.pause()">Pause</button>
	<button onclick="wavesurfer.seekTo(1)">Seek to (1)</button>

Progress:

        0
        /
        0

    var wavesurfer = WaveSurfer.create({
	container: '#wavesurfer',
	backend: 'WebAudio',
	waveColor: '#000',
	progressColor: '#46B54D',
	forceDecode: true,
	responsive: true,
        barMinHeight: 3,
        barWidth: 10
    });

    var audioFile = "linktoaudiofilhere";
    wavesurfer.load(audioFile);

    wavesurfer.on("ready", () => {
        var currentTimeElement = document.getElementById("current-time");
        var duration = document.getElementById("duration");

        setInterval(() => {
          currentTimeElement.innerText = Math.floor(
            wavesurfer.getCurrentTime()
          );
        }, 500);

        duration.innerText = Math.floor(wavesurfer.getDuration());
    });

@entonbiba Thanks for your reply. As I have mentioned before it only happens with long audio files (1h+). Example audio file could be found in codesandbox link. Have you tried using 1h+ audio file?

@armiiis the audio file there can't be downloaded can you upload it somewhere where to download it as it doesn't load in the codesandbox. I'll test that audio file, but yes I've tested with long audio files and seems to be fine.

Here's the audio download link: https://file.io/uYPyUu6a7rKU
Also I think you can download codesandobx project zip:

just tested it here seems fine with the audio file you provided:
https://www.entonbiba.com/lab/wavesurfer/2619.html

@armiiis can you test it outside of codesandbox and confirm? Also test the link I provided above for the test result working.

I also couldn't reproduce the bug in the codesandbox, it always jumps to 4225. But theoretically it's plausible that some rounding error might accumulate over time, especially for long files, and result in this behavior.
@armiiis does it actually continue playing, as in with the sound coming out, or just moves the cursor on the waveform?
Could you record a video maybe?

@entonbiba I've tried using configuration you provided. Issue is gone when using backend: 'WebAudio'. I've also tried running it locally. Having same issues when using backend: "MediaElement".
I tried playing multiple different 1h+ long audios and none of them had this issue. So I can't reproduce it always. Don't know what is so specific to this exact audio file.
@katspaugh Audio I'm testing is really quite at the end, but I think sound is coming out.
https://user-images.githubusercontent.com/12126557/227454169-9a8b2d8d-c8cf-42ef-943d-26a65f83c0ac.mov

There's a similar issue – #2738
There we thought it might be a problem with the rendering (wrong width), but since you're programmatically setting the position and still have issues, it might actually be MediaElement-related.
Could you test the same files with the new alpha version? https://github.com/katspaugh/wavesurfer.ts

@armiiis any luck with the alpha version?


Travis - use postgresql service instead of embedded database

Somehow not working on MacOS builds ... investigate the reasons in the future. Closed for now.


Expo config plugin support

Feature Description
Hello! As you know there are many people who opt to use Expo for writing React Native apps, especially with the latests changes like config plugins and native code support. In light of these developments, it'd be great if AppLovin MAX had an official config plugin for Expo.
Do you have any plans to introduce this in the near future?

Hi @sykbn1 - we can investigate, and in the meantime we can use this thread to gauge the demand. Let us know if there are any other resources we should check out.

Hello @thomasmso! Thanks for the interest, it makes sense to gauge interest through this issue. In the meantime, I think you can check out this resource which actually is solving most of the problems with this issue so could be a great reference point:
<EMAIL_ADDRESS>

Sweet, thank you for the resource.

I would also highly like an expo integration please!

Thanks for your interest in supporting Expo.   We are working on it, and currently, #215 is being reviewed.
https://github.com/AppLovin/AppLovin-MAX-React-Native/tree/feat/support_expo_plugin
Things like the property names will likely change, but your feedback and comments are highly appreciated.

Any updates? #215 doesn't seem to be approved.

@alhiwatan any update? I'm trying to integrate it in my expo app

Hi, any luck here? :) Would like to move from Admob asap, have a react native with expo app.

Please refer to the Expo CNG for the integration.
https://docs.expo.dev/workflow/continuous-native-generation/


feat: Output the pre-shared tunnel keys even when they are auto-generated

The AWS cli nor this module require the user to provide tunnel keys for the tunnel to be created. In the event that no keys were provided AWS will automatically generate the tunnel keys. However the user will have no way to retrieve these currently in this module or via the AWS terraform provider as it doesn't expose a data resource to the tunnel options.
Currently this module will blindly return only the pre-shared keys that were provided. This PR seeks to return the pre-shared keys to the user from the aws_vpn_connection instead. This will ensure the caller gets access to the pre-shared keys even if they are auto-generated
Description
In the output.tf updated the value of the preshared key output for tunnel1 and tunnel2 to instead of returning just the var input. It will look for the pre-shared key output from each of the 4 scenarions, compact them to remove the null values and ensure only one value exists and is returned for each tunnel.
Motivation and Context
As part of terraform deployment we create the vpn connection for the project team allowing AWS to create the PSK. We planned to store the PSK in hashicorp vault at a location the projec team has access to so they could then share this with the client/customer to configure the customer gateway at their side. However we had no access to the auto-generated PSK via terraform AWS provider.
This PR would allow us to get the auto-generated PSK from the module and then use the vault provider to store that as a secret in hashicorp vault for later access.
Breaking Changes
There should be no breaking changes here. The output specification has not changed, just the internal implementation that looks for the PSK to return. Even in the use cases where the PSK was provided as VAR by the user will still work as that will be the same PSK thats in the aws_vpn_connection resource.
How Has This Been Tested?

[x] I have updated at least one of the examples/* to demonstrate and validate my change(s)
[x] I have tested and validated these changes using one or more of the provided examples/* projects

[x] I have executed pre-commit run -a on my pull request

I have run the complete-vpn-gateway example and validated the output matches that of the tunnel configuration in AWS

This PR is included in version 3.5.0 :tada:


Subsequent serializations of empty arrays get their type overwritten

Tested versions
v4.3.rc2.official [3978628c6]
v4.2.2.stable.official [15073afe3]
System information
Ubuntu
Issue description
E 0:00:00:0552   assign: Cannot assign contents of "Array[int]" to "Array[String]".
  <C++ Error>    Method/function failed.
  <C++ Source>   core/variant/array.cpp:276 @ assign()

Steps to reproduce
@tool
extends Control

var prop_a: Array[int]
var prop_b: Array[String]

func _get_property_list() -> Array[Dictionary]:
	var properties: Array[Dictionary]

	properties.append({
	   "name": "prop_a",
	   "type": TYPE_ARRAY,
	   "hint": PROPERTY_HINT_TYPE_STRING,
	   "hint_string": "%d:" % [TYPE_INT]})

	properties.append({
	   "name": "prop_b",
	   "type": TYPE_ARRAY,
	   "hint": PROPERTY_HINT_TYPE_STRING,
	   "hint_string": "%d:" % [TYPE_STRING]})

	return properties

Using _get_property_list we add two arrays of different types.
However, when these properties are serialized in the scene file, then prop_b will for some reason be given the same type as prop_a:
prop_a = Array[int]([])
prop_b = Array[int]([])

This then leads to the above error message at runtime. This appears to only happen when one or both of the arrays are empty.
Even when providing an empty array as default value via _property_can_revert() and _property_get_revert(), the empty array still gets serialized. Although perhaps that is a different bug.
Minimal reproduction project (MRP)
godot_4_property_array_bug.zip

Related to / duplicate of #48038.
Related to / duplicate of #56306.
Related to / duplicate of #93986.
See also #56338.
See also #72514.


/vcsCores intermixes model output

The /vcsCores flag can dramatically speed up operation on multicore machines (e.g. my '19 MacBook pro has 8 and can easily spare 4), specifically because z3's memory usage is relative low. Unfortunately, it appears when using this option model output from different vc runs is intermixed. E.g. one output in such a situation:
*** MODEL
*** MODEL
...
  else -> |T@[Int]$Value!val!1|
}
Store_[$Location]$bool -> {
}
  |T@[$Location]Bool!val!1| ($Global ($StructType T@$TypeName!val!28 ($TypeValueArray |T@[Int]$TypeValue!val!0| 0) ($TypeValueArray |T@[Int]$TypeValue!val!18| 1)) 20) true -> |T@[$Location]Bool!val!3|
  else -> |T@[$Location]Bool!val!3|
}
...
*** END_MODEL
*** END_MODEL

This makes this flag impossible to use for tools which parse the model output.
Is there a way to avoid this? Or does it need to be fixed?
@shazqadeer

I agree this is a problem.  There is the following option for printing the model to a file.
/printModelToFile:
print model to  instead of console
However, most likely the contents of the file will also get garbled if all threads are writing the models to the same file.
One option might be to specify the model output file name via an attribute on an implementation.  If this file name is supplied, the model can be written to that file.  The client is responsible for making sure that there is a distinct file name on each implementation.
By the way, in addition to the model, wouldn't the same problem happen for counterexample traces?

Yes, the same would apply for execution traces.
Do you say there is an attribute which can be added fo procedures where to write the model to? Which would that be?

#258 should fix this issue.  I will wait to hear back before closing this issue.

I will close this issue.  But please reopen if the problem persists.


Copy-Paste typo?

https://github.com/sonvister/Binance/blob/e9c364cede3d3f530e17d1d50f6b403169f4b162/src/Binance/Extensions/CandlestickIntervalExtensions.cs#L33

Probably. Thanks.

off-top: I have sent you a direct message in the twitter. I have a couple of questions. If twitter is not a good place - please provide the alternative one. thank you!


Fix misuse of omitempty in jsonschema

Try to fix the massive misuse of omitempty in https://github.com/megaease/easegress/issues/884 . Now the fields without specifying omitempty would be required by default.
As for the required misuse, I don't think there is a simple and brute solution like emitempty. Since required needs to change the type to its pointer type, which would cause a lot of huge changes. Another way is to change the vendor to do it, which will bring more complexity. I suggest letting it be and changing it in the next development step by step.

@xxx7xxxx looks good to me, just two little typo...

Codecov Report
Attention: 7 lines in your changes are missing coverage. Please review.

Comparison is base (4a57baf) 81.23% compared to head (7b35fb7) 81.30%.

:exclamation: Current head 7b35fb7 differs from pull request most recent head ade9ffa. Consider uploading reports for the commit ade9ffa to get more accurate results

Files
Patch %
Lines

pkg/v/v.go
55.55%
3 Missing and 1 partial :warning:

pkg/v/validaterecorder.go
72.72%
1 Missing and 2 partials :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1136      +/-   ##
==========================================
+ Coverage   81.23%   81.30%   +0.07%
==========================================
  Files         148      148
  Lines       16623    16618       -5
==========================================
+ Hits        13504    13512       +8
+ Misses       2480     2469      -11
+ Partials      639      637       -2

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


"NoSuchMethodError: The method 'removeLocalHistoryEntry' was called on null." when closing BottomSheet

Hello,
I am trying to implement a PersitentBottomSheet (which should be used to select filters for a query).
As I am using this widget in two parts of my app, I created a new Widget (FilterWidget, see below) which I pass to the showBottomSheet() method.
I can open the BottomSheet without a problem. As soon as I slide it downwards to close it, I get the following Error:
[        ] E/flutter (11691): [ERROR:flutter/shell/common/shell.cc(181)] Dart Error: Unhandled exception:
[        ] E/flutter (11691): NoSuchMethodError: The method 'removeLocalHistoryEntry' was called on null.
[        ] E/flutter (11691): Receiver: null
[        ] E/flutter (11691): Tried calling: removeLocalHistoryEntry(Instance of 'LocalHistoryEntry')
[        ] E/flutter (11691): #0      Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:50:5)
[        ] E/flutter (11691): #1      LocalHistoryEntry.remove (package:flutter/src/widgets/routes.dart:299:12)
[        ] E/flutter (11691): #2      _MapPageState.toggleFilterBottomSheet (package:astery/tabs/map_page.dart:156:18)
[        ] E/flutter (11691): <asynchronous suspension>
[        ] E/flutter (11691): #3      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
[        ] E/flutter (11691): #4      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
[        ] E/flutter (11691): #5      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
[        ] E/flutter (11691): #6      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
[        ] E/flutter (11691): #7      TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:175:7)
[        ] E/flutter (11691): #8      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:315:9)
[        ] E/flutter (11691): #9      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:73:12)
[        ] E/flutter (11691): #10     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:11)
[        ] E/flutter (11691): #11     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:143:19)
[        ] E/flutter (11691): #12     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:121:22)
[        ] E/flutter (11691): #13     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:101:7)
[        ] E/flutter (11691): #14     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:64:7)
[        ] E/flutter (11691): #15     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:48:7)
[        ] E/flutter (11691): #16     _invoke1 (dart:ui/hooks.dart:153:13)
[        ] E/flutter (11691): #17     _dispatchPointerDataPacket (dart:ui/hooks.dart:107:5)

I am calling the BottomSheet like that:
toggleFilterBottomSheet() async {
    if (controller == null || await controller.closed) {
      controller = _scaffoldGlobalKey.currentState.showBottomSheet((context) {
        return filterWidget;
      });
    } else {
      controller.close();
    }
  }

Here is the implementation of my FilterWidget:
import 'package:flutter/material.dart';

class FilterWidget extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return new _FilterWidgetState();
  }
}

class _FilterWidgetState extends State<FilterWidget> {
  double _radius = 10.0;
  @override
  Widget build(BuildContext context) {
    return Container(
      height: 200.0,
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          Center(
            child: Slider(
              value: _radius,
              onChanged: (double value) => onChangedSlider(value),
              onChangeEnd: onChangeEndSlider(),
              divisions: 9,
              min: 10.0,
              max: 100.0,
              label: 'km',
            ),
          ),
          ),
          ),
        ],
      ),
    );
  }

  onChangedSlider(double value) {}
  onChangeEndSlider() {}
}

Last but not least, here is the output of flutter doctor:
C:\Users\janni\Development\IdeaProjects\app>flutter doctor -v
[√] Flutter (Channel beta, v0.9.4, on Microsoft Windows [Version 10.0.17134.345], locale de-DE)
    • Flutter version 0.9.4 at C:\Users\janni\Development\flutter
    • Framework revision f37c235c32 (5 weeks ago), 2018-09-25 17:45:40 -0400
    • Engine revision 74625aed32
    • Dart version 2.1.0-dev.5.0.flutter-a2eb050044

[√] Android toolchain - develop for Android devices (Android SDK 28.0.3)
    • Android SDK at C:\Users\janni\Development\Android\Sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • ANDROID_HOME = C:\Users\janni\Development\Android\Sdk
    • Java binary at: C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
    • Java version Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
    • All Android licenses accepted.

[X] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.io/setup/#android-setup for detailed instructions).

[√] IntelliJ IDEA Ultimate Edition (version 2018.3)
    • IntelliJ at C:\Users\janni\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\183.3975.18
    • Flutter plugin version 29.1.4
    • Dart plugin version 183.3975.18

[√] Connected devices (1 available)
    • MI 5 • f470f194 • android-arm64 • Android 8.1.0 (API 27)

! Doctor found issues in 1 category.

Can you please provide a complete running minimal reproduction in one lib/main.dart file?

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.

I found a workaround, just add a boolean attribute.
_bottomSheetController = showBottomSheet( context: context, builder: (context) => ....); setState(() { isSheetOpen = true; }); await _bottomSheetController.closed; setState(() { isSheetOpen=false; });
now everytime the bottom sheet will open or close this flag will change his state,
base on the state you can decide what to do.
hope it was helpful.


GR-WM2 replacement?

Is it possible to source the GR-WM2 somewhere? Or is there a suitable replacement?
Looks like the carriage motor has been discontinued: https://gimsonrobotics.co.uk/categories/dc-electric-motors/products/gr-wm2-24v-dc-rs-595-motor-with-152-1-gearbox?fbclid=IwAR0d2dX7y88nv4W90gfV4aULetfhDwCAWDCMk14pTz_aJ7J1FpBhlCw4sK0
They have a replacement, but it has some issues:
(a) the motor (gearbox) mounting holes are only on one side, which might not allow for enough support from the 3D printed mounts
(b) I expect the shaft won't be lined up the same as the GR-WM2. The belt needs to be driven vertically to move the carriage, which means we'd have to redesign the CAD to line up the motor, idler, and carriage.
 It requires some CAD redesign I don't have the chops for. Also, I expect any replacement will have this same issue unless the shaft offset is exactly the same.

I bought a bunch of those motors when I built Performance Robots so I've not really investigated a replacement I'm afraid. I guess it'll take some redesign to incorporate a totally different motor.

Hi James,
Any chance you'd be willing to sell me one of those motors?
On Fri, Feb 11, 2022, 2:22 AM James Bruton @.***> wrote:

I bought a bunch of those motors when I built Performance Robots so I've
not really investigated a replacement I'm afraid. I guess it'll take some
redesign to incorporate a totally different motor.
—
Reply to this email directly, view it on GitHub
https://github.com/XRobots/ReallyUsefulRobot/issues/20#issuecomment-1036011835,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABEPB4HF4I55OZHCST6JLW3U2TILVANCNFSM5OBPU2OQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID:
@.***>

Sorry I don't have enough spare - there are eight on robots at the moment and I have two extras which I use when I need powerful differential drive in a project, but they are also the two spares for Performance Robots if I take them to events again.

No worries. Thanks for the response and thanks for all your work on these
cool robot projects
On Fri, Feb 11, 2022, 9:16 AM James Bruton @.***> wrote:

Sorry I don't have enough spare - there are eight on robots at the moment
and I have two extras which I use when I need powerful differential drive
in a project, but they are also the two spares for Performance Robots if I
take them to events again.
—
Reply to this email directly, view it on GitHub
https://github.com/XRobots/ReallyUsefulRobot/issues/20#issuecomment-1036377504,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABEPB4BWPYF447HEHBN37ADU2UY4JANCNFSM5OBPU2OQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID:
@.***>


Can't run the Celery Beat Scheduler

Hi!
I need to schedule a repetitive task that would do some work and save it in the DB.
For this matter I'm trying to implement the solution using Celery and workers shared by @Biskit1943 here but I can't manage to run the beat scheduler at the initialisation of the Celery with the command --beat in app/worket-start.sh:
celery -A app.worker worker --beat -l info -Q main-queue -c 1
From what I understand if the scheduler is correctly called, I should see something similar to:
2017–10–22 23:47:28,861: INFO/MainProcess] beat: Starting…
[2017–10–22 23:48:00,019: INFO/MainProcess] Scheduler: Sending due task test-celery (app.tasks.test.print_hello)

But on my side there is nothing in the logs after the initialisation of Celery:
[2020-10-14 15:31:02,182: INFO/MainProcess] Connected to amqp://guest:**@queue:5672//
[2020-10-14 15:31:02,201: INFO/MainProcess] mingle: searching for neighbors
[2020-10-14 15:31:03,233: INFO/MainProcess] mingle: all alone
[2020-10-14 15:31:03,253: INFO/MainProcess] celery@719f319c1efd ready.
[2020-10-14 15:31:04,155: INFO/MainProcess] Events of group {task} enabled by remote.

Celery seems to be working fine though since I can run the worker test_celery defined in app/worker with the input str testand get this answer:
[2020-10-14 15:31:03,233: INFO/MainProcess] mingle: all alone
[2020-10-14 15:31:03,253: INFO/MainProcess] celery@719f319c1efd ready.
[2020-10-14 15:31:04,155: INFO/MainProcess] Events of group {task} enabled by remote.
[2020-10-14 15:42:36,491: INFO/MainProcess] Received task: app.worker.test_celery[f66fc2a2-225d-4200-a61e-3e9972aa61a0]
/usr/local/lib/python3.7/site-packages/celery/platforms.py:801: RuntimeWarning: You're running the worker with superuser privileges: this is absolutely not recommended!
Please specify a different user using the --uid option.
User information: uid=0 euid=0 gid=0 egid=0
uid=uid, euid=euid, gid=gid, egid=egid,
[2020-10-14 15:42:36,551: INFO/ForkPoolWorker-1] Task app.worker.test_celery[f66fc2a2-225d-4200-a61e-3e9972aa61a0] succeeded in 0.01056517699998949s: 'test task return test'

Could this be related to a refresh issue of the docker instance that doesn't take into account the new parameter --beat? In fact, I can still run the test_celery worker after restart even after commenting the celery launch commands:

celery -A app.worker worker -l info -Q main-queue -c 1 in app/worker-start.sh
RUN=celery -A app.worker worker -l info -Q main-queue -c 1 in docker-compose.override.yml

Any help would be much appreciated!

Did you add the task to the task_routes, in backend/app/app/core/celery_app.py?
Because if you did not apply it to a route it can't be called and does not report any errors.

Did you add the task to the task_routes, in backend/app/app/core/celery_app.py?

Thanks for your quick reply @Biskit1943! Yes, in celery_app.py I have:
from celery import Celery

celery_app = Celery("worker", broker="amqp://guest@queue//")

celery_app.conf.task_routes = {
    "app.worker.test_celery": "main-queue",
    "app.worker.scheduled_task": "main-queue"
}

And in worker.py:
@celery_app.task
def scheduled_task() -> str:
    print("*******I'm doing my part!*******")
    return "done"

# Configure celery beat
@celery_app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
    sender.add_periodic_task(10.0, scheduled_task.s(), name='Do something every 10 seconds')

Is it normal that if I comment the line celery worker -A app.worker -l info  -Q main-queue -c 1 in `backend/app/worker-start.sh' celery is still launched at startup? Maybe an older version of the file is used and not refreshed?

After a deleting all the volumes and images and rebuilding  everything again with docker-compose up -d, it works now!
[2020-10-14 21:10:40,817: INFO/Beat] Scheduler: Sending due task Do something every 10 seconds (app.worker.scheduled_task)
[2020-10-14 21:10:40,823: INFO/MainProcess] Received task: app.worker.scheduled_task[25a0d033-ff5c-4a63-839f-0fd3355b932f]
[2020-10-14 21:10:40,825: WARNING/ForkPoolWorker-2] *******I'm doing my part!*******
[2020-10-14 21:10:40,826: INFO/ForkPoolWorker-2] Task app.worker.scheduled_task[25a0d033-ff5c-4a63-839f-0fd3355b932f] succeeded in 0.0008159999997587875s: 'done'

Is it normal that a change to the worker-start.sh is not automatically taken into account by the docker instance?

After a deleting all the volumes and images and rebuilding everything again with docker-compose up -d, it works now!
[2020-10-14 21:10:40,817: INFO/Beat] Scheduler: Sending due task Do something every 10 seconds (app.worker.scheduled_task)
[2020-10-14 21:10:40,823: INFO/MainProcess] Received task: app.worker.scheduled_task[25a0d033-ff5c-4a63-839f-0fd3355b932f]
[2020-10-14 21:10:40,825: WARNING/ForkPoolWorker-2] *******I'm doing my part!*******
[2020-10-14 21:10:40,826: INFO/ForkPoolWorker-2] Task app.worker.scheduled_task[25a0d033-ff5c-4a63-839f-0fd3355b932f] succeeded in 0.0008159999997587875s: 'done'

Is it normal that a change to the worker-start.sh is not automatically taken into account by the docker instance?

I don't think this is normal, but I experience this a lot.

I'll try that! Where do you add the --no-cache option?
In the scripts/build.sh file?
#! /usr/bin/env sh

# Exit in case of error
set -e

TAG=${TAG?Variable not set} \
FRONTEND_ENV=${FRONTEND_ENV-production} \
docker-compose \
-f docker-compose.yml \
build

I replace here the line add build with --no-cache?

As said in the answer, $@ will hold all variables.
I replaced build with build $@ to be able to call the build script with additional options if needed. I don't always want to build with --no-chache and if I do want, I can just call it with that as a parameter.
Where it is called? I'm not quite sure what you mean by that. But when you doing local development you just call docker-compose build --no-cache but for stag and prod you do as described in the Readme and can than optionally pass the options. For example in the gitlab-ci.yml
Hope I could help.

Yes, thanks for your help @Biskit1943, everything is clearer now!

Thanks for the help @Biskit1943! 🍰
And thanks for coming back to close the issue @jceyrac ☕

Sorry for the long delay! 🙈  I wanted to personally address each issue/PR and they piled up through time, but now I'm checking each one in order.


ignore_failure is not documented

https://cumulusci.readthedocs.io/en/stable/search.html?q=ignore_failure&check_keywords=yes&area=default
https://github.com/SFDO-Tooling/CumulusCI/blob/f04a03f7624deef0e33c4164985fed6f46ca95b2/cumulusci/core/flowrunner.py#L591

I think this is very useful also one should document how to retry steps:

Ignore failure should expose the result step (i.e. my_step.failed, I think there is a mystep.exception)
this variable can be used also to run flows conditionally (today the when only works on tasks)

For example we had a problem where we need to re-run robot framework test if they failed because of scratch org "warmup" (process builder not picking up platform events) and we could not simply do it with flows, we implemented it in our ci/cd but now we have a different developer experience / ci behaviour, I'd rather have implemented that as a cumulusci flow

Tracking as W-10908655


CompositeStream starts closed if either side is already closed

If either side of the composite stream closes, it will also close the other side.
This PR ensures that if either side is already closed during instantiation, it will also close the other side. Depending on how you view this, this is either a new feature or a bug fix.

@clue Tests are failing for PHP <=5.5

@jsor Thanks for spotting, updated unit tests to use willReturnOnConsecutiveCalls() instead of willReturn() with multiple values to support older PHPUnit versions on older PHP versions :shipit:


uboot: 2024.01 -> 2024.04

Description of changes
Nothing notable other than version bump.
Tested on 1 out of 3 RK3588 boards I have (Rock 5 Model B). Will test on the other two in the morning and comment. Please test on your end too.
Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] 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

[ ] 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/)
24.05 Release Notes (or backporting 23.05 and 23.11 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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Reminder that all AArch64 and ARMv7 boards should be tried to be built, and success/failure compared to the parent commit (and upstream status). We might want to consider adding RISC-V to that checklist too.
Why those lower tier platforms too? Because they might expose different idiosyncrasies and changes that don't affect the other ecosystems, but require changes in our handling of mainline U-Boot.

ubootOrangePi5 has a FIXME, a setting in extraConfig should be removed (pushed an additional commit doing this).
I tested all aarch64 and armv7l builds in pkgs/misc/uboot/default.nix, and they all succeed :tada:

Good reminder! I said I'd report back in the morning but then forgot about building it for other boards and testing 😅
Still need to verify on my Orange Pi 5 and NanoPC-T6.

LGTM


feat: Make amounts in Kin for webhooks

Closes: https://github.com/kin-labs/kin-devs/issues/319

Closing in favor of #388


Update Germany specific costs (NEP, onwind, pellets)

Hopefully for the last time. Firstly, all NEP costs have been updated / double-checked. Most importantly, the offwind cable costs are now more accurate (and lower) and the offwind station costs are more expensive. Interestingly, underground cables in NEP23 are cheaper than in NEP 21 (when correcting for inflation)
The new costs are:

Paramter & unit
NEP 23
NEP 21
NEP 23 Inflation corrected
NEP 21 inflation corrected

AC overhead (€/MW/km)
1325
736
1196
732

AC underground (€/MW/km)
4711
3386
4252
3369

AC offwind (€/MW/km)
618
854
558
850

DC overhead (€/MW/km)
0
1000
0
995

DC underground (€/MW/km)
3300
3250
2978
3234

DC submarine (€/MW/km)
0
0
0
0

DC offwind submarine (€/MW/km)
3000
2000
2708
1990

DC offwind onland (€/MW/km)
3800
3250
3430
3234

DC inverter pair (€/kW)
0
600
0
597

DC offwind station (€/kW)
1000
750
903
746

AC offwind station (€/kW)
800
700
722
697

Inflation
1.108
1.005

Sources:
NEP 21 Kostenschätzung
NEP 21 offshore, Tabelle 16/17

NEP 23 Kostenschätzung
NEP 23 offshore, Tabelle 24/25
Before asking for a review for this PR make sure to complete the following checklist:

[ ] Workflow with target rule ariadne_all completes without errors
[ ] The logic of export_ariadne_variables has been adapted to the changes
[ ] One or several figures that validate the changes in the PR have been posted as a comment
[ ] A brief description of the changes has been added to Changelog.md
[ ] The latest main has been merged into the PR
[ ] The config has a new prefix of the format YYYYMMDDdescriptive_title

Closes #179. Partially adresses #141


[ZEPPELIN-4512]. Move SqlSplitter from jdbc interpreter to zeppelin-interpreter

What is this PR for?
This PR move the sql split logic from jdbc interpreter to zeppelin-interpreter, so that other interpreter can reuse it. Besides that, it also fix some bugs of sql splitter, and add more unit test to verify it.
What type of PR is it?
[Bug Fix | Refactoring]
Todos

[ ] - Task

What is the Jira issue?

https://jira.apache.org/jira/browse/ZEPPELIN-4512

How should this be tested?

CI pass

Screenshots (if appropriate)
Questions:

Does the licenses files need update? No
Is there breaking changes for older versions? No
Does this needs documentation? No

Thanks for the comment @alexott
I have updated the PR to allow adding additional single line comment prefix. I am not sure whether's any other places needs to be customized for sql dialect.

Thanks @alexott Will merge if no more comment


filter host list by labels/pattern on server-side

This PR moves the logic that currently only exists within the CLI for filtering the list of hosts by "name pattern" or list of labels into the server/master instead.
This allows users of HeliosClient to be able to list hosts, filtering by the pattern and/or label list, without duplicating the logic within the CLI.
Each of the three components is updated here:

server-side filtering within the /hosts/ endpoint
HeliosClient support for these filters in listHosts(..) method overloads
HostListCommand in the CLI will use the new HeliosClient methods

@spotify/helios-team

:-1: untill you change all occurrences of "label" to "hostSelector".
Agents have labels, which have values. E.g. a label foo with a value of bar. host selectors act on the labels and their values, e.g. foo in (bar, baz).
My first thought when seeing listHosts(List<String> labels) was that calling listHosts(asList('foo', 'bar')) would return agents that had both the foo and bar labels (disregarding the value of the labels themselves).

@gimaker makes sense, will update.

[Current coverage][cc-pull] is 50.13% (diff: 85.00%)

Merging [#957][cc-pull] into [master][cc-base-branch] will increase coverage by 0.51%

@@             master       #957   diff @@
==========================================
  Files           272        273     +1
  Lines         12847      12864    +17
  Methods           0          0
  Messages          0          0
  Branches       1663       1661     -2
==========================================
+ Hits           6375       6450    +75
+ Misses         5987       5924    -63
- Partials        485        490     +5

Powered by Codecov. Last update [c39ea48...896c4b0][cc-compare]
[cc-base-branch]: https://codecov.io/gh/spotify/helios/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/spotify/helios/compare/c39ea48aff4b8a5e6f6d4beec44bef390f7f4c8f...896c4b0082d3d8a4a36b7d46d62dab16a083f96c?src=pr
[cc-pull]: https://codecov.io/gh/spotify/helios/pull/957?src=pr

@gimaker updated. I also changed the helios hosts command argument from --labels to --selector and updated the description.

:+1: but you might want to add code (and a test) to handle cases where the specified host selector doesn't parse

Good point about unparseable selectors. I added logic for the server to return 400 Bad Request in those cases, as it seems like the behavior without that was to ignore the bad selector and return the unfiltered list (or the list that matched any other filters in the request).

:+1:

we have the positional argument problem in existing code already:
$ helios --version
Spotify Helios CLI 0.8.812
Tested on Docker 1.6.2
$ helios -d foo.spotify.net hosts --label foo=bar --label x=y brown
Bad host selector expression: 'brown'

I'll fix in a new PR.