Space weather

This outline a proposed re-implementation of space weather mechanics, based on a simple idea. That idea came out of private discussions with David Hunter, that is knowledgeable on the subject. Thank you David!
At the moment, space weather is only represented by symbolic 'CME events' originating at random from the sun, toward a planetary system. After the CME symbolically hit the planetary system, the whole of it enter what I define as a 'solar storm' state, for some time. In that state, radiation is increased (if you are not inside a magnetopause), and communications are blacked out (if you are inside a magnetopause). This system is okay (if not a bit bland). There is no graphical representation of the CME.
The proposal is to scrap the existing system, and replace it with a new one.
Space weather primer
The sun emit charged particles in all directions, usually called 'the solar wind'. The emission is not uniform over the photosphere, nor it is constant over time. At some point in time, areas of the sun photosphere emitting less or more than average are called 'dark spots' or 'bright spots'. These cause 'discernible events' both on the photosphere, above the photosphere, and in the path that the related emissions follow through the solar system. These 'events' have many names, that are beyond the scope of this gentle introduction.
A 11 years cycle has been observed on the level of charged particles emitted from the sun. Therefore, the frequency of dark and bright spots change over the course of this 11 years cycle. Intuitively, dark spots are associated to lower emission levels while bright spots are associated with higher emission levels. Cycles start with low emission level, high number of dark spots and low number of bright spots (the solar minimum), reach an apex of high emission level, high number of bright spots and low number of dark spots (the solar maximum), then return to the starting condition.
The charged particles are emitted radially, and as the sun photosphere rotate the stream emitted from a particular spot will form a spiral as they travel outward from the sun. This is called the 'Parker Spiral'.
The charged particles are emitted with variable velocities. The set of velocities observed seem to cluster around two particular ones. These have been called the 'fast solar wind' and the 'slow solar wind'.
All of this is a simplication. The reasons for the sun cycle and the anisotropy of emission intensity and velocity are irrelevant for our purpose.
The idea
For any point in space (in the sun frame of reference), the associated 'parker spiral arm' passing through the point is deduced. Then, the origin of the 'parker spiral arm' is traced back to a specific point on the surface of the sun, at a specific point in the past.
The surface point and the moment in time are then used as coordinates to lookup in a map (in the mathematical sense), that associate all possible ones to a level of charged particle emission.
This map is implemented procedurally, in such a way as to model the dark and bright spots, with a frequency that follow a single cycle. A simple modulo operation on the time coordinate cause the cycle to repeat infinitely. The procedural representation requires no data storage requirements and has infinite resolution.
What gives
It is possible to evaluate the solar wind intensity at any point, and these intensities vary with time and are 'parker-spiral-like'. This space weather model is a decent representation of reality, and is fast to evaluate. Now the question arise what to do with this data.
Intuitively, it could map to radiation directly so that increasingly intense emissions cause increasingly intense radiation. What is now the CME 'solar storm' will then be simply a particularly intense emission.
Maybe they should also interfere with communications, in a more generic way than the current 'blackout'. Albeit I didn't explore this aspect at all, at this moment.
It would be nice to add a new experiment part, that act as sensor for solar wind intensity data (like SWEPAM). But this require either me learning how to model and texture in Blender, or somebody else contributing the model.
I'm out of ideas on what else the solar wind intensity could be used for. It is interesting to note that this data will be exposed by the API, so it could be used by other mods (one that add electric sails for example).
Graphical representation of solar wind
A lot of particles are rendered (eg: 100k), centered on the sun, using an uniform distribution. The particles are static, that is, they don't move in the sun frame of reference. They are also sparse enough so that the overall 3d field can be seen.
The color of each particle will be determined from the solar wind intensity at that point, at current time. This will happen by re-implementing the algorithm mentioned above inside a shader.
To aid in visualizing the 3d field, depth of each particle will have to be conveyed somehow.
This is only rendered in map-view or tracking-station.
Effect on performance should be trivial.
Graphical representation of sun photosphere and sun corona events
Ideally the bright and dark spots should be represented on the photosphere, albeit this is secondary. The simplest way would be to replace the existing sun shader with a custom one, that sample the solar wind 'map' at current time. But this could conflict with custom planet packs and/or light flare effects, logos forbid.
Even more secondary is representing the plasma filaments along very dynamic magnetic field, occurring over bright spots usually, and with intensity proportional to the underlying emission intensity. I have some ideas on this, that involve an ad-hoc physical simulator using verlet integration (nowadays called 'position based dynamics') and using spline attractors for the magnetic lines. So assume this will not happen.

Note on solar wind occlusion by celestial bodies
It will be very hard to determine occlusion in the proper way, because the 'parker-spiral-arm' path would have to be walked, and for each step all celestial bodies position at the time would have to be calculated from their orbits, then sun visibility evaluated. This could probably be also done analytically, but it will be even more ugly.
A better solution is to ignore celestial bodies occlusion when evaluating the solar wind intensity at a point, and instead only using it when evaluating the radiation reaching a particular vessel. That is, ignore the real solar wind path and assume a line-of-sight one instead. Some corner cases may be built for which this result will not match the proper one, but in general the two results should be the same.

Interactions between solar wind and magnetospheres
The 'radiation fields' representing magnetospheres have negative radiation values, that represent the 'shielding' effect of that particular body magnetic field.
So naturally solar wind radiation will be summed to the total radiation of the fields, leading to magnetospheres protecting from solar wind, de-facto, depending on the intensity of their shielding effect and the intensity of the solar wind at that particular point and time.
Interactions between radiation and communications
A 'blackout radiation threshold' will be added in Settings.cfg, with some reasonable default value.
When environment radiation at the vessel position (thus including solar wind contribution) is above that threshold, the transmission rate of a vessel will get penalized in proportion of how much above this threshold the radiation level is. Up to total communication blackout.
This not only kind-of reproduce the current storm blackout behaviour, but it does generalize it in an elegant way.
Additional consequences will be partial or total loss of communications when crossing particularly strong inner belts.

Super cool idea! Much more interesting, and less random than current CMEs. I think that having an experiment to measure it is an absolute necessity. If you keep CME as well, an experiment to give some early warning should also be implemented. It would also be cool if the Automation module has events related to space weather, so that it could trigger some action (e.g. if fast solar wind damages solar panels, it would makes sense to use retractable ones that are shielded, and trigger retraction on event.). As for parts, if you need to commission some, I'm willing to chip in couple of GBP.
Another effect of weather might be to reduce the efficiency of solar panels. Some digging/asking someone who knows might be a good idea, but I imagine that charged particles hitting photovoltaics might wreak a bit of havoc. Maybe even permanent decrease of efficiency?

If I had a part suitable to be a solar wind sensor, like the real-life SWEPAM here, I would definitely build some mechanic on top of it.

I'm thinking how the flare/CME warnings may work. With a dedicated part module, I could make it so that it warn the user when intensity is above a threshold. Then the user is supposed to place vessels with this sensor around, to give early warnings. Ideally they could try to replicate the orbits of real-life vessels that have the SWEPAM.
This 'warning' could then be shown as a message to the user, and broadcast to all vessels in the same planetary system, where a new associated script in automation could be triggered.

As for parts, if you need to commission some, I'm willing to chip in couple of GBP.
Thanks a lot for the offer. But I guess that sooner or later I should learn to make simple models in blender. This may be a good one to start with, it seem simple enough. Even the texturing seem dead simple.

Another effect of weather might be to reduce the efficiency of solar panels. Some digging/asking someone who knows might be a good idea, but I imagine that charged particles hitting photovoltaics might wreak a bit of havoc. Maybe even permanent decrease of efficiency?
I'm going to ask to David Hunter, he probably know. But I guess they don't do good to solar panels.

I know that during a CME radio transceivers must be turned off due to the energy build up on the antennas, this makes the power transistors inside the radio equipment overheat and fail if being used when a CME hits them. Even metal cables over a certain length will have energy induced in them by the wideband RF content of the CME and can be enough energy to damage a substation transformer.
Maybe this action could be simulated by damaging the antennas when a CME hits if they are powered on, obviously some sort of on/off switch will have to be added to the antennas.
There is a lot of good information on Ben Davidsons Space Weather site http://spaceweathernews.com/

Hi folks.
Thanks for your kind words in the OP, ShotgunNinja.
Regarding CME warnings: this is done using the "EPAM" part of the SWEPAM instrument. I will send you a message via the KSP forums explaining this function in more detail shortly so you can get an idea how exactly it is done.
"Another effect of weather might be to reduce the efficiency of solar panels. Some digging/asking someone who knows might be a good idea, but I imagine that charged particles hitting photovoltaics might wreak a bit of havoc. Maybe even permanent decrease of efficiency?"
"I'm going to ask to David Hunter, he probably know. But I guess they don't do good to solar panels."
Space weather will effect photovoltaics in the same way it effects any other electronic component: it will ionise components and cause degradation of circuitry. There's nothing inherently different about PVs.
"I know that during a CME radio transceivers must be turned off due to the energy build up on the antennas, this makes the power transistors inside the radio equipment overheat and fail if being used when a CME hits them. Even metal cables over a certain length will have energy induced in them by the wideband RF content of the CME and can be enough energy to damage a substation transformer.
Maybe this action could be simulated by damaging the antennas when a CME hits if they are powered on, obviously some sort of on/off switch will have to be added to the antennas."
This really depends on the energy of the CME itself. Most CMEs don't cause that much problem and generally spacecraft antennas and electronics are kept online. They're usually only switched off/on if a) it has no magnetic shielding, or b) a very strong CME is expected.

If I may suggest creating CMEs with differing energies?
Have a look at the CME SCORE classification system. This is how CMEs are classified: https://swrc.gsfc.nasa.gov/main/score
If you can create CMEs with different energies/velocities, and classify them using the SCORE system, perhaps you could then also program in e.g. loss of signal to some spacecraft, based on a) whether or not they are protected by a planetary magnetic field, and b) the CME class.
I would recommend the O-, R- and ER-class CMEs would be worthy of causing signal loss when a spacecraft isn't otherwise protected by a magnetosphere.

Side-note: if you go down that route, I would really appreciate it if this would also cause loss of signal with RemoteTech, as I always play with RemoteTech installed, and I like my KSP gaming to be ultra-hard. :P

Want to make it even harder? If a spacecraft is transmitting science data back to KSC when a CME arrives, and if the CME has a high-enough energy to disrupt communications, perhaps only part of the science transmission should arrive at the KSC, and so you would only get a percentage of the total science value.
e.g. if it's meant to give 10 science points if transmitted back to KSC, and an R-class CME arrives, then it may only give 5 science points. Obviously a stronger ER-class CME would prevent all communication (so you'd get 0 points).
Perhaps you could add an upgrade to command modules/probe cores that will automatically re-send data if packets are lost during transmission. This upgrade would obviously cost more (much like the shielding costs more if you want to add it to a module).

@DaveTSG awesome info!
About re-sending - the probe still has the data on its drive. It would make more sense in Kerbalism framework, IMO, to have CMEs wipe part of the science from the drive, with the amount dependent on strength of the event and the shielding class adjusted by some random factor.
I also like suggestion about CME class, and think it could be used to simplify the shielding system. Instead of having a numerical value for shield resource, have it show something like Unshielded, O-, -R, or ER-rated.

The emissions from a particular solar spot (so, the emissions of all kind of solar events) could be represented using existing classification (like flare, CME-S, CME-C, etc), but the underlying emission is better implemented with a continuous intensity value. That value would then map to a classification, for representation purpose. This is more generic, and play well with the existing radiation implementation.
Likewise, shielding will still be a continuous value. Its representation to the user (now 'mm of lead-equivalent material') could be extended to also include the emission-level classification mentioned. So the planner/monitor could tell the user that their shielding level is suitable up to CME-C radiation intensity, for example.
About malfunctions and critical failures interaction with radiation: maybe the reliability system module be extended in that regard, with details of the interaction specified per-part. So a part could be made to fail (irreparably or not) when the radiation level is above a threshold. This need more thinking, both on how to implement it as well as the effect on gameplay. Anyway it could be added in a second moment, after the new space weather system is in place.

Electron density
Using the same data already required by the simulation (the emission spot time, location and intensity) it is possible to extrapolate the electron density in the solar wind (triggered by X-ray radiation) at any point in the solar system.
If we ignore the time required for the X-ray EM radiation to reach the sampling point (so, if it is assumed to have infinite velocity), it could be implemented very fast and simple:

from sampling position, ray-trace the sun in line-of-sight and obtain the collision point on the photosphere
evaluate emission intensity at the collision point (at current time*)
if emission is above a threshold, extrapolate electron density value from it

This new environment value could be used for early but less precise warnings about CME events. The same warning mechanics of the SWEPAM sensor part (described in a previous post) could be extended to make use of this new environment value.
[*] It could also be evalued at a point in the past depending on speed of light and distance from the sun and the sampling point. However, one can think of EM emissions also forming a parker-spiral flow, except with curvature small enough to appear almost purely radial. So to simplify the implementation they can be assumed to be radial, that is the same as to say that we assume light speed to be infinity.

So, I've been away from KSP for a while... did anything ever come of this discussion, @ShotgunNinja?

ShotgunNinja is absent, Kerbalism is being maintained here:
https://github.com/ScienceFun/Kerbalism-Continued

Thanks, @lordcirth


Update Start-SPProjectGenerateWsdl.md

Filled in placeholder text.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-server/Start-SPProjectGenerateWsdl.md
:white_check_mark:Succeeded
View (sharepoint-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Add COOK_MAP_CONTAINER_VOLUME

Changes proposed in this PR

Add a new environment variable, COOK_MAP_CONTAINER_VOLUME to disable the integration test volume created for the cook executor

Why are we making these changes?
If the executor is built into the docker image, you don't want to create the volume mapping.

Awaiting green build.


Bump wasm-bindgen to 0.2.92

Resolves the following warning about wasm-bindgen:
warning: the following packages contain code that will be rejected by a future version of Rust: wasm-bindgen v0.2.87
note:
To solve this problem, you can try the following approaches:

- Some affected dependencies have newer versions available.
You may want to consider updating them to a newer version to see if the issue has been fixed.

wasm-bindgen v0.2.87 has the following newer versions available: 0.2.89, 0.2.90, 0.2.91, 0.2.92

- If the issue is not solved by updating the dependencies, a fix has to be
implemented by those dependencies. You can help with that by notifying the
maintainers of this problem (e.g. by creating a bug report) or by proposing a
fix to the maintainers (e.g. by creating a pull request):

  -<EMAIL_ADDRESS>  - Repository: https://github.com/rustwasm/wasm-bindgen
  - Detailed warning command: `cargo report future-incompatibilities --id 2 --package<EMAIL_ADDRESS>
- If waiting for an upstream fix is not an option, you can use the `[patch]`
section in `Cargo.toml` to use your own version of the dependency. For more
information, see:
https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html#the-patch-section

note: this report can be shown with `cargo report future-incompatibilities --id 1`

If you're wondering why I removed the =, it's because we now include wasm in the workspace, so it's included in Cargo.lock. Therefore this pin is redundant.


Add error code to diagnostics about unused code

Sorry for the review to take that long, but it seems like we've aligned the solution.
I think we can move into the next stage where we implement the remaining diagnostics and a dozen of tests.

As discussed in DMs I stripped the PR from any implementation of actionable diagnostics for unused symbols so it can be merged faster. Actionable diagnostics will be implemented as a follow-up.
In the meantime merging this PR will unblock other work in metals as we need to have the errorCode set in stone before we start using it.


fix(manageTranslations) Properly handle detectDuplicateIds flag

Current coverage is 100% (diff: 100%)

Merging #73 into master will not change coverage

@@           master   #73   diff @@
===================================
  Files           2     2
  Lines          27    27
  Methods         7     7
  Messages        0     0
  Branches        6     6
===================================
  Hits           27    27
  Misses          0     0
  Partials        0     0

Powered by Codecov. Last update cc2fe74...34e988e


voc spilt1 1-shot ap:25.4

Why did I reproduce the 1-shot result on Pascal Spilt1 with  AP of only 25.4?, using the base training model provided.
All configurations remain unchanged, except that only one GPU is used, and other parameters such as batchsize remain unchanged

Hey, sorry for the delayed response.  One quick note is that our configurations are designed for 8 GPUs and you will need to adjust the training schedule according to the linear scaling rule when you switch to a single GPU.  Also, the limited batch size in the single GPU setting might affect your experimental results.
Another thing we advocate in the paper is to have multiple runs and compare the average performance and 95% confidence interval due to high variance in the few shot settings. We introduced a new benchmark with repeated runs and the variance interval. You may refer to the complete results of both base and novel classes on Pascal VOC and COCO can be found in Table 7 and Table 8 in the appendix of the arXiv version. https://arxiv.org/pdf/2003.06957.pdf
Hope it helps!

@xinw1012 Thanks for your great work in FSOD! Recently many work follows your stand baseline. I am confused about the G-FSOD. To be specific, I know the first rule which computes the base AP, novel AP, all AP. However, I am confused about the second rule where the code refers to "95% confidence interval". Could you give me some advice(e.g. give me a link or file.py to the corresponding codes)? I would be grateful if you could reply:)

The 95% confidence interval is computed on evaluation results across multiple runs, each with a different sample of the shots. You can refer to the README here for scripts to run the experiments and obtain the aggregated results.

across

Thanks a lot for your help:))


Resolvconf overwritten by netbird client

Describe the problem
Netbird keeps overwriting my /etc/resolv.conf on my Proxmox client.
Every time I connect it resets the resolvconf to this:
# Generated by NetBird
# If needed you can restore the original file by copying back /etc/resolv.conf.original.netbird

nameserver <IP_ADDRESS>
search  netbird.selfhosted

Expected behavior
I don't want netbird to overwrite the resolvconf, maybe there should be an option in the /etc/netbird/config.json to disable it.
NetBird status -d output:
Peers detail:

 laptop.netbird.selfhosted:
  NetBird IP: <IP_ADDRESS>
  Public key: <public key>
  Status: Disconnected
  -- detail --
  Connection type: -
  Direct: false
  ICE candidate (Local/Remote): -/-
  Last connection update: 2022-12-16 16:22:05

Daemon version: 0.11.5
CLI version: 0.11.5
Daemon status: Connected
Management: Connected to https://<my managment url>
Signal: Connected to https://<my signal url>
Domain: prod-local.netbird.selfhosted
NetBird IP: <IP_ADDRESS>/16
Interface type: Kernel
Peers count: 2/3 Connected

Ok, thanks to the folks over at the Netbird slack channel I figured it out: if I disable DNS at the managment ui for that client then it works


Segfault when using assert with parallel=True

The following code triggers a segfault. Tested on Ubuntu 22.04 with Numba 0.56.4 and Numba 0.57.0.
from numba import njit
import numpy as np

@njit(parallel=True)
def foo():
    n = 1000

    for _ in range(n):
        for _ in range(n):
            values = np.zeros(3)

            np.max(values)

            assert n >= 0

foo()

[x] I have tried using the latest released version of Numba (most recent is
visible in the change log (https://github.com/numba/numba/blob/main/CHANGE_LOG).
[x] I have included a self contained code sample to reproduce the problem.
i.e. it's possible to run as 'python bug.py'.

This happens when n is too big. On my machine I can get n to be 323 and with 324 it segfaults.

ping @DrTodd13

@99991 You can do the body of your nested for loops in another function and that should solve the problem.  I wonder if this MWR obscures the issue a bit because parallelizing a "max" over 3 elements isn't very useful and in fact will slow the program down.  Can the outer loops be collapsed into one loop with pndindex or one of the loops here made into a prange?  If so, then the "max" inside the loop nest will be lowered sequentially and the problem will also go away.  We think we know why this segfault is occurring and the fix is probably moderately difficult and we will be working on it but wanted to give some workarounds in the meantime.

wanted to give some workarounds in the meantime.

Thank you!

I wonder if this MWR obscures the issue a bit because parallelizing a "max" over 3 elements isn't very useful and in fact will slow the program down.

Definitely. But I doubt that anyone would read the 700 lines of filter kernels that this has been condensed from and removing the prange was required for the M in MWR.

You can do the body of your nested for loops in another function and that should solve the problem.

Perhaps, but the original code would then need to pass about 16 parameters, which is a bit much I think.

Can the outer loops be collapsed into one loop with pndindex or one of the loops here made into a prange? If so, then the "max" inside the loop nest will be lowered sequentially and the problem will also go away.

The original code computes something for every pixel of an image without any pixel dependencies (embarrassingly parallel), so both of the loops could make use of prange. Hadn't heard of pnindex yet.
Anyway, when using prange for any loop and changing the assert to i >= 0, there are still segfaults:
from numba import njit, prange
import numpy as np
import os

os.environ["NUMBA_PARALLEL_DIAGNOSTICS"] = "4"

@njit(parallel=True)
def foo():
    for y in prange(1000):
        for x in range(1000):
            values = np.zeros(3)

            i = np.argmax(values)

            assert i >= 0

foo()

I do not know how to read the diagnostics, but it seems that something is still happening with argmax.

@DrTodd13 Is it likely we can fix this by 0.58?

@99991 @stuartarchibald This doesn't appear to be documented anywhere but the parallelism code will only convert a prange to run in parallel if it is able to rewrite the loop into a parfor and it can only do that if there is only one exit from the loop.  Because you have an assert in there, there is more than 1 exit from the loop.  If you think about it, to some extent an assert here is ill-defined because normally you'd hit the first such extraneous control flow but in parallel you might hit a different assert or a different element would cause the assert.  I'm not sure this was planned but it is a bit fortunate because the parfor is turned into a gufunc and gufuncs swallow exceptions anyway.
So, if you take out the assert then the parfors in the loop body (which are the zeros and the argmax) are lowered sequentially and you don't get a segfault.  Suggestions Stuart?

@DrTodd13 maybe:

Document the lack of support (or if it's easy, which I don't think it necessarily will be, catch the issue with >1 loop exits at compile time)?
Fix the stack overflow issue (which seems to be in #9048)?

How does that sound?

@DrTodd13 maybe:

Document the lack of support (or if it's easy, which I don't think it necessarily will be, catch the issue with >1 loop exits at compile time)?
Fix the stack overflow issue (which seems to be in Dynamically allocate parfor schedule. #9048)?

How does that sound?

I added documentation and a warning when a prange loop isn't parallelized (also in PR 9048).  I also fixed the stack overflow issue in 9048.


fix for the TotalMoneyEarned bug

QE causes the "TotalMoneyEarned" to never increase because the prefix set the var player._money, which was used by the player.Money setter to check how much money was earned  to add it to TotalMoneyEarned. This PR removes that line.

Hi,
The description is too much short and struct. Can you explain what was broken?

If a person has QuestEssentials installed and sells items, for example to Pierre or via shipping box over night, the "Total Earnings" stat doesn't increase (but money is added correctly to the player).

This affects achievements, grandpas evaluation, event precondition that check for total money earned (/m precondition).
To reproduce the issue, install QE and its dependencies, start a new save and sell an item to Pierre. Total Earnings will stay 0.

Merged. If you need it, can you please compile new QE version from master branch, release new beta and ask Obamoose for upload it on Nexus mods?


Issue: Grass doesn't go up slopes (Terrain3D)

Is there a setting that allows you to paint the grass up slopes? I'm using the popular Terrain3D plugin to create slopes but the grass will only draw on the ground level of the scene. Repro is pretty simple; get both this grass plugin and Terrain3D, create a scene and add textures according to Terrain3D instructions, then add some hills. Finally, attempt to add and draw grass going up those hills and see that the grass keeps the same height and clips into the ground as you go up.

SimpleGrassTextured draws over physics objects, you must enable "Show Collision" on the "Debug" section of your Terrain3D node to enable the physics of the terrain on the Godot editor


Incorrect dependency example 1.0.0 in readme

The readme contains:
<dependency>
    <groupId>io.github.robwin</groupId>
    <artifactId>markup-document-builder</artifactId>
    <version>1.0.0</version>
</dependency>

this version does not exist in maven central. Perhaps it is useful to update the readme to:
    <dependency>
        <groupId>io.github.swagger2markup</groupId>
        <artifactId>markup-document-builder</artifactId>
        <version>1.1.1</version>
    </dependency>

Too bad the nl.jworks.markdown_to_asciidoc dependency is not in maven central.
https://github.com/Swagger2Markup/swagger2markup-maven-plugin/issues/25

Thx. Fixed


Add support for setting mgmt_gateway under the node settings

Enhancement summary
To simplify the process of configuring distinct mgmt_gateway settings for nodes according to their management subnet allocation within the same fabric.
Which component of AVD is impacted
eos_designs
Use case example
The customer's OT fabric utilizes different management VLANs to oversee various IDF devices across different buildings. This enhancement will simplify the process of adding management gateways either per node or node group based on their allocated management subnets.
Describe the solution you would like
Add mgmt_gateway fabric setting also under Node_type, Node_group, Nodes.
Describe alternatives you have considered
Considering the addition of mgmt_gateway per group_vars, this would result in the creation of multiple groupvars files. Consequently, the customer might need to consistently include new hosts in the groups whenever they need to add new devices.
Additional context
No response
Contributing Guide

[X] I agree to follow this project's Code of Conduct

When implementing this, please make sure to make the setting under node group take precedence over the root key.


Heads up on probably unintentional code L2483

Reading through the code I stumbled upon:
https://github.com/crystal-lang/crystal/blob/master/src/compiler/crystal/semantic/main_visitor.cr#L2371
https://github.com/crystal-lang/crystal/blob/master/src/compiler/crystal/semantic/main_visitor.cr#L2483
I'll leave it to your expertise.

It does seem like the second one should be:
@exception_handler_vars = old_exception_handler_vars

Good catch! Probably nothing bad was triggered so far because it's very uncommon to have nested exception handlers... I'll fix it any way.

Yeah, I figured the unlikelyness of it happening was why it sneaked away from being caught earlier, I just stumbled on it by random chance XD.


watch all files in js

https://github.com/joecohens/laravel-elixir-webpack/blob/master/index.js#L36
.watch(config.get('assets.js.folder') + '/**/*');

this would be great.

Sorry for the delay! I didn't saw the notification :(. Yeah I think this would be useful. I will also change the config.get to the options so that the folder can be configured easily

This should be added in https://github.com/joecohens/laravel-elixir-webpack/commit/44e0bea186b744fa5e1cfc8da39bbaa198a577d9 thanks for the recommendation and if you have any trouble let me know :)

Not sure why you would watch all files. Why isn't this a config option like the way other elixir plugins work? For example, here's how you change the watch path for sass:
elixir.Task.find('sass').watch('./resources/**/*.+(sass|scss)')


Branch filtering with false-positive validation error

Bug Report
Steps to Reproduce:
use project_path:mygroup/myproject:ref_type:branch:ref:* in repositories variable
Expected Result:
It works.
Actual Result:
Repositories must be specified in the organization/repository format.

Environment:
1.0.1 version of this module with terraform 1.4.2
Additional Context:
Gitlab Documentation

Looks like this PR can fix this issue https://github.com/terraform-module/terraform-aws-gitlab-oidc-provider/pull/34

Problem has not been solved, issue is still here , branch has not been merged

This isn't working for me. There's no way to make it work in the repositories variable. I'm always getting:
Repositories must be specified in the organization/repository format.


What if content-length doesn't actually match transferred length?

How should a server handle this scenario?

Was this intentionally closed?

It's a duplicate https://github.com/tus/tus-resumable-upload-protocol/issues/104

Ok!
Sent from mobile, pardon the brevity.

On 20 Dec 2017, at 18:43, Robert Nagy<EMAIL_ADDRESS>wrote:
It's a duplicate #104
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.


feat: More history work

This reorganizes the RfcToBe history serialization. It introduces a reusable serializer that can be applied to other models that need to display histories, returns user metadata for the "by" field, and adds tracking of label history.
The current implementation is fairly intensive of both SQL queries (for label histories) and datatracker API calls (for user name lookups) - I'm sure this can be improved, but I'm leaving it raw for now.
It's apparent from playing with this that we'll want to be sure the RPC personnel are trained to be thoughtful about changing label names. Histories and statistics will get to be a mess if labels are repurposed.

@ajeanmahoney - see the comment about labels above for discussion

be sure the RPC personnel are trained to be thoughtful about changing label names. Histories and statistics will get to be a mess if labels are repurposed.

Ack. Understood


SecuritySetting: Trimming return values from ini (Fixes #39)

Added .Trim() to the values returned from the generated ini file.
Fix for issue PowerShell/SecurityPolicyDsc#39

This change is

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

Codecov Report

Merging #40 into dev will not change coverage.
The diff coverage is 33%.

@@        Coverage Diff        @@
##           dev   #40   +/-   ##
=================================
  Coverage   81%   81%
=================================
  Files        4     4
  Lines      307   307
=================================
  Hits       249   249
  Misses      58    58

@lloydsmithjr03, thanks for signing the contribution license agreement. We will now validate the agreement and then the pull request.
Thanks, Microsoft Pull Request Bot


Android build failed: getCurrentActivity() is not public in ReactContext

Description:
Android build failed with error: getCurrentActivity() is not public in ReactContext.
iOs works is fine for mu.
In RN 0.56 ReactContext is public.
Maybe the reason is in
node_modules/react-native-onesignal/android/libs', not found
but I did not find folder 'libs' in previous releases react-native-onesignal.
Gradle sync was finished with warning:
Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html

Environment
Android Studio 3.1.4
package.json
"react": "16.4.1",
"react-native": "0.56.0",
"react-native-onesignal": "^3.2.6"

build.gradle
ext {
    minSdkVersion = 16
    compileSdkVersion = 27
    buildToolsVersion = "27.0.3"
    targetSdkVersion = 27
    supportLibVersion = "27.1.1"
}

Steps to Reproduce Issue:

react-native run-android

ERROR:
> Task :react-native-onesignal:compileDebugJavaWithJavac FAILED
Putting task artifact state for task ':react-native-onesignal:compileDebugJavaWithJavac' into context took 0.0 secs.
file or directory '/Users/purrweb/Documents/1/Demo/node_modules/react-native-onesignal/android/libs', not found
file or directory '/Users/purrweb/Documents/1/Demo/node_modules/react-native-onesignal/android/src/debug/java', not found
Up-to-date check for task ':react-native-onesignal:compileDebugJavaWithJavac' took 0.009 secs. It is not up-to-date because:
  Task has failed previously.
All input files are considered out-of-date for incremental task ':react-native-onesignal:compileDebugJavaWithJavac'.
Compiling with source level 1.7 and target level 1.7.
file or directory '/Users/purrweb/Documents/1/Demo/node_modules/react-native-onesignal/android/libs', not found
:react-native-onesignal:compileDebugJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).
file or directory '/Users/purrweb/Documents/1/Demo/node_modules/react-native-onesignal/android/src/debug/java', not found
Compiling with JDK Java compiler API.
/Users/purrweb/Documents/1/Demo/node_modules/react-native-onesignal/android/src/main/java/com/geektime/rnonesignalandroid/RNOneSignal.java:111: error: getCurrentActivity() is not public in ReactContext; cannot be accessed from outside package
      Context context = mReactApplicationContext.getCurrentActivity();
                                                ^
Note: /Users/purrweb/Documents/1/Demo/node_modules/react-native-onesignal/android/src/main/java/com/geektime/rnonesignalandroid/RNOneSignal.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error

:react-native-onesignal:compileDebugJavaWithJavac (Thread[Daemon worker Thread 9,5,main]) completed. Took 0.533 secs.

FAILURE: Build failed with an exception.

@alprtv Did you find a solution for this? I'm getting the same error in RN 0.57.0

@dabush-eliel sorry, can't pin point what fixed it. I believe I was getting the error with a fresh 0.57.0 project, but when upgrading to my existing 0.55.4 project to 0.57.0 I didn't get it...

Guys. I have same error on React-Native 0.57.0. Any solution?


Copying over array doesn't seem to trigger view update

I've successfully had an array displayed in the view using the following:

      [${file.uid}] ${file.name} - ${file.generatedChecksum || file.checksum}
      <button click.trigger="playMedia(file)">play</button>

<button click.trigger="startTransmission(file)">download</button>

Where I used to always just push elements onto the array, I had to alter the code and now - in order to ensure there are no duplicate entries - I'm copying/processing the array and then re-assigning this.test with a new array.
   // ... process array and create a new one
   this.files = newArray;

Since I've done this, the UI doesn't seem to update any longer. It usually works for the first entry, but when I add a second, or third entry, the UI still just lists the first. No errors are present, and when I debug the code I can verify that the this.files array has more entries than what is being displayed in the UI.
Is there some property or step I need to take to ensure that the UI updates?

could you put together a gist that demonstrates this issue? https://gist.run/?id=7542e061bc940cde506b
We have extensive tests that cover this use-case- would be surprising if re-assigning the array didn't work.

@jdanyow sure will attempt to do this now.

@jdanyow - Alright here's what I've been able to produce: https://gist.run/?id=9538acd77d0403da3c691fad6149c63a
This uses a library I use called "ArrayKeys" which I included in the source. It essentially manages an internal array but lets you look up it's elements using keys. During it's management of it's internal array _store, it appends the entry using the length value of the existing array.
So perhaps it's not that the array is being overridden each time, but that I'm not using traditional .push()?

ping @jdanyow - have you had a chance to take a look at this issue?

@silverbucket right- aurelia observes array mutation by intercepting calls to splice, push, pop, shift, etc.  If you circumvent those methods the change won't be observed.  This approach is extremely lightweight in terms of memory usage and eliminates the need for dirty-checking but it does have this limitation you're seeing around indexed-assignment.

@jdanyow thanks for the clarification, not ideal - but it makes sense as to why.


ordered query API

rendered
Add the following to BTreeMap

pred_inc
pred_exc
succ_inc
succ_exc
first
last
pred_inc_mut
pred_exc_mut
succ_inc_mut
succ_exc_mut
first_mut
last_mut

and to BTreeSet:

pred_inc
pred_exc
succ_inc
succ_exc
first
last

CC @bluss @aturon @apasel422

Looks good to me.
I assume you went with {first, last} instead of {min, max} to be consistent with the sequence types?
Should there also be remove_{first, last, pred_inc, pred_exc, succ_inc, succ_exc}?
Along those lines, we could also provide something like
fn last_entry(&mut self) -> Option<OccupiedEntry<K, V>>;

fn pred_inc_entry<Q: ?Sized>(&mut self, key: &Q) -> Option<OccupiedEntry<K, V>>
    where K: Borrow<Q>, Q: Ord;

...

I've been experimenting with this in my BST library. It's a niche use-case, but allows code to inspect the key and value before deciding whether to remove it.

@apasel422 Also if your type is actually ordered max..min; min and max is super confusing IMO.
I actually intended to add remove stuff this morning, but obviously totally forgot!
I had also concluded that an Entry API was silly since VacantEntry is nonsensical, but I suppose Option<OccupiedEntry> actually makes sense. If we have Entry do we also want remove?

@Gankro Presumably a dedicated removal method can be (slightly) more efficient than removing through the entry API, due to less bookkeeping. I hate to increase the combinatoric problem even more, but since the map types already have OccupiedEntry::remove and Map::remove, I'm inclined to add both.

It's not clear to me that Only OccupiedEntry would have overhead. Constructing an OccupiedEntry is literally running remove and then copying some local variables into a struct instead of finishing the job. Creating an Entry has extra potential overhead because you need to be ready to make a VacantEntry.

It might be fine to just have the *_entry methods for now then. We could always add remove_* later.

Honestly, I would prefer using the builder suggestion from above.

@benaryorg These are orthogal API discussions. One if for doing direct queries, one is for iterating ranges. While one can be implemented in terms of the other, this is not necessarily efficient or desirable.

@Gankro So you are planning to build two APIs, which one of them might (please) use a builder pattern and the other being cursor-like?
Sorry if I do not quite get the idea behind the second API.

This RFC is proposing an API just for answering queries of the form "who is the predecessor/successor/minimum/etc". All it does is return Option<(&K, &V)>. In principle this can be implemented as efficiently as possible.
The range API that was being discussed above would produce an Iterator<Item = (&K, &V)>. In principle, this can be as effecient as the query API, but in general it can't (more state needs to be maintained to be able to go to the next/prev).
Cursors are Yet Another thing that are not currently being proposed here, and that the standard library does not currently have a notion of. Cursors and iterators -- particularly &mut ones -- must be implemented as separate types because they have different semantics. Iterators say you can always call next, which enables you to get multiple mutable references into the same container safely. However Cursors explicitly must forbid this to be able to soundly perform other mutation operations or even to just "revisit" an element to avoid invalidating references or aliasing mutable references (both are Undefined Behaviour).

Okay, I understand now.
I'll leave function naming to you as I am the worst at that.

@apasel422 Would you be fine with punting on remove/entry APIs until BTreeMap is rewritten to use parent pointers?
I believe they can be added afterwards without an RFC based on "natural API holes" logic.

@Gankro Absolutely.

I've renamed the APIs per discussion.

@Gankro you may want to update your original comment. I read succ_exc_mut and was about to go on a trip to pick out a new color for the bikeshed.

Hm, how about combating the combinatoric explosion with type paramters?
.get_rel::<LE>(&Q) -> Option<(&K, &V)>;

If get where unstable it could even be defined as
fn get<Ord=EQ>(&Q) -> Option<(&K, &V)>;

@Kimundi I've talked about something like that with @Gankro in the past: https://github.com/Gankro/collect-rs/pull/120#issuecomment-74443845.

:bell: HERE YE HERE YE THIS RFC IS ENTERING ITS FINAL COMMENT PERIOD :bell:

(It would be good for the typos that @apasel422 has noticed to be fixed if/before this is merged.)
I find the combinatorics here really really bad. It seems a little crazy to add so many methods for what I suspect are relatively niche use-cases. @Gankro, I know you're rabidly against any use of enums in APIs to collapse functionality (i.e. the pred/next Bound-based API you propose as an alternative) but it seems to me that this case is a pretty good way to collapse an explosion into something that's actually managable. The methods could even be named something like max_before/min_after or max_upto/min_from (or something like that) which makes their use much more obvious.

Returning an OccupiedEntry for {min, max, lt, le, ge, gt} subsumes remove and get_mut. I propose that we only add get_* and *_entry varieties of these queries, regardless of whether we combine them via an enum or provide separate methods:
impl<K, V> Map<K, V> {
    fn get_lt<Q: ?Sized>(&self, key: &Q) -> Option<(&K, &V)>;
    fn lt_entry<Q: ?Sized>(&mut self, key: &Q) -> Option<OccupiedEntry<K, V>>;
    // ... `le`, `ge`, `gt`
}

or
enum Query<'a, Q: 'a + ?Sized> {
    Min,
    Lt(&'a Q),
    Le(&'a Q),
    Ge(&'a Q),
    Gt(&'a Q),
    Max,
}

impl<K, V> Map<K, V> {
    fn query<Q: ?Sized>(&self, query: Query<Q>) -> Option<(&K, &V)>;
    fn query_entry<Q: ?Sized>(&mut self, query: Query<Q>) -> Option<OccupiedEntry<K, V>>;
}

I disagree that it's niche -- it's one of the primary reasons to use an ordered map.

Is there also use for a "nearest" version? I e, if the treemap looks for 1000 and can only find 900 and 1010, it will choose 1010 because it is nearest. That seems useful - although maybe that will require some additional trait bound (e g Sub or Add)?
Bikeshed wise, I don't know why min and max are not labelled get_min and get_max, if they - like get_le and friends - get an item in the map? That seems inconsistent.

This, please! I'm missing this for a while. Otherwise there's very little reason to have an ordered map!
It's a shame it requires so much code though, we need those parent pointers.

@arthurprs parent pointers wouldn't solve the duplication, it's a pure descent algorithm. (I suppose it would reduce duplication with other APIs.)

In think that the following is missing:

a description of what each function in the API does. I cannot find anywhere a description of what get_le does (should be obvious to everybody, but it also should be in the text of the RFC).
what is the algorithmic complexity of each API function (at least the worst case complexity should be specified)
what is the space complexity of each API function (does any of the functions allocate memory?)

When seeing all the get_le|gt|... I wonder:

why can't a function get(K, CMP) be provided instead, where the user can pass whatever cmp it wants (e.g. via a lambda)? (why restrict ourself to le|gt|...).

I see two main use-cases for the query API:

queries with the same "order" as the one used by the data-structure,
queries with an arbitrary different order.

So I basically expected to see two functions get(K) and get(K, cmp) (+ their _mut counterparts) for these two use-cases.
@gankro you asked for feedback, I hope this is some constructive one :P

The time and space complexity of these operations is an implementation
detail that will end up changing once parent pointers are added. However,
it may be useful to point out that the simplest implementation is based on
iterators. get_lt(k), for example, is map.iter().rev().find(|e| e.0 < k).
Can you provide an example of how would you use the user-provided closure
API, and the full signature of the method? I'm not sure how the predecessor
function, for example, could be written in terms of it.
On Thursday, August 6, 2015, gnzlbg<EMAIL_ADDRESS>wrote:

In think that the following is missing:

a description of what each function in the API does. I cannot find
anywhere a description of what get_le does (should be obvious to
everybody, but it also should be in the text of the RFC).
what is the algorithmic complexity of each API function (at least
the worst case complexity should be specified)
what is the space complexity of each API function (does any of the
functions allocate memory?)

When seeing all the get_le|gt|... I wonder:

why can't a function get(K, CMP) be provided instead, where the user
can pass whatever cmp it wants (e.g. via a lambda)? (why restrict ourself
to le|gt|...).

I see two main use-cases for the query API:

queries with the same "order" as the one used by the data-structure,
queries with an arbitrary different order.

So I basically expected to see two functions get(K) and get(K, cmp) (+
their _mut counterparts) for these two use-cases.
@gankro https://github.com/gankro you asked for feedback, I hope this
is some constructive one :P
—
Reply to this email directly or view it on GitHub
https://github.com/rust-lang/rfcs/pull/1195#issuecomment-128339278.

The time and space complexity of these operations is an implementation
detail that will end up changing once parent pointers are added. However,
it may be useful to point out that the simplest implementation is based on
iterators. get_lt(k), for example, is map.iter().rev().find(|e| e.0 < k).

Basically I just want to know if I can call these in a loop without ending up in N^2 complexity or blowing up the stack. If I'm doing something latency-related I also need if they allocate any memory in the heap.
If the implementation improves the complexity in the future, that is a non-breaking change, but the current complexity guarantees should be there.

Can you provide an example of how would you use the user-provided closure
API, and the full signature of the method? I'm not sure how the predecessor
function, for example, could be written in terms of it.

I'm not sure either, but for the _lt|_gt|_... methods I'd rather write  get(k, |a, e| e.0 < a.0) or get(k, lt)

I don't think this RFC needs to make complexity guarantees. People can decide to use these methods based on the public documentation of their current complexity, not the contents of this RFC. But if you need the predecessor of a key for a certain algorithm, you have to find it somehow, so providing these APIs will be beneficial regardless of their complexity. Even if they are implemented completely naively at first, code that calls the methods instead of doing a manual iterator-based search will be made more efficient automatically when the implementation improves.
I don't understand what get(k, |a, e| e.0 < a.0) would do. What is the purpose of passing k there?

An alternative to the enum would also be a static dispatch version, similar to the way Range worked out
struct Min;
struct Max;
struct Le<Q: ?Sized>(Q);
// ...

trait Query<K, V, Selector: ?Sized> {
    fn query(&self, query: &Selector) -> Option<(&K, &V)>;
    fn query_mut(&mut self, query: &Selector) -> Option<(&K, &mut V)>;
    // maybe query_entry as well
}

impl<K, V> Query<K, V, Min> for Map<K, V> {
    /* ... */
}

impl<K, V, Q> Query<K, V, Le<Q>> for Map<K, V>
        where K: Borrow<Q> {
    /* ... */
}
// ...

Cons: you'd have to import std::collections::Query to get these methods on your map.

You actually wouldn't have to import the query trait, because we could add inherent methods to the map that simply call out to the appropriate impl. You would have to import the query structs themselves, though, and there would have to be a different trait for set queries, which won't expose mutable elements.
I'm not opposed to the static dispatch approach, because it can be nice to represent the queries themselves as values (e.g. passing around Lt(&5)).

To avoid having a separate trait for Set, you could have Query and QueryMut and make the return an associated type and implement them on referefences (to avoid needing HKT-s).
trait Query<Selector: ?Sized> {
    type Output;
    fn query(self, query: &Selector) -> Option<Self::Output>;
}

trait QueryMut<Selector: ?Sized> {
    type Output;
    fn query_mut(self, query: &Selector) -> Option<Self::Output>;
}

impl<'a, K, V> Query<Min> for &'a Map<K, V> {
    type Output = (&'a K, &'a V);

    fn query(self, query: &Selector) -> Option<Self::Output> {
        /* ... */
    }
}

impl<'a, K, V> QueryMut<Min> for &'a mut Map<K, V> {
    type Output = (&'a K, &'a mut V);

    fn query_mut(self, query: &Selector) -> Option<Self::Output> {
        /* ... */
    }
}

impl<'a, E> Query<Min> for &'a Set<E> {
    type Output = &'a E;

    fn query(self, query: &Selector) -> Option<Self::Output> {
        /* ... */
    }
}

If you do provide inherent methods though, I don't know if there is much value in using the same trait (which would really only ever show up to bound the argument of the inherent methods).

@cristicbz I've put a POC implementation of what you are suggesting here: https://github.com/apasel422/bst/commit/a644a27bec44a5e4be55ab35157fd0931a2512d9.

Here's a thought on an API variant to deal with combinatorics while still being friendly:
fn max<Q: ?Sized>(&self, range: AnyRange<&Q>) -> Option<(&K, &V)>
    where K: Borrow<Q>, Q: Ord;

fn min<Q: ?Sized>(&self, range: AnyRange<&Q>) -> Option<(&K, &V)>
    where K: Borrow<Q>, Q: Ord;

fn max_entry<Q: ?Sized>(&mut self, range: AnyRange<&Q>) -> Option<OccupiedEntry<K, V>>
    where K: Borrow<Q>, Q: Ord;

fn min_entry<Q: ?Sized>(&mut self, range: AnyRange<&Q>) -> Option<OccupiedEntry<K, V>>
    where K: Borrow<Q>, Q: Ord;

Given inclusive ranges, you can cover all of the cases you wanted to with your API, without requiring any extra imports or names to be used.

@aturon The inability to express get_gt is what lead me to suggest new types. Agreed, ranges would be neater, but short of introducing a new range type (>x.., the unary greater than operator :P) the result would be inconsistent.

FWIW, it seems C++'s equivalent container std::map only offers functionality (essentially) equivalent to what we currently offer, but with C++'s iterators (i.e. independent endpoints, and syntactically nicer for the simplest case) and const-overloading.

The libs team has decided to close this RFC pending investigating alternative API solutions.
In particular I think there's a promising opportunity with a range builder pattern.
For now this functionality could be provided by an external crate -- at least semantically, not necessarily perf-wise -- on top of range. A parent pointer impl should address perf.


Define all preferences in core

This will help in #11130 (cc @sprintr).
It defines all preferences we have in core.

@MarcelGerber This looks fine to me. We can get this in so I can remove them from data.json and add descriptions to them.

can we remove data.json after this is merged? (part of #11200 )

We only need language and path from data.json since they are not prefs but layers of the preferences system. We can hardcode them in main.js


Jumps broken after adding the garbage feature

The jumps just broke overall, also I had to edit a copied function.


Could not find file

Running this on an ASP.NET Core 1.0 project targeting .NET Framework 4.6, with the then-proposed directory layout. Here's the output:
Microsoft (R) .NET Portability Analyzer <IP_ADDRESS> (alpha)
Copyright (C) Microsoft Corporation. All rights reserved.
More information is available at http://go.microsoft.com/fwlink/?LinkId=506955

Detecting assembly references                      [Done]
* Could not find file: 'D:\Projekte\MyProjectName\Code\artifacts\bin\MyWebAssemblyName\'
* No files were found to upload.

Finding source line information
	                                               [Failed]

This error seem to occur when we use the new csproj file format, really bad.
I have my code in shared projects. If add a reference of it to a "classic" project it works fine, but with the new format it fails...

My original report was for project.json, which was available at that time. But it doesn't seem this tool gets any maintenance. With the upcoming .NET Standard/Core 2.0, this probably isn't much needed anymore anyway.

I'm getting the same error, the analysis is unable to find folders that do exist.  :-(
Detecting assembly references                      [Done]
* Could not find file: 'C:\Users\[me]\Documents\Projects\CommonUtilitiesCore\CommonUtilitiesCore\bin\Debug\netcoreapp1.1\'
* Could not find file: 'C:\Users\[me]\Documents\Projects\CommonUtilitiesCore\CommonUtilitiesCoreTest\bin\Debug\netcoreapp1.1\'
* No files were found to upload.

Finding source line information
                                                       [Failed]
                                                       [Failed]

Hi,
Thanks for the issue feedback. It was because we were looking for <OutputFileName> in our ProjectAnalyzer for the binaries output from VS projects. I have a PR open for it #430 but am waiting to merge it in because the solution only works on VS2017 right now.  If you want, you can pull from that branch and build it.

cool, thanks for the update!


Release

Codecov Report

Merging #295 into deploy will decrease coverage by 1.15%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           deploy     #295      +/-   ##
==========================================
- Coverage   86.01%   84.85%   -1.16%
==========================================
  Files         134      139       +5
  Lines       15485    15696     +211
==========================================
  Hits        13319    13319
- Misses       2166     2377     +211

Impacted Files
Coverage Δ

pulsar/apps/http/stream.py
76.59% <0%> (-2.13%)
:arrow_down:

pulsar/utils/http/parser.py
91.28% <0%> (-0.42%)
:arrow_down:

pulsar/utils/config.py
96.34% <0%> (-0.01%)
:arrow_down:

pulsar/apps/wsgi/content.py
88.13% <0%> (ø)
:arrow_up:

pulsar/apps/wsgi/routers.py
93.08% <0%> (ø)
:arrow_up:

pulsar/async/mailbox.py
85.8% <0%> (ø)
:arrow_up:

pulsar/apps/test/wsgi.py
100% <0%> (ø)
:arrow_up:

pulsar/apps/data/pulsards/__init__.py
0% <0%> (ø)
:arrow_up:

pulsar/apps/wsgi/__init__.py
100% <0%> (ø)
:arrow_up:

pulsar/apps/wsgi/route.py
89.72% <0%> (ø)
:arrow_up:

... and 5 more

Continue to review full report at Codecov.

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


Expression of type System.Linq.Expressions.ConstantExpression is not supported

Not sure why this exception happen
has 3 nodes: Game, GameInfor, User
This query run well on neo4j
match (g:Game)-[:GAME_HAS_GAMEINFOR]->(n:GameInfor)<-[:USER_HAS_GAMEINFOR]-      (u:User)
where g.Name = 'GreenDNA'
return n,u
order by n.SupportScore
limit 10
but couldn't make it run on Neo4jClient
graphClient.Cypher
                    .Match("(g:Game)-[:GAME_HAS_GAMEINFOR]->(n:GameInfor)<-[:USER_HAS_GAMEINFOR]-(u:User)")
                    .Where("g.Name = 'GreenDNA'")
                    .Return((n, u) => new SupportRank
                    {
                        User = u.As<SocialUser>(),
                        GameInfo = n.As<UserGameInfo>(),
                        Position = 0
                    })
                    .Results;

Error: Expression of type System.Linq.Expressions.ConstantExpression is not supported thrown
public class SupportRank
{
    public SocialUser User { get; set; }
    public UserGameInfo GameInfo { get; set; }
    public int Position { get; set; }
    public SupportRank(){}
    public SupportRank(SocialUser user, UserGameInfo gameInfo, int position)
    {
        this.User = user;
        this.GameInfo = gameInfo;
        this.Position = position;
    }
}

public class SocialUser
{

    public string Username { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Year { get; set; }
    public int Month { get; set; }
    public int Day { get; set; }
    public string Gender { get; set; }
    public string Country { get; set; }
    public string AvatarURL { get; set; }
    public bool isLogged { get; set; }
    public bool IsBanned { get; set; }
    public SocialUser()
        : base()
    {

    }

    public SocialUser(string username, string firstName, string lastName,
        int year, int month, int day, string gender, string country,
        string avatarURL, bool isLogged, bool isBanned)
    {
        this.Username = username;
        this.FirstName = firstName;
        this.LastName = lastName;
        this.Year = year;
        this.Month = month;
        this.Day = day;
        this.Gender = gender;
        this.Country = country;
        this.AvatarURL = avatarURL;
        this.isLogged = isLogged;
        this.IsBanned = IsBanned;
    }
}
public class UserGameInfo
{
    public string ID { get; set; }
    public int AchievementDifficulty { get; set; }
    public double UserAbility { get; set; }
    public string GameInfo { get; set; }
    public int NoCorrect { get; set; }
    public int NoIncorrect { get; set; }
    public string ArrayDifficulties { get; set; }
    public int SupportScore { get; set; }
    public int ShareScore { get; set; }
    public int AchievementScore { get; set; }
    public UserGameInfo()
    {
    }
    public UserGameInfo(string id, int achievementDifficulty, double userAbility,
        string gameInfo, int noCorrect, int noIncorrect, string arrayDifficulties,
        int supportScore, int shareScore, int achievementScore)
    {
        this.ID = id;
        this.AchievementDifficulty = achievementDifficulty;
        this.UserAbility = userAbility;
        this.GameInfo = gameInfo;
        this.NoCorrect = noCorrect;
        this.NoIncorrect = noIncorrect;
        this.ArrayDifficulties = arrayDifficulties;
        this.SupportScore = supportScore;
        this.ShareScore = shareScore;
        this.AchievementScore = achievementScore;
    }
}

I'm on my phone, and not near a computer, but have you tried
Return((n, u) => new SupportRank
{
User = u.As(),
GameInfo = n.As(),
Position = 0
})
Or whatever your classes are called?
-----Original Message-----
From: "Phạm Quốc Thắng"<EMAIL_ADDRESS>Sent: 02/08/2015 09:43
To: "Readify/Neo4jClient"<EMAIL_ADDRESS>Subject: [Neo4jClient] Expression of typeSystem.Linq.Expressions.ConstantExpression is not supported (#104)
Not sure why this exception happen
has 3 nodes: Game, GameInfor, User
This query run well on neo4j
match (g:Game)-[:GAME_HAS_GAMEINFOR]->(n:GameInfor)<-[:USER_HAS_GAMEINFOR]-(u:User)
where g.Name = 'GreenDNA'
return n,u
order by n.SupportScore
limit 10
but couldn't make it run on Neo4jClient
graphClient.Cypher
.Match("(g:Game)-[:GAME_HAS_GAMEINFOR]->(n:GameInfor)<-[:USER_HAS_GAMEINFOR]-(u:User)")
.Where("g.Name = 'GreenDNA'")
.Return((n, u) => new SupportRank
{
User = u.As(),
GameInfo = n.As(),
Position = 0
})
.Results;
Error: Expression of type System.Linq.Expressions.ConstantExpression is not supported thrown
—
Reply to this email directly or view it on GitHub.

You solution is the same with what I'm using and having trouble with

Sorry - phone strips out the angle brackets, I can't look at this today but it would be handy to know:
a) What version of N4jClient you're using
b) The full exception text
Ta

I'm using <IP_ADDRESS>2
Exception text:
An exception of type 'System.NotSupportedException' occurred in Neo4jClient.dll but was not handled in user code

Additional information: Expression of type System.Linq.Expressions.ConstantExpression is not supported.

Do you not get a stacktrace at all?

Yeah I have it returned to Postman
""StackTrace": "   at Neo4jClient.Cypher.CypherReturnExpressionBuilder.BuildStatement(Expression sourceExpression, MemberInfo targetMember, CypherCapabilities capabilities, IEnumerable1 jsonConvertersThatTheDeserializerWillUse, Boolean camelCaseProperties) in c:\\\\TeamCity\\\\buildAgent\\\\work\\\\5bae2aa9bce99f44\\\\Neo4jClient\\\\Cypher\\\\CypherReturnExpressionBuilder.cs:line 228\\\r\\\n   at Neo4jClient.Cypher.CypherReturnExpressionBuilder.<>c__DisplayClass5.<BuildText>b__4(MemberBinding binding) in c:\\\\TeamCity\\\\buildAgent\\\\work\\\\5bae2aa9bce99f44\\\\Neo4jClient\\\\Cypher\\\\CypherReturnExpressionBuilder.cs:line 107\\\r\\\n   at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext()\\r\\n   at System.Linq.Buffer1..ctor(IEnumerable1 source)\\r\\n   at System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source)\\\r\\\n   at Neo4jClient.Cypher.CypherReturnExpressionBuilder.BuildText(MemberInitExpression expression, CypherCapabilities capabilities, IEnumerable1 jsonConvertersThatTheDeserializerWillUse, Boolean camelCaseProperties) in c:\\TeamCity\\buildAgent\\work\\5bae2aa9bce99f44\\Neo4jClient\\Cypher\\CypherReturnExpressionBuilder.cs:line 110\\r\\n   at Neo4jClient.Cypher.CypherReturnExpressionBuilder.BuildText(LambdaExpression expression, CypherCapabilities capabilities, IEnumerable1 jsonConvertersThatTheDeserializerWillUse, Boolean camelCaseProperties) in c:\\\\TeamCity\\\\buildAgent\\\\work\\\\5bae2aa9bce99f44\\\\Neo4jClient\\\\Cypher\\\\CypherReturnExpressionBuilder.cs:line 56\\\r\\\n   at Neo4jClient.Cypher.CypherFluentQuery.Return[TResult](LambdaExpression expression) in c:\\\\TeamCity\\\\buildAgent\\\\work\\\\5bae2aa9bce99f44\\\\Neo4jClient\\\\Cypher\\\\CypherFluentQueryReturn.cs:line 40\\r\\n   at Neo4jClient.Cypher.CypherFluentQuery.Return[TResult](Expression1 expression) in c:\\\\TeamCity\\\\buildAgent\\\\work\\\\5bae2aa9bce99f44\\\\Neo4jClient\\\\Cypher\\\\CypherFluentQueryReturn.cs:line 72\\r\\n   at GSEPWebAPI.Models.Repositories.Education.SupportRankRepository.GetRank(String username, String gameName) in d:\\gsep\\SOURCECODE\\GSEPWebAPI-RepositoryPattern\\GSEPWebAPI\\Models\\Repositories\\Education\\SupportRankRepository.cs:line 30\\r\\n   at GSEPWebAPI.Services.Education.SupportRankService.GetRank(String username, String gameName) in d:\\gsep\\SOURCECODE\\GSEPWebAPI-RepositoryPattern\\GSEPWebAPI\\Services\\Education\\SupportRankService.cs:line 37\\r\\n   at GSEPWebAPI.Controllers.Education.EducationSupportRankController.GetRank(String gameName) in d:\\gsep\\SOURCECODE\\GSEPWebAPI-RepositoryPattern\\GSEPWebAPI\\Controllers\\Education\\EducationSupportRankController.cs:line 36\\r\\n   at lambda_method(Closure , Object , Object[] )\\r\\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.b__9(Object instance, Object[] methodParameters)\\r\\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\\r\\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary2 arguments, CancellationToken cancellationToken)\\\r\\\n--- End of stack trace from previous location where exception was thrown ---\\\r\\\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\\\r\\\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\\\r\\\n   at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()\\r\\n   at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\\r\\n--- End of stack trace from previous location where exception was thrown ---\\r\\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\\r\\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\\r\\n   at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()\\\r\\\n   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()\\\r\\\n--- End of stack trace from previous location where exception was thrown ---\\\r\\\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\\\r\\\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\\\r\\\n   at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()\\r\\n   at System.Web.Http.Filters.AuthorizationFilterAttribute.d__2.MoveNext()\\r\\n--- End of stack trace from previous location where exception was thrown ---\\r\\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\\r\\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\\r\\n   at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()\\\r\\\n   at System.Web.Http.Controllers.AuthenticationFilterResult.<ExecuteAsync>d__0.MoveNext()\\\r\\\n--- End of stack trace from previous location where exception was thrown ---\\\r\\\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\\\r\\\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\\\r\\\n   at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()\\r\\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()"

Wow Great! The exception is gone.
However, I want to set a fixed value when I get from Neo4j to position and then changed its value later.
Any workaround instead of set it to 0?

Are you going to want something other than zero for the fixed value?

Okay just don't set it in code and automatically it will get 0 value :D. Thanks

Yup, or if you want to default to something else you can always add that to your parameterless constructor, but obviously that effects everywhere.

I get the same thing with Boolean constants.  I'm calling similar code twice, setting it false in one case and true in another.  Hopefully this can get resolved soon.

As a work around - I would use the With clause to set your bool const:
public static void CallCypher(IGraphClient gc, bool val)
{
	var query = gc.Cypher
		.Match("(n)")
		.With($"n, {val} as b") //Return 'val' as 'b' which is then set in the Return clause.
		.Return((n, b) => new ReturnClassWithBool
		{
			BooleanValue = b.As<bool>(),
			Count = n.Count()
		});

	var res = query.Results;
	res.Dump();
}

using the following class as the return class.
public class ReturnClassWithBool
{
	public bool BooleanValue { get; set; }
	public long Count { get; set; }
}

Thanks! Perfect


No peers found and crashing with the below error

updating the peers doesn't help

Same here
2021-01-26 12:41:01 UTC [Info] Created GraphQL server at: http://localhost:3085/graphql
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWJ9mNdbUXUpUNeMnejRumKzmQF15YeWwAPAhTAWB6dhiv: [/dns4/seed-one.testworld.o1test.net/tcp/10001]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWFcGGeUmbmCNq51NBdGvCWjiyefdNZbDXADMK5CDwNRm5: [/dns4/seed-two.testworld.o1test.net/tcp/10001]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWAHKSGja34LwiQnjTZrYZHLWftN7byM3yFPqzH7ZbyEeP: [/ip4/<IP_ADDRESS>/tcp/10512]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWNrqXJP5tgfrkWqQMqhFdXTszgms5zkLAawthdZmUDSQf: [/ip4/<IP_ADDRESS>/tcp/10505]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWKTZHfamPPeE7CLiMPNGyFtBzdY6SoQ4TovQMSVrmXeni: [/ip4/<IP_ADDRESS>/tcp/10506]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWDRa8BBsjtfusf7N7ith7ivKwn79ykv9bmz6ffAANQqfU: [/ip4/<IP_ADDRESS>/tcp/10515]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWJ2A5x6Qzj6Dmgvu7b5xm8uzTkFzoR9YwaRvhKEAT2Jaz: [/ip4/<IP_ADDRESS>/tcp/10511]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWGERiMAkFgeH1hZyhJYahDoJTGK8ZQPHJVaReNBzn7QPQ: [/ip4/<IP_ADDRESS>/tcp/10508]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWDq4jr5z8dWakQwiRXqmsQDpbVEz1jYsYgE3PtyudTS6n: [/ip4/<IP_ADDRESS>/tcp/10516]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWNwpi3mj3i7ZXeNwPmXSRPfzKZfwef2sVDoKcRNHuSTCN: [/ip4/<IP_ADDRESS>/tcp/10520]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWAJv4mP59RgUTpvuykpADXtcayL34cjQYcFzdfT1fpWSm: [/ip4/<IP_ADDRESS>/tcp/10504]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWHuRgSh7Ue2V272gCpy45kjeimRxFifdSAcuMSaimPoqq: [/ip4/<IP_ADDRESS>/tcp/10517]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWMahLxuG14tQDPEivKfd3fATUuiPHfsEVwjoBs4xi48Yx: [/ip4/<IP_ADDRESS>/tcp/10518]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWGLqSpP7PvjCQ3wgzezpWQe7oFitHZs4SqzwSppN8Mgx9: [/ip4/<IP_ADDRESS>/tcp/10507]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWNu95J3M5Z4LLrXRN74MgYTASx4Ty6Z87h3jxfvsaoLJc: [/ip4/<IP_ADDRESS>/tcp/10502]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWKjVBmPevpJBUTfyZkBCo7YxWnv4PZb5Qbq4qwha59voW: [/ip4/<IP_ADDRESS>/tcp/10519]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWQ3MobQHAM9v32oNwomHbd5G1vsnFLJ8wxUhVMMhuiVvn: [/ip4/<IP_ADDRESS>/tcp/10510]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWFYTYmgKAp2nYBkaeLxvHS7DAQuobmrqkXJbSxZ18Vh84: [/ip4/<IP_ADDRESS>/tcp/10514]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWDyb2ZXBtxHZLq3Rbc239qN2h4Ko4b9CneUba5mhUVyVf: [/ip4/<IP_ADDRESS>/tcp/10513]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWPwBndsKgcwBu5Dqc8GRfs16gF39ziXJr3yS9BDarQrEo: [/ip4/<IP_ADDRESS>/tcp/10503]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWBm3Ev33AUSEoLUj5zqydMLiFf8dAgWW3ew3NCZYNNPje: [/ip4/<IP_ADDRESS>/tcp/10509]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWGpMHa9Vd3Y3vuJpHwDqWkr3LPMeSaLbYwyZXKf3sSsJn: [/ip4/<IP_ADDRESS>/tcp/10501]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWFcGGeUmbmCNq51NBdGvCWjiyefdNZbDXADMK5CDwNRm5: [/dns4/seed-two.testworld.o1test.net/tcp/10001]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWAHKSGja34LwiQnjTZrYZHLWftN7byM3yFPqzH7ZbyEeP: [/ip4/<IP_ADDRESS>/tcp/10512]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWJ9mNdbUXUpUNeMnejRumKzmQF15YeWwAPAhTAWB6dhiv: [/dns4/seed-one.testworld.o1test.net/tcp/10001]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWNrqXJP5tgfrkWqQMqhFdXTszgms5zkLAawthdZmUDSQf: [/ip4/<IP_ADDRESS>/tcp/10505]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWKTZHfamPPeE7CLiMPNGyFtBzdY6SoQ4TovQMSVrmXeni: [/ip4/<IP_ADDRESS>/tcp/10506]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWDRa8BBsjtfusf7N7ith7ivKwn79ykv9bmz6ffAANQqfU: [/ip4/<IP_ADDRESS>/tcp/10515]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWJ2A5x6Qzj6Dmgvu7b5xm8uzTkFzoR9YwaRvhKEAT2Jaz: [/ip4/<IP_ADDRESS>/tcp/10511]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWDq4jr5z8dWakQwiRXqmsQDpbVEz1jYsYgE3PtyudTS6n: [/ip4/<IP_ADDRESS>/tcp/10516]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWNwpi3mj3i7ZXeNwPmXSRPfzKZfwef2sVDoKcRNHuSTCN: [/ip4/<IP_ADDRESS>/tcp/10520]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWAJv4mP59RgUTpvuykpADXtcayL34cjQYcFzdfT1fpWSm: [/ip4/<IP_ADDRESS>/tcp/10504]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWGERiMAkFgeH1hZyhJYahDoJTGK8ZQPHJVaReNBzn7QPQ: [/ip4/<IP_ADDRESS>/tcp/10508]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWHuRgSh7Ue2V272gCpy45kjeimRxFifdSAcuMSaimPoqq: [/ip4/<IP_ADDRESS>/tcp/10517]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWGLqSpP7PvjCQ3wgzezpWQe7oFitHZs4SqzwSppN8Mgx9: [/ip4/<IP_ADDRESS>/tcp/10507]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWKjVBmPevpJBUTfyZkBCo7YxWnv4PZb5Qbq4qwha59voW: [/ip4/<IP_ADDRESS>/tcp/10519]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWNu95J3M5Z4LLrXRN74MgYTASx4Ty6Z87h3jxfvsaoLJc: [/ip4/<IP_ADDRESS>/tcp/10502]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWMahLxuG14tQDPEivKfd3fATUuiPHfsEVwjoBs4xi48Yx: [/ip4/<IP_ADDRESS>/tcp/10518]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWQ3MobQHAM9v32oNwomHbd5G1vsnFLJ8wxUhVMMhuiVvn: [/ip4/<IP_ADDRESS>/tcp/10510]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWFYTYmgKAp2nYBkaeLxvHS7DAQuobmrqkXJbSxZ18Vh84: [/ip4/<IP_ADDRESS>/tcp/10514]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWDyb2ZXBtxHZLq3Rbc239qN2h4Ko4b9CneUba5mhUVyVf: [/ip4/<IP_ADDRESS>/tcp/10513]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWPwBndsKgcwBu5Dqc8GRfs16gF39ziXJr3yS9BDarQrEo: [/ip4/<IP_ADDRESS>/tcp/10503]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWBm3Ev33AUSEoLUj5zqydMLiFf8dAgWW3ew3NCZYNNPje: [/ip4/<IP_ADDRESS>/tcp/10509]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWGpMHa9Vd3Y3vuJpHwDqWkr3LPMeSaLbYwyZXKf3sSsJn: [/ip4/<IP_ADDRESS>/tcp/10501]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to routing advertise: failed to find any peer in table
2021-01-26 12:41:06 UTC [Warn] starting libp2p up failed: $error
error: {
"string":
"RPC #29 failed: "libp2p error error: failed to find any peer in table""
}

Same here
2021-01-26 12:41:01 UTC [Info] Created GraphQL server at: http://localhost:3085/graphql
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWJ9mNdbUXUpUNeMnejRumKzmQF15YeWwAPAhTAWB6dhiv: [/dns4/seed-one.testworld.o1test.net/tcp/10001]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWFcGGeUmbmCNq51NBdGvCWjiyefdNZbDXADMK5CDwNRm5: [/dns4/seed-two.testworld.o1test.net/tcp/10001]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWAHKSGja34LwiQnjTZrYZHLWftN7byM3yFPqzH7ZbyEeP: [/ip4/<IP_ADDRESS>/tcp/10512]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWNrqXJP5tgfrkWqQMqhFdXTszgms5zkLAawthdZmUDSQf: [/ip4/<IP_ADDRESS>/tcp/10505]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWKTZHfamPPeE7CLiMPNGyFtBzdY6SoQ4TovQMSVrmXeni: [/ip4/<IP_ADDRESS>/tcp/10506]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWDRa8BBsjtfusf7N7ith7ivKwn79ykv9bmz6ffAANQqfU: [/ip4/<IP_ADDRESS>/tcp/10515]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWJ2A5x6Qzj6Dmgvu7b5xm8uzTkFzoR9YwaRvhKEAT2Jaz: [/ip4/<IP_ADDRESS>/tcp/10511]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWGERiMAkFgeH1hZyhJYahDoJTGK8ZQPHJVaReNBzn7QPQ: [/ip4/<IP_ADDRESS>/tcp/10508]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWDq4jr5z8dWakQwiRXqmsQDpbVEz1jYsYgE3PtyudTS6n: [/ip4/<IP_ADDRESS>/tcp/10516]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWNwpi3mj3i7ZXeNwPmXSRPfzKZfwef2sVDoKcRNHuSTCN: [/ip4/<IP_ADDRESS>/tcp/10520]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWAJv4mP59RgUTpvuykpADXtcayL34cjQYcFzdfT1fpWSm: [/ip4/<IP_ADDRESS>/tcp/10504]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWHuRgSh7Ue2V272gCpy45kjeimRxFifdSAcuMSaimPoqq: [/ip4/<IP_ADDRESS>/tcp/10517]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWMahLxuG14tQDPEivKfd3fATUuiPHfsEVwjoBs4xi48Yx: [/ip4/<IP_ADDRESS>/tcp/10518]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWGLqSpP7PvjCQ3wgzezpWQe7oFitHZs4SqzwSppN8Mgx9: [/ip4/<IP_ADDRESS>/tcp/10507]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWNu95J3M5Z4LLrXRN74MgYTASx4Ty6Z87h3jxfvsaoLJc: [/ip4/<IP_ADDRESS>/tcp/10502]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWKjVBmPevpJBUTfyZkBCo7YxWnv4PZb5Qbq4qwha59voW: [/ip4/<IP_ADDRESS>/tcp/10519]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWQ3MobQHAM9v32oNwomHbd5G1vsnFLJ8wxUhVMMhuiVvn: [/ip4/<IP_ADDRESS>/tcp/10510]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWFYTYmgKAp2nYBkaeLxvHS7DAQuobmrqkXJbSxZ18Vh84: [/ip4/<IP_ADDRESS>/tcp/10514]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWDyb2ZXBtxHZLq3Rbc239qN2h4Ko4b9CneUba5mhUVyVf: [/ip4/<IP_ADDRESS>/tcp/10513]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWPwBndsKgcwBu5Dqc8GRfs16gF39ziXJr3yS9BDarQrEo: [/ip4/<IP_ADDRESS>/tcp/10503]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWBm3Ev33AUSEoLUj5zqydMLiFf8dAgWW3ew3NCZYNNPje: [/ip4/<IP_ADDRESS>/tcp/10509]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWGpMHa9Vd3Y3vuJpHwDqWkr3LPMeSaLbYwyZXKf3sSsJn: [/ip4/<IP_ADDRESS>/tcp/10501]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWFcGGeUmbmCNq51NBdGvCWjiyefdNZbDXADMK5CDwNRm5: [/dns4/seed-two.testworld.o1test.net/tcp/10001]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWAHKSGja34LwiQnjTZrYZHLWftN7byM3yFPqzH7ZbyEeP: [/ip4/<IP_ADDRESS>/tcp/10512]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWJ9mNdbUXUpUNeMnejRumKzmQF15YeWwAPAhTAWB6dhiv: [/dns4/seed-one.testworld.o1test.net/tcp/10001]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWNrqXJP5tgfrkWqQMqhFdXTszgms5zkLAawthdZmUDSQf: [/ip4/<IP_ADDRESS>/tcp/10505]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWKTZHfamPPeE7CLiMPNGyFtBzdY6SoQ4TovQMSVrmXeni: [/ip4/<IP_ADDRESS>/tcp/10506]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWDRa8BBsjtfusf7N7ith7ivKwn79ykv9bmz6ffAANQqfU: [/ip4/<IP_ADDRESS>/tcp/10515]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWJ2A5x6Qzj6Dmgvu7b5xm8uzTkFzoR9YwaRvhKEAT2Jaz: [/ip4/<IP_ADDRESS>/tcp/10511]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWDq4jr5z8dWakQwiRXqmsQDpbVEz1jYsYgE3PtyudTS6n: [/ip4/<IP_ADDRESS>/tcp/10516]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWNwpi3mj3i7ZXeNwPmXSRPfzKZfwef2sVDoKcRNHuSTCN: [/ip4/<IP_ADDRESS>/tcp/10520]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWAJv4mP59RgUTpvuykpADXtcayL34cjQYcFzdfT1fpWSm: [/ip4/<IP_ADDRESS>/tcp/10504]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWGERiMAkFgeH1hZyhJYahDoJTGK8ZQPHJVaReNBzn7QPQ: [/ip4/<IP_ADDRESS>/tcp/10508]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWHuRgSh7Ue2V272gCpy45kjeimRxFifdSAcuMSaimPoqq: [/ip4/<IP_ADDRESS>/tcp/10517]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWGLqSpP7PvjCQ3wgzezpWQe7oFitHZs4SqzwSppN8Mgx9: [/ip4/<IP_ADDRESS>/tcp/10507]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWKjVBmPevpJBUTfyZkBCo7YxWnv4PZb5Qbq4qwha59voW: [/ip4/<IP_ADDRESS>/tcp/10519]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWNu95J3M5Z4LLrXRN74MgYTASx4Ty6Z87h3jxfvsaoLJc: [/ip4/<IP_ADDRESS>/tcp/10502]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWMahLxuG14tQDPEivKfd3fATUuiPHfsEVwjoBs4xi48Yx: [/ip4/<IP_ADDRESS>/tcp/10518]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWQ3MobQHAM9v32oNwomHbd5G1vsnFLJ8wxUhVMMhuiVvn: [/ip4/<IP_ADDRESS>/tcp/10510]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWFYTYmgKAp2nYBkaeLxvHS7DAQuobmrqkXJbSxZ18Vh84: [/ip4/<IP_ADDRESS>/tcp/10514]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWDyb2ZXBtxHZLq3Rbc239qN2h4Ko4b9CneUba5mhUVyVf: [/ip4/<IP_ADDRESS>/tcp/10513]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWPwBndsKgcwBu5Dqc8GRfs16gF39ziXJr3yS9BDarQrEo: [/ip4/<IP_ADDRESS>/tcp/10503]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWBm3Ev33AUSEoLUj5zqydMLiFf8dAgWW3ew3NCZYNNPje: [/ip4/<IP_ADDRESS>/tcp/10509]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to connect to peer: {12D3KooWGpMHa9Vd3Y3vuJpHwDqWkr3LPMeSaLbYwyZXKf3sSsJn: [/ip4/<IP_ADDRESS>/tcp/10501]}dial backoff
2021-01-26 12:41:06 UTC [Error] failed to routing advertise: failed to find any peer in table
2021-01-26 12:41:06 UTC [Warn] starting libp2p up failed: $error
error: {
"string":
"RPC #29 failed: "libp2p error error: failed to find any peer in table""
}

As seen on Discord

As seen on Discord

Closing this issue as it is stale for a long time.


Issue with generics and DeepPartial, worked in 2.x

The following example worked in ts-essentials@2 but throws an error in 6.0.7 (haven't tested other versions yet):
interface PartialFoo<T> {
  config: DeepPartial<T>;
}

interface Foo<T> extends PartialFoo<T> {
  config: T;
}

The error:
Interface 'Foo<T>' incorrectly extends interface 'PartialFoo<T>'.
  Types of property 'config' are incompatible.
    Type 'T' is not assignable to type 'DeepPartial<T>'.

Surely T should be assignable to DeepPartial<T>?
ts-essentials version 6.0.7, TypeScript version 3.9.5.

@Dragory previously (in @2) it was available since you had to use object as a base T:
type DeepPartial<T> = {
  [P in keyof T]?: T[P] extends Primitive
    ? T[P]
    : T[P] extends Function
    ? T[P]
    : T[P] extends Date
    ? T[P]
    : T[P] extends Array<infer U>
    ? Array<DeepPartial2<U>>
    : T[P] extends ReadonlyArray<infer U>
    ? ReadonlyArray<DeepPartial2<U>>
    : DeepPartial2<T[P]>;
};

Now since T can be basically any, you can't ensure T and DeepPartial will be the same. The basic example I guess will be using Set / Map as a base type to DeepPartial

I think we can do nothing here
I will close it for now


Issue Formatting on Dedicated Servers

Kaleidio's Battle Pack 3.4.6 constantly has formatting issues on the server console anytime somebody sends a chat message
"←[0m<←[0m←[0mNubilicious←[0m> ←[0m←[0mk←[0m"
constantly those four characters show up.  it's annoyingly spammy, what's going on here?

MineMention uses ANSI Escape Codes to print the message colored into the console. Apparently your console can't handle these.

The console is Windows Command Prompt, which DOES actually support ANSI codes, but only certain colours, and using ESC[0m results in it spitting it out rather than "just using default text"

see here for reference.  feature only available on Windows 10 1909 and up, currently using 21H1
https://ss64.com/nt/syntax-ansi.html

I suppose we should consider this a Java bug then since Java, if the ANSI gets accepted, tosses it out before printing to CMD.


support reading values from environment variables or passed-in flags

the ytt user may wish to provide data values in the form of environment variables or by passing values through the command line. this is particularly beneficial when providing secrets.
As a user of ytt I expect it to provide me with either of the options above to provide or override values.

per our previous discussions:

multiple values are read from env vars

ytt tpl ... --data-values-env BAR_
BAR_FOO_KEY1_KEY2 -> Foo.Key1.Key2

single value is read from command arg

ytt tpl ... --data-value-arg Foo.Key1.Key2=myval (where myval is YAML unmarshable value)

single value is read from file

ytt tpl ... --data-value-file Foo.Key1.Key2=path (where path is some file whose contents will be loaded as a string)

as a side note, i was thinking one can "override" default values by specifying it in a dedicated overlay file, which brings an interesting question of how strict should --data-value-arg Foo.Key1.Key2=myval be? for example what if Foo.Key1.Key2 does not exist in the original values file?

I feel like the behavior should be merge here if the key does not exist but the values are supplied to the command line explicitly

if the key does not exist but the values are supplied to the command line explicitly

only concern i have here is catching typos. that's why overlay functionality is conservative until it's marked as ok to be missing.

I want this feature ;-)
I would like to read values passed on the command line or in the environment.
Any ETA for this feature?

@emayssat thanks for bumping this up. ill think more about what this feature should look like this week.

@emayssat @afcastano ive added https://github.com/k14s/ytt/commit/b0760475f2eb77166744baf876ff16890a0e53eb as a first cut for this feature. try it out. examples:
export YTT_key__env=123
ytt template -R -f . --data-value key.subkey="value" --data-values-env YTT --data-value-file key.file=/path
ytt template -R -f . --data-value key.boolean=true

above keys should be specified in configuration data values, otherwise overlaying will fail, eg
#@data/values
---
key:
  subkey:
  boolean:
  env:
  file:

@emayssat @afcastano let me know if this works out for yall. have a good weekend.

included in v0.8.0


Move event feed protobuf files to the API directory

User Story
The event feed protobuf files need to be moved to the API external folder from the automate-gateway.

This has already been completed.