Affine gap distance

Currently dedupe uses an affine gap distance. The edit distance is very similar to the Levenshtein distance except that the cost of extending a gap (a deletion or insertion) is less than opening the gap.
This works really well for the kinds of strings we deal with in record linkage. How would we implement this for pyhacrf.

If a state machine with three states per class (like in the original paper) is used then exactly this effect can be learned. This is because there are different parameters for transitions from (say) a previous deletion to a current deletion than from a previous match/substitution to a current deletion. See also https://github.com/dirko/pyhacrf/issues/7.
transitions = [
 (0, 0, (1, 1)),
 (1, 0, (1, 1)),
 (2, 0, (1, 1)),
 (0, 1, (0, 1)),
 (1, 1, (0, 1)),
 (2, 1, (0, 1)),
 (0, 2, (1, 0)),
 (1, 2, (1, 0)),
 (2, 2, (1, 0)),

 (0+3, 0+3, (1, 1)),
 (1+3, 0+3, (1, 1)),
 (2+3, 0+3, (1, 1)),
 (0+3, 1+3, (0, 1)),
 (1+3, 1+3, (0, 1)),
 (2+3, 1+3, (0, 1)),
 (0+3, 2+3, (1, 0)),
 (1+3, 2+3, (1, 0)),
 (2+3, 2+3, (1, 0))
]

I guess that this should be about 10x more computationally expensive than the current DefaultStateMachine. Unfortunately atm I can't think of a simpler scheme that will achieve the same effect.
If the lattice building is the bottleneck then we can again make a fast, specialised ThreeStateMachine class using your precomputing trick.

Would you mind implementing this using the general machinery? If it performs well, I'll write a fast version.

Sure - in the mean time I also thought of a slightly faster way to do this, and that is to only add the additional states to the match class (or to the non-match class). That should halve the additional transitions.

What was the trick?


state requires to be in quotes

Not Working:
conditional_styles:
- entity: input_boolean.darkmode
condition:
state: on
background: grey
Working: (the state needs to be in quotes) - the readme shows that there are no quotes.
conditional_styles:
- entity: input_boolean.darkmode
condition:
state: "on"
background: grey

Thanks, will update the readme


NAV 2016 container, help is not working

Hi,
Not sure if this is on my end or if you do not support the help section of the product. My question is, is it possible to enable the F1 help using navcontainerhelper?
//Mathias

Unfortunately the Help Server has a dependency on Windows Search, which is a Desktop Feature and cannot run in Containers.
As a result of this (and to save space) help is not included in the containers.


VideoViewerDemo does not show video

To replicate, open the cloned repo solution, set /Sample Applications/VideoViewerDemo as the default project, Build > Deploy Solution, then F5 as per the Readme.
At first you may get 'No Such Directory' popup. This appears due to the app being built in VideoViewerDemo\bin\Debug\netcoreapp3.1, when clearly the developer expected it to build in VideoViewerDemo\bin\Debug\
To solve this move all the build files one down into the Debug folder.
It builds and runs, but the videos simply do not appear. There are no compile or runtime errors.
Using Microsoft Visual Studio Community 2019, version 16.5.4. I have a clean, Windows 10 Pro Version 1906 for x64-based systems.

It is a problem with a wrong relative path https://stackoverflow.com/a/61876376/5228202

Yes, I did say I resolved the relative path problem in the issue.
The issue is, after resolving the path problem, is:
"It builds and runs, but the videos simply do not appear. There are no compile or runtime errors."

I posted a screen video capture here that clearly shows the problem: https://youtu.be/qe0q-N2Qlxc
Stackoverflow discussion here:
https://stackoverflow.com/questions/61804364/mediaplayer-component-configuration-issue/

The solution is. You have to install Windows Media Player using the Windows 10 "Turn Windows features on or off" window. This is not installed by default on Windows 10
This issue is that the documentation does not indicate this dependency!

For information I have it disabled by default, and I am able to play wmv files on movies & TV application without enabling it, I think there is another factor in the equation.

It could be on a new Windows 10 install. I tested on a freshly installed VM, and the same problem happened until I added Windows Media Player.


Mod conflict with Immersive Engineering - crash when pressing "U" to open NEI

Numina seems to be causing NEI to crash when using the "U" functionality.  This is only true under a specific set of circumstances:

Numina is loaded.
Immersive Engineering is loaded.
The Thermal Expansion recipes are in the MPS config folder.  I have not tested other recipe files.

The mods should all be fully updated.  They are as follows:

ModularPowersuits-<IP_ADDRESS>3a-RV3.jar
Numina-<IP_ADDRESS>.jar
ImmersiveEngineering-0.6.0.jar
NotEnoughItems-1.7.10-<IP_ADDRESS>-universal.jar
CodeChickenCore-1.7.10-<IP_ADDRESS>-universal.jar
CodeChickenLib-1.7.10-<IP_ADDRESS>-universal.jar

This crash can be resolved by removing Immersive Engineering, Numina, or the mps-thermalexpansion.recipes file from the configs folder.  MPS does not need to be loaded when these conditions are met - only Numina.
A copy of the crash log is here: http://pastebin.com/x8QNysCx
I hope this helps.  Thank you.

Try with latest versions of all mods, and reset your machinemuse config folder

Hi Xen,
Using the latest version of each, this issue appears to be resolved.  Thank you.  Players will appreciate being able to craft MPS item again!

Good ! :+1:
This can be closed @MachineMuse


feat(flux): implement rewrite rules for window and bare aggregates

Part of #21069
Closes #21143
Code is copied almost verbatim from 2.x. I still need to figure out how to write an e2e test for this using the new test harness.

I've pushed a cherry-pick of the change that fixes last(), since it also adds a test case for that aggregate.


Synchronize failed while fetching commits of deleted branch in Github

Describe the bug
Synchronize failed while fetching commits of deleted branch in Github
To Reproduce
Steps to reproduce the behavior:

Add a Github Actions project in which a branch is deleted after merging its commits
See error

Expected behavior
Synchronize should work and able to see metrics
Desktop (please complete the following information):

OS: MAC
Browser: chrome
Version: HEAD

Error thrown
ERROR 2022-05-15 09:36:11.299 traceId: --- [pool-2-thread-1] m.p.r.a.SynchronizationApplicationService:Synchronize failed for pipeline [627ff5a82a30707ac0e4ed11 - ordermanagement], error: [feign.codec.DecodeException: Error while extracting response for type [java.util.List<metrik.project.infrastructure.github.feign.response.CommitResponse>] and content type [application/json;charset=utf-8]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of java.util.ArrayList<metrik.project.infrastructure.github.feign.response.CommitResponse> out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.util.ArrayList<metrik.project.infrastructure.github.feign.response.CommitResponse> out of START_OBJECT token
at [Source: (PushbackInputStream); line: 1, column: 1]]
Exception in thread "pool-2-thread-1" metrik.project.exception.SynchronizationException: Synchronize failed
at metrik.project.rest.applicationservice.SynchronizationApplicationService$synchronize$1.accept(SynchronizationApplicationService.kt:39)
at metrik.project.rest.applicationservice.SynchronizationApplicationService$synchronize$1.accept(SynchronizationApplicationService.kt:14)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:408)
at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:736)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:159)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:661)
at metrik.project.rest.applicationservice.SynchronizationApplicationService.synchronize(SynchronizationApplicationService.kt:34)
at metrik.project.rest.applicationservice.SynchronizationApplicationService$$FastClassBySpringCGLIB$$e40c75eb.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:687)
at metrik.project.rest.applicationservice.SynchronizationApplicationService$$EnhancerBySpringCGLIB$$ff0f05fc.synchronize()
at metrik.project.rest.SynchronizationController$sseSynchronization$1.run(SynchronizationController.kt:53)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)

What are we fetching commits of deleted branches here ? Shall we skip this process for deleted branches?

My team is having the exact same issue.
To better describe the problem here, want to clarify the current flow: when GithubActionsPipelineService.kt try to execute syncBuildsProgressively, it will first roughly fetch all runs that need to sync. However runs API only contains head commit instead of relevant commits brought by each run. So based on the design, after getting clear about initial runs, we need second step to make clear what are the commits for each run.
Issue occurred at this step that when a branch was deleted. Then run records for the deleted branch are still retrievable, while attempt to get commits will get 404 error in response due to the non-existing branch.
Current fix going to work on:

[ ] Add a retrieveBranches in GithubFeignClient making use of Github API
[ ] Add a GithubBranchService to enable to feature of retrieveBranches
[ ] In GithubActionsPipelineService.kt syncBuildsProgressively, after getting newRuns add one more step to filter by branch and keep runs with valid branch only

Will soon raise a PR for this.

Hi @LixingSun, I think your solution should work.

The changes have been merged.


+res

in 84from.js I found this line
if(res[i] == +res[i]) res[i] = +res[i];

Can you elaborate on the idea?

Here AlaSQL checks if res[i] is a string with numeric value, then AlaSQL convert it to the number.
+res[i] is a conversion to number type. From JavaScript point of view this conversion is ok, because if it is required (for example, for comparision) JS will convert it back to string type.


Add support for China T-Union

Hello,
I would like to identify card from China T-Union. You can get China T-Union traits on Wikipedia.
If you want to solve this issue, check this how-to guide.
Cheers,

Hi, done :)


feat: add hpa resource for workloads scaling

Review Checklist

Summary*

[ ] fix: Bug fix for Add the items tackled here as checklists
[x] feat: Completed task
[ ] chore: Incomplete task

[ ] test: Sub-task 1

Structure*

[ ] The Pull Request has a proper title that conforms to our MR title standards
[ ] The Pull Request has one commit, and if there are more than one, they should be squashed
[ ] The commit should have a proper title and a short description
[ ] The commit must be signed off
[ ] Unused imports are not present
[ ] Dead code is not present
[ ] Ensure dry running library to confirm changes

Tests

[ ] Proper and high quality unit, integration and acceptance(if applicable) tests have been written
[ ] The coverage threshold should not be lowered

Sign off*

[ ] All comments have been resolved by the reviewers
[ ] Approved by Czar {replace_with_czar_name}
[ ] Signed off by second reviewer {replace_with_name}
[ ] Ensure all checks are done before merging :warning:
[ ] All PRs needs to be signed before merging :warning:

N/B:

Add a checklist if more than one item is done.
Add screenshots and/or images where necessary
Indicate any breakages caused in the UI :exclamation:
Where necessary, indicate which issue the Pull Request solves (Closes #)
Any new files are updated in the folder structure in the README

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 83.255%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
17566

Relevant Lines:
21099

💛  - Coveralls


Content filter instructions

[1. Jamf now has support for content filter settings built in so can be set in the interface
2. the scoping needs explaining better as some should only be scoped to macOS11 and others only to less than 11]

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

ID: f791dc07-b2c6-3003-a829-cd1ec03a2918
Version Independent ID: 2c53adbc-600f-60b2-e8b2-b907335f4862
Content: Set up the Microsoft Defender ATP for macOS policies in Jamf Pro - Windows security
Content Source: windows/security/threat-protection/microsoft-defender-atp/mac-jamfpro-policies.md
Product: m365-security
Technology: mde
GitHub Login: @Dansimp
Microsoft Alias: dansimp

@PhantomPhixer Thank you for bringing this up. I've created a PR to address the first point. Regarding the second one, can you think of a wording that you would like to see in the article related to the scope?
In my opinion there are just to many variables to keep in mind when scoping and it's subjective to each environment.

I had forgotten about this! For the scoping it's a matter of matching scopes to profile types. E.G. don't deploy KEXT to 10.11 or 12.x.  and no point deploying system extensions to 10.10  as they don't work.
would also be far simpler if you  had the profiles downloadable as either plists or mobile config's to allow direct importing to any MDM system, stops typo's and frustration.


Discrepancy between hosting and resolving

Hi, I'm not sure if this have been asked before, but do you have some tips for making objects appear during resolving as similar to hosting as possible? Even in the demo that you guys provided. while the location that the android appear in is similar, sometime the android could be upside down, completely different sizes, or side way sometime even (whera the original android that appear during hosting is standing straight up).
I'm not sure how to combat this issues, should I maybe store the 4D array somewhere, so when I draw it I can just pass in the 4d Array instead?
Thank you

Hi!
Our resolves should put the android very close to where originally hosted. If it appears far away, or especially with a wrong orientation (upside down, or side ways) this is a bug we need to fix.
We are working to reduce the amount of these bugs. If you have a video you would be willing to share of this happening it might be helpful for us to see exactly is going wrong, and I might also be able to suggest some short term workarounds.

Closing due to inactivity, but feel free to reopen or create another issue if I can help with this or anything else!


Bug that the last column of the csv table is not found in the settings hierachy.

For a WebGL experiment I created a method to download .csv files and build the experiment from the table:
        Debug.Log("Start download...");
        Debug.Log("Path: " + csvPath);
        // download file from StreamingAssets folder
        UnityWebRequest www = UnityWebRequest.Get(csvPath);
        yield return www.SendWebRequest();

        if (www.result != UnityWebRequest.Result.Success){
            Debug.LogError("Error downloading CSV file: " + www.error);
            yield break;
        }

        string csvText = www.downloadHandler.text;
        Debug.Log(csvText);
        string[] csvLines = csvText.Split("\n");

        // parse as table
        UXFDataTable table = UXFDataTable.FromCSV(csvLines);

        // build the experiment.
        // this adds a new trial to the session for each row in the table
        // the trial will be created with the settings from the values from the table
        // if "block_num" is specified in the table, the trial will be added to the block with that number
        session.BuildFromTable(table, copyToResults);

However, there is this super odd bug that when I try to access the last column of the .csv e.g. trial.settings.GetFloat("hello") ,I get the following error message:
KeyNotFoundException: The key "hello" was not found in the settings heirarchy. Use UXF Session Debugger (UXF menu at top of unity editor) to check your settings are being applied correctly.
UXF.Settings.Get (System.String key) (at Assets/UXF/Scripts/Etc/Settings.cs:413)
UXF.Settings.Get (System.String key) (at Assets/UXF/Scripts/Etc/Settings.cs:411)
UXF.Settings.Get (System.String key) (at Assets/UXF/Scripts/Etc/Settings.cs:411)
UXF.Settings.GetFloat (System.String key) (at Assets/UXF/Scripts/Etc/Settings.cs:94)
ExperimentController.locationRetrieved () (at Assets/Scripts/ExperimentController.cs:268)
ExperimentController.Update () (at Assets/Scripts/ExperimentController.cs:160)

However, hello is in the session debugger:

The problem disappears when I add a dummy column that doesn't matter, so this column can't be accessed by  trial.settings.GetFloat("dummy") but hello can.

I found the issue: it seems that somewhere in the process from downloading the .csv file to splitting it by rows a \r was added to each end of line this a) let to the error I described above but also b) that the .csv data is not saved correctly so that the columns copied from the table and the trial results added during the the experiment are split into two rows. This let me to investigate whether there are still new line characters in the strings. I now simply replace each '\r` with an empty string:
        string csvText = www.downloadHandler.text;
        string[] csvLines = csvText.Split("\n");
        // Loop through the lines
        for (int i = 0; i < csvLines.Length; i++){
            csvLines[i] = csvLines[i].Replace("\r", String.Empty);
        }

        // parse as table
        UXFDataTable table = UXFDataTable.FromCSV(csvLines);


Get selected node text and be node scale

How can i get the text of the currently selected node and keep the current scale when other nodes are selected?
Heres what i've tired so far. (No results)
Im unable to set the floatingCollectionScene.delegate = self. (i've made sure class RecommendationView: UIViewController, SKDelegate is set) it crashes each time with delegate set, with this error: fatal error: unexpectedly found nil while unwrapping an Optional value
   func floatingScene(scene: SIFloatingCollectionScene, didSelectFloatingNodeAtIndex index: Int)
    {
        scene.removeFloatinNodeAtIndex(index)
              scene.removeFromParent()
        // print(scene.indexOfSelectedNode())
       // print(scene.indexesOfSelectedNodes())
        print(index)

    }

wat?

I guessing my question's not clear enough?

yes


Problem with model operation

Hello, I would like to ask how to adjust if such an error occurs during the model’s operation :  Timestep # 274137   Model time(sec)= 274137.00   CPU time(sec)=   0.200
Timestep # 274138   Model time(sec)= 274138.00   CPU time(sec)=   0.200
Timestep # 274139   Model time(sec)= 274139.00   CPU time(sec)=   0.196
tk wrong  -2738.9771136573381        1700.0000000000000        1690.0000000000000        1400.0000000000000        1700.0000000000000
Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL
This is my NAMELIST:
&model
level = 4            ! Thermodynamical level
nxp =   15              ! Number of points in x direction
nyp =   5              ! Number of points in y direction
nzp =   80              ! Number of vertical levels
deltax = 100.              ! Grid spacing in x
deltay = 100.              ! Grid spacing in y
deltaz = 20.              ! Grid spacing in the vertical
nxpart = .TRUE.             !
dzmax  = 2000.              ! Height above which start stretching vertical grid
dzrat  = 1                ! Factor for vertical grid stretching
dtlong = 1.              ! Max. timestep
distim = 100.               ! Timescale for the dissipation in sponge layer
timmax = 352800.            ! Length of the simulation
runtype = "INITIAL"         ! INITIAL or HISTORY (restart) run
!igrdtyp = 3
CCN = 100.e6                !
corflg = .TRUE.            ! Apply coriolis force
prndtl = 0.7         !
filprf = 'testi'       ! Output filename profile
hfilin = 'UAE_Cu_restart_6.014400s' ! History file name
frqhis = 144000.
!mcflg = .FALSE.             ! Do mass conservation statistics
sed_aero%switch = .FALSE.          ! Calculate sedimentation of aerosol particles
sed_cloud%switch = .FALSE.          ! - '' - cloud droplets
sed_cloud%delay = 0.
sed_precp%switch = .FALSE.          ! precipitation
sed_precp%delay = 0.
sed_ice%switch = .FALSE.            ! ice particles
bulk_autoc%switch = .FALSE.
bulk_autoc%delay = 0.      ! Autoconversion switch for level = 1-3
lnudging = .FALSE.           ! Master swtich for nudging scheme
lemission = .FALSE.          ! Master switch for aerosol emissions
lsvarflg = .TRUE.
iradtyp = 3                 ! Radiation/large scale forcing
strtim = 180.33               ! Start time
case_name = 'default'       ! Case name for large-scale forcing schemes
div = 4.e-6               ! Large-scale divergence
cntlat = 49.0
/
! -----------------------------------------------------------------------------------
&output
breakUndefOutput = .TRUE.
ps_intvl = 10.
ts_intvl = 10.
main_intvl = 1800.
varlist_main = 'lhf','shf','rp','rc','dn','temp','rh','press','theta','sflx','rflx','wt_sfc','wq_sfc','uwind','vwind','wwind','fus','fds','fuir','fdir','qtot'
!varlist_ps =
!varlist_ts =
/
! -----------------------------------------------------------------------------------
&initialization
init_type         = 1       ! 1: random perturbations, 2: warm bubble
bubble_center     = 1000.,0.,0.
bubble_diameter   = 1500.,6000.,6000.
bubble_temp_ampl  = 1.5
th00              = 289.34    ! Reference temperature
umean             = 0.
vmean             = 0.
itsflg            = 1       ! Flag for temperature type in input sounding
ipsflg            = 1       ! - '' - for pressure
/
! -------------------------------------------------------------------------------------
&surface
isfctyp           = 2
zrough            = 0.00005
ubmin             = 0.2
sst               = 287.15
dthcon            = 100.
drtcon            = 0.
C_heat            = 2.e6
deepSoilTemp      = 310.
W1                = 0.1
W2                = 0.1
W3                = 0.1
lConstSoilWater   = .TRUE.
lConstSoilHeatCap = .TRUE.
/
! ------------------------------------------------------------------------------------
&radiation
radsounding = 'backrad_in'
sfc_albedo = 0.07
laerorad = .FALSE.
useMcICA = .TRUE.
RadConstPress = .TRUE.
/
! -------------------------------------------------------------------------------------
! With lnudging = .TRUE.
&nudge
nudge_time = 7200.          ! Overall time for nudging from the start of the simulation
ndg_theta%nudgetype = 1
ndg_theta%tau_type = 2      ! Type of relaxation time (0:constant, 1-3: increasing)
ndg_theta%tau_min = 60.    ! Min relaxation time (with tau_type=1-3 and constant tau)
ndg_theta%tau_max = 3600.   ! Max relaxation time (with tau_type=1-3)
ndg_theta%tau_max_continue = .FALSE.
/
! ---------------------------------------------------------------------------------------
! With lemission = .TRUE. and level >= 4
&emission
nEmissionModes = 2
!emitModes(1)%emitType = 3
!emitModes(1)%regime = 2
!emitModes(1)%start_time = 200.
!emitModes(1)%end_time = 7201.
!emitModes(1)%species = "SS"
!emitModes(1)%emitHeightMin = 600.
!emitModes(1)%emitHeightMax = 650.
!emitModes(1)%emitSizeDistType = 2
!emitModes(1)%emitDiam = 0.6e-6
!emitModes(1)%emitNum = 10.5e7
!emitModes(1)%emitSigma = 1.1
!emitModes(1)%emitMap = 'emitMap_1'
!emitModes(1)%scS = 60.
!emitModes(1)%z_expan_up = 3
!emitModes(1)%z_expan_dw = 2
emitModes(1)%emitType = 2
emitModes(1)%regime = 2
emitModes(1)%start_time = 15000.
emitModes(1)%end_time = 15001.
emitModes(1)%species = "SO4"
emitModes(1)%emitHeightMin = 5450.
emitModes(1)%emitHeightMax = 5550.
emitModes(1)%emitSizeDistType = 2
emitModes(1)%emitDiam = 1.5e-6
emitModes(1)%emitNum = 5.e6
emitModes(1)%emitSigma = 1.3
emitModes(2)%emitType = 2
emitModes(2)%regime = 2
emitModes(2)%start_time = 15000.
emitModes(2)%end_time = 15001.
emitModes(2)%species = "SO4"
emitModes(2)%emitHeightMin = 5450.
emitModes(2)%emitHeightMax = 5550.
emitModes(2)%emitSizeDistType = 2
emitModes(2)%emitDiam = 8.0e-6
emitModes(2)%emitNum = 5.e6
emitModes(2)%emitSigma = 1.6
/
! -----------------------------------------------------------------------------------------
! With level >= 4
&salsa
! Master process switches
lscoag%switch = .TRUE.
lscoag%delay = 0.
lscnd%switch = .TRUE.
lsauto%switch = .FALSE.
lsauto%delay = 0.
lsauto%mode = 1    ! 1: precip formation based on coagulation, 2: parameterized autoconversion
lsactiv%switch = .TRUE.
lsactiv%mode = 1   ! 1: aerosol growth based activation, 2: parameterized cloud base activation
lsicenucl%switch = .FALSE.
lsicenucl%delay = 100.
lsicemelt%switch = .FALSE.       ! Ice melting
lssecice%switch = .FALSE.        ! Secondary ice production
lssecice%delay = 200.
! Sub-process switches: Coagulation
lscgcc = .TRUE.       ! Self-collection of cloud droplets
lscgpp = .FALSE.       ! Self-collection of rain drops
lscgpc = .TRUE.       ! Rain collection of cloud droplets
lscgaa = .FALSE.       ! Aerosol coagulation
lscgca = .TRUE.       ! Cloud collection of aerosols
lscgpa = .TRUE.       ! Rain collection of aerosols
lscgia = .FALSE.       ! Ice collection of aerosols
lscgic = .FALSE.       ! Ice collection of cloud droplets
lscgii = .FALSE.       ! Self-collection of ice
lscgip = .FALSE.       ! Ice collection of rain drops
! Sub-process switches: Condensation
lscndgas    = .FALSE.  ! --Aerosol precursor gas codensation
lscndh2oae  = .TRUE.  ! --Condensation of water on aerosols (if FALSE, equilibrium assumed)
lscndh2ocl  = .TRUE.  ! --Condensation of water on cloud droplets (and drizzle)
lscndh2oic  = .FALSE.  ! --Condensation of water on ice particles
! Sub-process switches: Ice nucleation
ice_hom     = .FALSE.        ! Homogeneous freezing
ice_imm     = .FALSE.        ! Immersion freezing
ice_dep     = .FALSE.        ! Deposition freezing
ice_theta_dist = .FALSE.     ! Use contact angle distribution for the IN population
! Sub-process swithces: Secondary ice
ice_halmos = .FALSE.         ! Rime splintering; Hallet-Mossop
! Misc switches
lscheckarrays = .FALSE.
lsdistupdate = .TRUE.
! Some useful switches for spinup and initilization
lsfreeRH%switch = .TRUE.       ! Use freely evolving RH. If FALSE, RH is limited by rhlim through entire simulation
lsfreeRH%delay = 0.    ! Time until which RH is limited by rhlim, in case lsfreeRH%swithc == TRUE
rhlim = 1.2                  ! RH limit for SALSA during initialization and spinup
lsfreeTheta%switch = .FALSE.    ! Use freely evolving lower limit in contact angle integration for ice nucleation
lsfreeTheta%delay = 0.         ! Time until which lower limit theta is set to be at least initMinTheta, in case lsfreeTheta%switch == TRUE
initMinTheta = 0.             ! Lower limit for contact angle integration in degrees for initialization and spinup
! Parameters for ice nucleation contact angle distributions (used with ice_theta_dist == TRUE)
mean_theta = 132.    ! Distribution mean
sigma_theta = 20.    ! Standard deviation
! m-D and A-D parameters for non-spherical ice
iceShapeAlpha = 15.56999e-3   ! m = ALPHA * Dbeta
iceShapeBeta = 2.02           ! m = alpha * DBETA
iceShapeGamma = 0.55          ! A = GAMMA * Dsigma
iceShapeSigma = 1.97          ! A = gamma * DSIGMA
! Precipitation bin layout parameters
bloPrc%nbins     = 20        ! Number of bins
bloPrc%dlo       = 20.e-6    ! Lower limit of the smallest bin
bloPrc%vol_ratio = 2.        ! Volume ratio between bins
! Ice bin layout parameters
bloIce%nbins     = 20        ! Number of bins
bloIce%dlo       = 2.e-6    ! Lower limit of the smallest bin
bloIce%vol_ratio = 3.        ! Volume ratio between bins
! Initial aerosol size distributions
nspec_dry = 1
listspec = 'SO4','','','','','',''
isdtyp = 0
! The number of entries must comply with the max number of compounds (excluding water, currently 7)
volDistA = 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
! The number of entries must comply with the max number of modes (currently 7)
sigmagA  = 1.2, 1.7, 2.0, 2.0, 2.0, 2.0, 2.0      ! Geometric stdev for initial aerosol size distribution for isdtyp == 0 (uniform)
dpgA     = 0.022, 0.12, 0.2, 0.2, 0.2, 0.2, 0.2   ! Mode mean diameters in micrometers
nA       = 200., 65., 0., 0., 0., 0., 0.         ! Mode number concentrations in #/cm^3
! The number of entries must comply with the max number of compounds (excluding water, currently 7)
volDistB = 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
! The number of entries must comply with the max number of modes (currently 7)
sigmagB  = 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0      ! Geometric stdev for initial aerosol size distribution for isdtyp == 0 (uniform)
dpgB     = 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2   ! Mode mean diameters in micrometers
nB       = 0., 0., 0., 0., 0., 0., 0.             ! Mode number concentrations in #/cm^3
/

Hello! It looks like radiative transfer calculations failed.
One possibility is that pressures change so much that it does not match with the initially set constant radiation pressure levels (RadConstPress = .TRUE. ). If you see that this is the case, then you could try to see if a restart solves the problem (some parameters are reset, but not all). If not, then setting RadConstPress = .FALSE. and rerunning the simulation could help. If it is a pressure problem, one option would be changing the vertical grid so that it has lower resolution at the domain top. If the radiation sounding (radsounding = 'backrad_in') does not match with the LES values at the domain top, radiative cooling or warming at the domain top could also cause temperate and pressure changes.
The other common problem for this error is that a cloud rises and eventually reaches the domain top or even the sponge layer. This causes instabilities especially for temperature. If you see this happening, you need to increase vertical levels and rerun the simulations. You can also prevent clouds from rising, for example, by increasing subsidence.
The third (rare) reason is that the top boundary causes instabilities to aerosol. This is similar to the cloud problem, but the effect of aerosol is much weaker.

I don’t think that this simulation was made for level=3, but I don’t see any obvious problems. You could just disable those floating-point errors traps and see if the outputs have NaNs or Infs.
It looks like this model version doesn’t have any TKE outputs. SGS TKE is calculated in sgsm.f90. You can calculate resolved TKE from winds.

I have not run level 3 simulations with this model version. In theory, level=3 should work with the same NAMELIST. It just doesn’t read SALSA parameters. Level=2 should also work, but I have not tried this.
If you set nxp=5, then set nxpart = .FALSE., which means that there should be just one processor for the x-direction.

Note that bins are based on dry size while Dwcba is wet size. There are also some cases where the dry size can exceed bin limits, although SUBROUTINE distr_update(…) tries to avoid this. For example, coagulation can mix large aerosol with small cloud droplets. Usually this is not a problem.

Cloud droplet diameter is not calculated if number concentation is less than nlim. The default nlim is 1 #/kg.

Dwcba is droplet diameter, so use that. cla is dry size.

5D output Dwcba(time, cla, yt, xt, zt) is wet diameter for each size bin, i.e., it is not average. It is calculated from the total particle volume and number concentration. Profile output Dwcba(time, cla, zt) is averaged over altitudes zt.

Note that cloud droplets don't have wet bins (rain drops have wet bins). Cloud droplet bins are based on dry size and then each bin can have some amount of water. Wet size is then calculated from the known total volume (dry+water) and number concentration (V/N=pi/6*D^3). Each Dwcba(time, cla, yt, xt, zt) is thus independent of dry size, but typically larger dry size means larger droplet size.

I don’t know much about fog simulations, or how the model setup differs from cloud simulations. I have not tried simulations where cloud droplet sedimentation and the conversion of cloud droplets into drizzle are turned off (except during spin-up), but I would guess that this causes problems. So, turn on the conversion of cloud droplets into drizzle and at least drizzle droplet sedimentation. Fog intensity will be maintained if the loss of water with precipitation is balanced by sources (surface heat and humidity fluxes, radiative cooling, vertical mixing, subsidence), so you might need to adjust those.

Juha made those simulations, so I don't know the details. If you turn off autoconversion, you should allow cloud droplet sedimentation.

I don’t know why the simulations differ. I have never used level 2, and to my knowledge no one is using that, so it might be better to use level 3. Subroutine forcings in file forc.f90 contains the different forcing options related to parameter case_name.

I think that Nca is in-cloud average, so it includes just cloudy grid cells. CDNC is domain mean so it includes also non-cloudy grid cells with zero concentration.

To comment on the earlier discussion, cloud droplet sedimentation should be turned on in the fog simulations for levels 3 to 5. Otherwise, an excess amount of water is accumulated into the fog.  The difference between CDNC and CNC is that CDNC contains all droplets between 2-80 micrometers, whereas CNC contains everything larger than 2 micrometers. In the Nca there is a sum of all droplets located in the cloud droplet bins A-regime without any size limits (if I remember correctly). Nca can be higher as it might contain droplets that are smaller than 2 micrometers. If you want to conduct fog simulations, I would advise increasing the number of size bins used in SALSA for the size range between 200-300nm as the original SALSA setup works better with clouds. You can contact me also through the email for additional information.

UCLALES has many options for such statistics, but depending on the branch you are using, some of them might be removed from the output-list. You can check from the original UCLALES code the ncio.f90 and stat.f90 files about possible outputs there. Those can be also found from the "UCLALES-SALSA branch IceDevelOrg" for example.

You should use the default master branch although it is somewhat outdated. Branch IceDevelOrg uses different inputs, so it is not compatible with the master branch.

Yes, it is possible, but it can't be done through input files. In the mo_submctl.f90 reglim variable can be modified to change the limits for different size regimes. For example to (/3.e-9, 1.e-7, 4.e-7, 1.e-5/) could work better with fog. In addition by default nbin(reg)=(/3,7/) and to add 5 more bins please change 7 to 12. In such case increase nbin2 =12 in the subroutine set_aerobins also.


expose setActiveMonths for configuring separate month instances

this is a feature request, I'd be great to be able to configure two separate monthly instances
say you have to month calendar views (one in August and one in September), right now the behavior is that changing the active month changes both of them (so for example if you go back a month the new view is July and August). But it'd be useful to allow changing them separately as well for selecting longer date ranges (so you can have an active view of July and September).

(i'm using the hooks package, btw)

You can use them separately if you will use another useDatepicker hook.

I considered that but I imagine that they won't be synced together when selecting a date range
in either case, my use case changed and I don't need this behavior anymore. I still feel that I'd be useful to have but feel free to close this if you're not interested in the feature

@tresko any thoughts about this issue? This functionality looks pretty crucial for selecting date range in two moths selected separately...


Auto refetching doesn't stop when retryAttempt reach failureCount

Describe the bug
Auto refetching doesn't stop when retryAttempt reach failureCount
To Reproduce
Steps to reproduce the behavior:
Demo here: https://codesandbox.io/s/silly-dream-ztv01?file=/pages/index.js

throw an error in query function.
set option retry to 3 and set option refetchInterval to 1000

Expected behavior
If query function throw an error, React-Query should stop interval refetching, and begin to retry until retryAttempt count reach failureCount.
It should continue to interval refetch when retryAttempt count doesn't reach failureCount

I added some logging to your demo, and the behaviour looks expected:
https://codesandbox.io/s/serene-babbage-l8o57?file=/pages/index.js
the output for status, failureCount is:
loading  0
loading  1
loading  2
loading  3
Error: test
error  4
---
loading  0
loading  1
loading  2
loading  3
Error: test
error  4

so what we are seeing is:

the query being in loading state with no failureCount, fetching for the first time.
we get an error (failureCount=1), retry kicks in. now the refetchInterval of 1 second pauses.
we retry 3 times with exponential backoff, so it takes some time.
then we get the error logged and a final rendering in error state
now, the refetchInterval is "back on"
--> so after 1 second, the whole thing starts again

not sure what's wrong with this behaviour, can you elaborate a bit?
if you increase the refetchInterval to 10 seconds, you will see that takes 10 seconds from when we log error 4 and the next loading 0. So the refetchInterval does indeed pause while we are retrying

refetchInterval works separately from retries. If a query is in error state, it will still refetch under the normal conditions. For example, on window focus, or if a new component mounts. Otherwise, we would stay in error state indefinitely. The interval doesn't care about the state of the query. It's the same as if you focus the window every N seconds, except it happens automatically.

If we have retried 3 times, and all fail in first round, we should never start auto refetching again.

If that's what you want, you'd need to set some local state dependent on your error, and turn off polling, something like:
const [shouldPoll, setShouldPoll] = useState(true)
useQuery(
  key,
  fn,
  {
    refetchInterval: shouldPoll ? 1000 : 0,
    onSettled: (data, error) => setShouldPoll(!!error),
  }
)


Add conversations

The backend conversations is getting close to being useful - https://github.com/yunity/foodsaving-backend/pull/333
I'd like to proceed by working out what will be useful for the frontend service to do, so I can create the correct API endpoints and websocket contract.
The only thing that will have a conversation right now is the groups.
Here is my idea for how it would be used (inside a controller for example):
// message storage in your controller
vm.messages = [];

// the idea here is the service handles all the logic of:
// 1. fetching initial messages (via API)
// 2. receiving new messages (via websocket)
// 3. putting them in the array you pass to it
// it then returns an object you can do further things with
let conversation = conversationService.subscribe(24, vm.messages);

// write a new message into the conversation...
conversation.sendMessage({
  content: 'Yay, a nice message from me!'
});

// go back in time to get older messages, then add them into the array
conversation.fetchPrevious(20);

// it's then important to unsubscribe or they will start piling up
// there is an angular way to call methods when the controller is removed iirc
conversation.unsubscribe();

The more annoying bit right now is how to get the conversation id, as I implemented in the backend now as a GenericForeignKey on the conversation, so the group doesn't know the conversation id without looking it up.
There is a separate endpoint /api/groups/{id}/conversation/ for retrieving the conversation info, and no endpoints for listing conversations.
For now I would propose the frontend websocket would receive messages for all the conversations you are in, but would only do anything if something had subscribed to a conversation using the frontend service.
The alternative would be to add/remove conversation subscriptions on the server, but it is more complicated and seems of no benefit right now.
Questions:

can this actually work on a technical level? (I think it should...)
do you like the API style? (slightly funky managing your array for you...)
any input on my assumptions for the frontend UI?

Frontend assumptions seem valid to me. The conversations service would need to call $apply when the array changes to trigger a digest cycle.
UI: If we have the group conversation directly in the group page, would it be better to have the most recent message first (similar to "History")? Otherwise I would create a separated chat UI with a more common chat interface (oldest to newest, input at bottom).

There is a separate endpoint /api/groups/{id}/conversation/ for retrieving the conversation info, and no endpoints for listing conversations.

Seems fine, although it could be added as a SerializerMethodField. Will look into the backend after this.

See https://github.com/yunity/foodsaving-frontend/issues/539#issuecomment-315353393 for an idea for the UI from @Sliverriver (although we wouldn't have threads/comments initially)

The wall-like chat (reverse chronological) is used by Trello, for example:

I found it quite confusing because people tend to react to each other and it's strange to read those from bottom to top.
Facebook has a mix: the wall is (largely) reverse chronological, but the comments are chronological (usual chat & forum reply style). That seems to be fitting, because the wall posts usually are not reactions to each other.
I would prefer a chronological style with the older messages on the top and the more recent ones at the bottom. That's what I would expect from a conversation (in contrast to a wall)

If it's too confusing without comments/threads then we could always postpone until they exist...? But I think it would be better to find a solution with just simple messages for now.

I think the seperated chat UI will be usefull sometime in the future, and it would also be nice to be able to access the messages anywhere (like the messages at the bottom right of foodsharing.de or on facebook), so I'm also in favor of a seperate chronological chat for now.

Ok here is some working code! If you get backend branch conversations and frontend branch add-conversations then just run everything as normal it should work :)
I added 3 services inside the new conversations module:

Socket handles the websocket connection, exposes a simple "subscription to everything" API
Message handles things on the /api/messages/ endpoint, just create and list
Conversation does the clever stuff, you pass it conversation id and it returns you an object with everything you might want to do on the conversation

Then, I added the logic for showing it to groupDetail controller. If I keep the pull request to just the service I would remove this before suggesting a merge.
I did not write frontend tests yet. I slightly changed the service API from my proposal above, actually even simpler now.
A few points:

just gets ALL the messages initially
doesn't ensure messages aren't received twice (edge case from getting initial messages from API and web socket messages)
no tests...
cannot fetch old messages
users are just referenced by id, not sure if there is a more general mechanism to get user info from ids (seeing as it's the same as the group members, maybe there is something for that, did not look yet)
I would also add optimistic sending at some point, add the messages to the array immediately, but mark as "sending", then update when the server sends it to us, probably would do that in a later PR

(Don't know why colours changed for my screenshot. Odd.)

I would be very happy to leave all the UI decisions to other people to...
My preference for the workflow would be to merge into master as soon as I have written decent tests (and removed the dev-ui), it would not work on the live backend of course, but it would also not be loaded by anything. Then work can be done on the UI, which I think is more involved and I would rather not delay this if possible.

Ah, just to remind myself: I also need to add the heartbeat/keepalive timer to the socket connection...

Seems fine, although it could be added as a SerializerMethodField. Will look into the backend after this.

@tiltec I think it might be not such a bad thing to keep it seperate, there may be other ways to interact with the conversation in the future - muting it, some types will be leavable/joinable, adding members to it, etc...
The idea is to keep all those things nested inside the resource the conversation is about - as that is the only place that will know the correct permissions - the conversation itself being pretty generic and not caring about that stuff.
Message sending is fine from the other one I think as as long as you are in the conversation you can write a message, but perhaps even that would need to have special resource permissions/controls at some point - special messages, embedding certain things, etc..
Will not worry about that for now though. Just sharing some thought processes.

PR https://github.com/yunity/foodsaving-frontend/pull/584

Backend master has conversation backend in now, and frontend master has conversation service.
The only remaining piece is doing some UI now (and fixing some crap in the backend/service if needed) - this PR implements a basic UI for people to improve on https://github.com/yunity/foodsaving-frontend/pull/595

We have the wall in groups, so I consider this as done ✨


TestFoundation: use bridging for CFStringGetLength

Rather than use CoreFoundation interfaces, use bridging more
aggressively to call the CoreFoundation methods.  This reduces the
dependency on CoreFoundation for the test suite.

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test macOS platform

I think this change might have broken Linux builds:

https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android/2249/
https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android-arm64/452/
https://ci.swift.org/view/Packages/job/oss-swift-package-linux-ubuntu-16_04/3491/
https://ci.swift.org/view/Packages/job/oss-swift-package-linux-ubuntu-18_04/1299/
https://ci.swift.org/job/oss-swift-incremental-RA-linux-ubuntu-18_04/5376/

All of them finish with TestFoundation (ILLEGAL) just after Test Case 'TestNSString.test_substringFromCFString' started.
Looking at the test and the changes, it seems that the changes basically have remove the functionality that the test was testing for (doing a substring of a CFString, when after the changes, it is doing the substring of a NSString).
I think the problem comes from doing as NSString of an String in Linux, where a _nsObject might be necessary (but I'm not sure).

A little more information. The problem only happen in Release, or at least when -O is used. It seems to be some problem with the code generated for the accessors of stripCombiningMarks and (in my case) toUnicodeName. Seems that trying to access the former falls into the global initializer of the later. Even changing stripCombiningMark for stripDiacritics end up in the same.
The disassembly for stripDiacritics is the following:
disassemble -a 0x00007ffff62bfb27
libFoundation.so`NSString.StringTransform.stripDiacritics.unsafeMutableAddressor:
    0x7ffff62bfb10 <+0>:  pushq  %rbp
    0x7ffff62bfb11 <+1>:  movq   %rsp, %rbp
    0x7ffff62bfb14 <+4>:  leaq   0xa10e65(%rip), %rdi      ; globalinit_33_352A528E79284BBB704C1600E24E3449_token32
    0x7ffff62bfb1b <+11>: leaq   -0x32(%rip), %rsi         ; globalinit_33_352A528E79284BBB704C1600E24E3449_func32
    0x7ffff62bfb22 <+18>: callq  0x7ffff600e650            ; symbol stub for: swift_once
    0x7ffff62bfb27 <+23>: leaq   0xa10e5a(%rip), %rax      ; static Foundation.NSString.StringTransform.stripDiacritics : Foundation.NSString.StringTransform
    0x7ffff62bfb2e <+30>: popq   %rbp
    0x7ffff62bfb2f <+31>: retq

The disassemble for globalinit_33_352A528E79284BBB704C1600E24E3449_func32 is:
libFoundation.so`globalinit_33_352A528E79284BBB704C1600E24E3449_func32:
    0x7ffff62bfaf0 <+0>:  pushq  %rbp
    0x7ffff62bfaf1 <+1>:  movq   %rsp, %rbp
    0x7ffff62bfaf4 <+4>:  movq   0x9b1eb5(%rip), %rdi
    0x7ffff62bfafb <+11>: popq   %rbp
    0x7ffff62bfafc <+12>: jmp    0x7ffff62bfcb0            ; globalinit_33_352A528E79284BBB704C1600E24E3449_func21Tm

Which is the function that fails:
libFoundation.so`globalinit_33_352A528E79284BBB704C1600E24E3449_func21Tm:
    0x7ffff62bfcb0 <+0>:  pushq  %rbp
    0x7ffff62bfcb1 <+1>:  movq   %rsp, %rbp
    0x7ffff62bfcb4 <+4>:  cmpq   $0x0, (%rdi)
    0x7ffff62bfcb8 <+8>:  jne    0x7ffff62bfcbc            ; <+12>
    0x7ffff62bfcba <+10>: ud2
->  0x7ffff62bfcbc <+12>: ud2

Reverting this change until that problem can be investigated further might not be a bad idea.

@millenomi can you take a look?

I think the problem is in the library, not the tests. The <some CFString> as! String is invalid, but I don’t know why the compiler is not warning about it.


Download link for BaltimoreCyberTrustRoot.crt.pem no longer works

I used that link a while ago, but now I get "Access denied."
https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem

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

ID: fa31ec74-fc04-0b31-0b98-b189a809a5b4
Version Independent ID: 001cbeab-c16d-9205-a02c-1745a256edcb
Content: Configure SSL - Azure Database for MySQL
Content Source: articles/mysql/single-server/how-to-configure-ssl.md
Service: mysql
Sub-service: single-server
GitHub Login: @savjani
Microsoft Alias: pariks

@Robert-Lauriston-at-Striim
Thanks for your feedback! We will investigate and update as appropriate.

Hi @savjani,
Could you please look into this ask if the certificate has some changes that is affecting user.

It's working today.

@Robert-Lauriston-at-Striim
We appreciate the feedback.
Not sure what experience you are having, but the links still works for me.
Have you tried other browsers by chance?

We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion, and we will reopen the issue. To ask a question directly to our Q&A environment, please visit https://docs.microsoft.com/en-us/answers/support/ for more information on asking questions about the product or service.
Thank you.
#please-close


[Client] migrate tx executor util to viem

I prototyped this in #1033 and turns out we don't even need to provide anything special here, folks can just use viem directly, e.g.
const world = getContract({
  address: worldAddress,
  abi: worldAbi,
  publicClient,
  walletClient,
});

world.write.increment();

viem does a great job tracking nonces, etc.


[Support] Make installed cf cli plugins available in subshell script

What
This script points CF_HOME to a temporary directory to create an
indipendent login for the subshell. This has the side-effect of hiding
any cli plugins that are installed. To avoid this, this PR adds a
symlink back to plugins directory so that they can be found.
How to review

Code review
use the cf_subshell_scoped_login scipt, and verify that cf plugins still returns any plugins you have installed.

Who can review
Not me.

Merging this without triggering a Concourse deploy.


connection error logged for health checks

Getting the following error repeated in my logs when I enable health checks using grpc_health_probe:
transport: loopyWriter.run returning. connection error: desc = "transport is closing"
The health check succeeds. Any thoughts?

I've never seen that. What language is your grpc service written in?

It's Go.

https://github.com/grpc/grpc-go/issues/2160 talks about this error message.
How frequently do you see this error (1 per health check, or once every 5-10 mins?) grpc-go unfortunately tends to just throw logs in stderr like that as a side-effect. But maybe they have a configurable logger they added since the last time I checked, that can let you disable such messages.

It's 1 per health check.

Hmm I can't repro this. We use this project in https://github.com/GoogleCloudPlatform/microservices-demo (which has 3 gRPC services written in Go) and that message does not show up on the logs.
Do you mind quickly refactoring https://github.com/grpc/grpc-go/tree/master/examples/route_guide/server sample app to add a health check support and probing it to see if it happens there?

Update: Occasionally, and always when I use exec to run the health check directly, I'm seeing an additional error:
2019-03-05T20:57:36.692338Z	info	transport: http2Server.HandleStreams failed to read frame: read tcp <IP_ADDRESS>:5000-><IP_ADDRESS>:50934: read: connection reset by peer
2019-03-05T20:57:36.692419Z	info	transport: loopyWriter.run returning. connection error: desc = "transport is closing"

Have you been able to refactor routeguide server and try w/ that?
Also try downgrading grpc-go to 1.15 or so. I bet it is related to a new change.

No, I haven't messed with routeguide yet
RE: grpc-go, do you mean "google.golang.org/grpc"? As far as I can tell from my .lock file, I'm on v1.14.0.

I can't repro this, sorry.
I tried this with grpc-go v1.19 plus some commits (at 45890ff). Here's the patch:
diff --git a/examples/route_guide/server/server.go b/examples/route_guide/server/server.go
index b7dc66c..c8e3011 100644
--- a/examples/route_guide/server/server.go
+++ b/examples/route_guide/server/server.go
@@ -38,13 +38,15 @@ import (
 	"time"

 	"google.golang.org/grpc"
-
+	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/credentials"
+	"google.golang.org/grpc/status"
 	"google.golang.org/grpc/testdata"

 	"github.com/golang/protobuf/proto"

 	pb "google.golang.org/grpc/examples/route_guide/routeguide"
+	healthpb "google.golang.org/grpc/health/grpc_health_v1"
 )

 var (
@@ -73,6 +75,14 @@ func (s *routeGuideServer) GetFeature(ctx context.Context, point *pb.Point) (*pb
 	return &pb.Feature{Location: point}, nil
 }

+func (s *routeGuideServer) Check(context.Context, *healthpb.HealthCheckRequest) (*healthpb.HealthCheckResponse, error) {
+	return &healthpb.HealthCheckResponse{}, nil
+}
+
+func (s *routeGuideServer) Watch(*healthpb.HealthCheckRequest, healthpb.Health_WatchServer) error {
+	return status.Error(codes.Unimplemented, "not implemented")
+}
+
 // ListFeatures lists all features contained within the given bounding Rectangle.
 func (s *routeGuideServer) ListFeatures(rect *pb.Rectangle, stream pb.RouteGuide_ListFeaturesServer) error {
 	for _, feature := range s.savedFeatures {
@@ -240,6 +250,8 @@ func main() {
 	}
 	grpcServer := grpc.NewServer(opts...)
 	pb.RegisterRouteGuideServer(grpcServer, newServer())
+	healthpb.RegisterHealthServer(grpcServer, newServer())
+
 	grpcServer.Serve(lis)
 }

Then I run as go run main.go -port 9000 and call it via:
./grpc-health-probe -addr <IP_ADDRESS>:9000

but it doesn't print any logs to the output.

Ok. I have no idea, but I guess it's not a problem here.

I did the same step with @ahmetb, the error logs will occurred after I tried:
GRPC_GO_LOG_VERBOSITY_LEVEL=99 GRPC_GO_LOG_SEVERITY_LEVEL=info go run main.go -port 9000

run
./grpc-health-probe -addr <IP_ADDRESS>:9000

output
INFO: 2019/05/02 14:09:24 CPU time info is unavailable on non-linux or appengine environment.
INFO: 2019/05/02 14:09:25 transport: loopyWriter.run returning. connection error: desc = "transport
 is closing"
WARNING: 2019/05/02 14:09:27 transport: http2Server.HandleStreams failed to read frame: read tcp 12
<IP_ADDRESS>:9000-><IP_ADDRESS>:52436: read: connection reset by peer

It’s unlikely the probe is broken. Most likely there’s another issue in your grpc server. feel free to write a grpc client yourself and execute it. It won’t work either.

I've tried with routeguide grpc server.
I only get the error logs with
GRPC_GO_LOG_VERBOSITY_LEVEL=99
GRPC_GO_LOG_SEVERITY_LEVEL=info
If not everything is fine.
Likely there is the another issue came from grpc. Not the probe

To help others that might be running into transport is closing errors. Ensure that the gRPC service that you are calling is not panicking. A panicking gRPC service will cause this error to be returned by the client.

I can't repro this, sorry.
I tried this with grpc-go v1.19 plus some commits (at 45890ff). Here's the patch:
diff --git a/examples/route_guide/server/server.go b/examples/route_guide/server/server.go
index b7dc66c..c8e3011 100644
--- a/examples/route_guide/server/server.go
+++ b/examples/route_guide/server/server.go
@@ -38,13 +38,15 @@ import (
 	"time"

 	"google.golang.org/grpc"
-
+	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/credentials"
+	"google.golang.org/grpc/status"
 	"google.golang.org/grpc/testdata"

 	"github.com/golang/protobuf/proto"

 	pb "google.golang.org/grpc/examples/route_guide/routeguide"
+	healthpb "google.golang.org/grpc/health/grpc_health_v1"
 )

 var (
@@ -73,6 +75,14 @@ func (s *routeGuideServer) GetFeature(ctx context.Context, point *pb.Point) (*pb
 	return &pb.Feature{Location: point}, nil
 }

+func (s *routeGuideServer) Check(context.Context, *healthpb.HealthCheckRequest) (*healthpb.HealthCheckResponse, error) {
+	return &healthpb.HealthCheckResponse{}, nil
+}
+
+func (s *routeGuideServer) Watch(*healthpb.HealthCheckRequest, healthpb.Health_WatchServer) error {
+	return status.Error(codes.Unimplemented, "not implemented")
+}
+
 // ListFeatures lists all features contained within the given bounding Rectangle.
 func (s *routeGuideServer) ListFeatures(rect *pb.Rectangle, stream pb.RouteGuide_ListFeaturesServer) error {
 	for _, feature := range s.savedFeatures {
@@ -240,6 +250,8 @@ func main() {
 	}
 	grpcServer := grpc.NewServer(opts...)
 	pb.RegisterRouteGuideServer(grpcServer, newServer())
+	healthpb.RegisterHealthServer(grpcServer, newServer())
+
 	grpcServer.Serve(lis)
 }

Then I run as go run main.go -port 9000 and call it via:
./grpc-health-probe -addr <IP_ADDRESS>:9000

but it doesn't print any logs to the output.

Hi @ahmetb , I also faced the problem too. I found out that if we set the logger for grpclog, it will issue logs when health check api is invoked, otherwise, it doesn't. Please check why the problem occurs. Thanks

I am open to patches if you know the fix.

I am open to patches if you know the fix.

Actually, I don't know. Btw, I run my application in K8s with health check, it also log the same, maybe the root cause in the grpc-go server


Update extensiongallery for 1.5.0

Updated extension gallery for insiders and stable, arc and azcli extensions are now 1.5.0 using the vsixs here https://mssqltools.visualstudio.com/CrossPlatBuildScripts/_build/results?buildId=166732&view=artifacts&pathAsName=false&type=publishedArtifacts

@alanrenmsft Could you help me update the vsixs with these files arc-1.5.0.vsix and azcli-1.5.0.vsix found in this run: https://mssqltools.visualstudio.com/CrossPlatBuildScripts/_build/results?buildId=166732&view=artifacts&pathAsName=false&type=publishedArtifacts


Dataframes of len 1 passed to _create_multitraj do not always have column "extra__subject_id", raising KeyError

As observed in debugging https://github.com/wildlife-dynamics/ecoscope-platform-workflow-issues/issues/9, dataframes landing on this line
https://github.com/wildlife-dynamics/ecoscope/blob/9041cea812d13d766f673e0d357bd0c9891de38a/ecoscope/base/base.py#L384
do not always have the "extra__subject_id" column, raising a KeyError on what is intended to be a warning, if so.
In the linked (private) workflow debugging issue, this error was avoided by monkey-patching "groupby_col" instead, at @atmorling's suggestion, but I am not sure if this is the preferred fix or not.

I think using groupby_col makes sense since extra__* (currently) has the implication that it might be dropped at any time


breakage in trunk / 1.4

This changeset:
https://code.djangoproject.com/changeset/16857
changed the way in which models are registered with the admin in a way that breaks django-constance
It seems to be that this approach of spoofing a model:
https://github.com/comoga/django-constance/blob/master/constance/admin.py#L115
Is no longer effective at injecting a ModelAdmin without a model
This results in a NoReverseMatch error:
http://dpaste.com/646934/

merino/django-constance merged


The simulation graphics looks blurry

Everything runs smoothly~ however, the graphics in the simulation look very blurry. I think it must be to do with some settings when I import the Art, but I cannot figure out where they are. Can you help? Thanks!

Closing due to no reply


[eas-cli] Add non-interactive flag to eas update command

Checklist

[ ] I've added an entry to CHANGELOG.md if necessary. You can comment this pull request with /changelog-entry [breaking-change|new-feature|bug-fix|chore] [message] and CHANGELOG.md will be updated automatically.

Why
Currently, we might ask a question about if you want to install expo-updates when running EAS CLI, which can break CI. When CI breaks, there's no indication of what we tried to get input for. Just an error.
We need to throw the log before we throw the error, or we need to add a default choice with a --non-interactive flag.
This PR adds the non-interactive flag to be in alignment with the other commands.
Closes ENG-4590.
How
Used https://github.com/expo/eas-cli/pull/600/ as inspiration. Added flag, test manually (there's no tests for this command).
Test Plan
~/expo/eas-cli/packages/eas-cli/bin/run update --non-interactive
✔ Linked to project @wschurman/eas-update-test
    Error: Must supply --branch when in non-interactive mode

~/expo/eas-cli/packages/eas-cli/bin/run update --non-interactive --branch preview
✔ Linked to project @wschurman/eas-update-test
    Error: Must supply --message when in non-interactive mode

~/expo/eas-cli/packages/eas-cli/bin/run update --non-interactive --branch preview --message "wat"
✔ Linked to project @wschurman/eas-update-test
✔ Built bundle!
✔ Uploaded assets!
✔ Published!

branch           preview
runtime version  exposdk:44.0.0
platform         android, ios
update group ID  cf31f7dd-2c25-4c9d-bcc7-352b7e811bc4
message          wat

/changelog-entry new-feature Add non-interactive flag to eas update command


Update of NuGet Push examples

The existing NuGet Push example for a project scoped feed was incorrect/did not work. It has been updated to include the correct and relevant parameters, along with adding an example for an organization scoped feed.
The existing note for the Pipeline Artifacts directory made me configure the wrong directory in my own pipeline, so I have attempted to add clarity to it.

@AdrianSanguineti : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#label:"aq-pr-triaged"

@steved0x : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off


R0.12

Can one of the admins verify this patch?

It doesn't look like a valid request. Please start over and open a new one. Thanks!


chore: rename meagre to isMeagre in two lemma names

The corresponding Prop is called IsMeagre.

maintainer merge