rollups.

the time has come.

https://github.com/raintank/ops/issues/112 has some details
i know we wrote down some thoughts etc at the summit, do we still have those notes? or perhaps not that important
implementation will probably be an nsq consumer that generates all lower-res streams and stores them (including for current data), as opposed to a design where lower-res only starts where higher-res ends.
we can generate spread data like librato/omniti/hostedgraphite, or store individual min/max/avg/.. series, or use an algo like LTTB (see https://github.com/sveinn-steinarsson/flot-downsample/)

the way i see it, before coming up with proper rollup settings, it's a good practice to first list the desires and be aware of each of them, because this is where we may have different opinions:

ideally, long archives at high quality so we have ample quality even for short timeframes for long ago (but goes against backend resources, performance data transfer, and client side computation)
data as lightweight as possible to still provide high resolution for commonly requested ranges
round up timeframes, like aim for periods such as 8 days, 13 months, etc so you can compare current day against the day a week ago, etc.
not too much redundant data (multiple "resolution bands" shouldn't have too much overlap)
allow multiple input resolutions, good fit of rollups for each. (i think high resolution should also stay fairly high resolution throughout different bands, whereas if data comes in at low resolution, we can also be more aggressive in our rollups)

The two key drivers for rollups are:

improve loading times of graphs that span large timeframes.
reduce storage requirement

right now, item 1 is of higher priority then item2.
In addition to the requirements listed above, i would add

support variable input resolutions.  Meaning users can start sending a metric every 10seconds and change it to every 60seconds and vice versa

I am not sure if an additional NSQ consumer is the right approach.
In order to perform rollups, we are going to need to buffer metrics in memory.  Querying this inMemory data is going to be faster then querying the TSDB, and so we should have graphite leverage it. In which case we can delay when we write to C*
So, my view is that we read from NSQ, then just write to the inMemory store.
We then have another process or thread that uses this inMemory store to:

periodically flush the inMemory data to C* as raw data.  This has the advantage of improving write performance on cassandra. (this is what the signalFx article refers to as stage 1 - vertical writes)
periodically write aggregated data to C*

Querying this inMemory data is going to be faster then querying the TSDB, and so we should have graphite leverage it

how sure are we that there is a significant difference in response time for serving read requests for recent data? or maybe this question is not that relevant because if we're going to batch up writes (and it looks like we should) then we need this in-memory component to satisfy hot data anyway.
i agree with your appoach, but the way i envision this, the nsq reading, inMemory store, and C* flushing can all happen in the same process, until we reach scalability limits.

currently prototyping this

progress is at
https://github.com/raintank/raintank-metric/tree/tank
https://github.com/raintank/raintank-docker/tree/tank

basic skeleton is done
basic in-mem chunkserver prototype works. it uses a circular buffer of go-tsz compressed chunks, for each metric key.
simple http interface for serving up data works
wrote unit tests and have been manually testing in devstack, single endpoint, 5 chunks of 120s each seems to work fine

(https://github.com/raintank/raintank-metric/tree/tank/nsq_metrics_tank has some details)
next up:

a modified graphite-kairosdb to query nsq_metric_tank for data no less then a configurable amount of seconds old (chunkSpan*(numChunks-1)) would be nice. @woodsaj can you give this a shot?
send many more metrics, validate http output looks good with larger chunk sizes. I think having (1) in dev stack would help here. check cpu/ram usage, response times.
implement rollups
implement saving to cassandra.  i know very little about cassandra and i wonder if @woodsaj is also interested in giving this a shot. https://github.com/gocql/gocql looks like the best go library for cassandra but i read somewhere that CQL is not that mature and that "old style" is often still better (though not sure what that means). anyway just some code that connects to C* and can save new chunks to specific per-metric rows or something would be nice, i can then glue it into the daemon.

nice progress! is nsq_metrics_tank a separate process or is part of raintank-metric process that feeds to NSQ.
Just curios of the topology / processes involved the the metric stack. has NSQ completely replaced RabbitMq? What process receives metrics from collectors and batches them onto NSQ, and then there is another process that receives them and saves meta data to elastic and metrics to cassandra?

every nsq_* app in this repo runs as a service. there is no more raintank-metric process.
nothing in here feeds to nsq, they all consume from nsq.
there is one for maintaining the metric definitions in ES, one for storing probe events in ES, one for saving metrics to kairos. and now this new one, which should eventually also replace the latter.
we still use rabbitmq for the grafana app bus and perhaps a few other things, not sure.
but nsq is used for high-throughput items (metrics and probe-events).
it's kind of annoying that we have 2 messaging systems, but they have different characteristics and we exploit that. using rabbitmq for everything would be far from ideal, and ditto for NSQ probably ( @woodsaj is more familiar with the rabbitmq specifics)
grafana receives the data from the collectors (they run in collector-controller mode only) and sends it to NSQ. the collector-controllers also doesn't batch anymore, it exploits the fact that incoming data is naturally batched. in fact, batches are split up to make sure the messages stay under 10MB each.

@Dieterbe thanks for clarifying, make sense. Would be interesting to know if rabbitmq is required or we could use NSQ there as well.
Been thinking about Grafana and distributed setups (sharing cache state. for example for the alerting def index). What would be the best way for grafana nodes to talk to each other? NSQ, nanomsg. rabbit, raft..

that sounds like something we should have a deeper conversation about, to learn context, requirements etc. happy to hangout about that some time. is there a ticket where we can resume this convo?

Just wanted to add in my 2c here, around a partcular angle (disclaimer: I don't know enough about the tradeoffs for nsq vs rabbit for various use cases)...
over the long term, it is definitely a downside from a distribution/packaging/supportability standpoint if our stack will require nsq (or whatever name we end up giving that component of the stack) and rabbit.
maybe not that big a deal for the saas offering, but if nsq could be a tight no-dependency part of our stack, it seems ideal to evaluate using it for * esp for the on-prem / downloadable use case.

let's please have that conversation elsewhere (maybe in strategy repo or something)

@Dieterbe a few issues.

you are using metric.Name as the key, but this is not a globally unique identifier for a metric series as it does not contain any data about who owns the metric (Org).  This can be easily addressed by changing https://github.com/raintank/raintank-metric/blob/tank/nsq_metrics_tank/handler.go#L36 to
 m := h.metrics.Get(metric.Id())

As with the above, the HTTP interface needs to either a) accept the metric ID as the query term, or b) keep a local index of metric.Id's and metric.name + org_id.    Options A is obviously simpler and also preferable as Graphite-api gets the metric.Ids from Elastic anyway.

other then that, this is looking awesome.

@woodsaj ok will look into that. do you have anything to say to what i asked about populating cassandra? (last point of https://github.com/raintank/raintank-metric/issues/21#issuecomment-142921544) thanks.

yes, happy to help out, and have already researched sufficiently to get started.

Basic cassandra support in https://github.com/raintank/raintank-metric/tree/tank_to_cassandra
The methods are there for sending data, but not sure where the data should be written from.  What mechanism will flush out the aggregated metrics?

now we should have flushing of the chunks + loading of the chunks in the http interface.
for some reason it doesn't actually work yet but i think we're close :-p
btw, would be nice if we got the http json output to be the same format as graphite ("array" style [{"target": "error", "datapoints": [[null,<PHONE_NUMBER>]], ...}]) but i haven't figured out yet how to do that

summary
loading and saving seems to work, verified via json api in dev stack and working with a single endpoint
todo

high load testing: high write-load + high read-load.
compare performance to our current stack. in terms of request handling capability, cpu and mem usage. also the effect on cassandra.    env-load and vegeta will make this fairly easy. we must also verify some random series and check that their results look good, during these benchmarks.
verify rollup outcomes
create a graphite plugin that queries NMT (for now it's the gateway for both hot and cold data through its json api)
think about what happens in case of crashes or if we need to restart server.  i.e. partial chunks during startup, aggregations, do we use a WAL?

we can already easily spin up raintank-docker as current stack or tank based stack (remember to rebuild docker images!). but now i've been working on a script to collect perf metrics, do benchmarks with vegeta, verify correctness of data returned by graphite, as well as documenting the procedure so that the process is smooth and minimizes room for errors
https://github.com/raintank/raintank-docker/wiki/performance-testing-a-timeseries-backend
once some more things are fixed/implemented, it should be trivial to benchmark both stacks in a structured manner and compare them.

to figure out before starting benches:

NMT requests/s doesn't seem accurate. should be around 120/s after env-load
alert outcomes shows a lot of empty response (though sudo ngrep -d any -W byline host <IP_ADDRESS> and port 6063 looks pretty good)

summary

https://github.com/raintank/raintank-tsdb-benchmark lets us do benchmark runs. it replaces the wikipage mentioned above.
disabled aggregations for now.  they made things more complicated to verify and i want to focus on verifying old vs new on equal terms.
i also disabled alerting (well, the tsdb-benchmark readme says to disable it in the grafana config, but it's not committed into the repo) cause there's some known issues i don't want to depend on, and it adds noise to the benchmarks.
current results out of env-load are a bit unrealistic: we monitor localhost which always returns 0ms. i want to test NMT/go-tsz in a realistic setting with fluctuating response times, but i also don't want to do a lot of io between devstack and some remote node on the internet, ideally all traffic should be contained within the machine where we run all tests. maybe something like https://github.com/raintank/bad-http-server which returns responses through a mimicked delayed network connection? @woodsaj thoughts? want to give this a shot?
i added a bunch of instrumentation (measure.sh for system stats cpu/mem, and graphite-watcher that checks if data returned by graphite looks superficially good (no nulls when there shouldn't be, data ordering, step, etc), these automatically start up in devstack when it launches and they come with dashboards preloaded in grafana. (tank branch only, has to be ported to master as well).  i didn't tackle the subject of verifying data correctness yet.  the ideal approach here I think would be sniffing points sent over nsq for a random subset of series, querying graphite, and verifying that it retuns the proper data. alternatively we could also just assume that unit tests give us enough confidence, or somehow feed in artificial data that is easy to visually verify by logging in and looking at graphs. but given the previous point, it seems better to use realistic data. @woodsaj thoughts?

i want to test NMT/go-tsz in a realistic setting with fluctuating response times

You can try using kernels built in traffic control (tc) mechanism.  I dont think you will be able to apply changes directly to individual containers.  But it would work nicely inside a full VM, using virtualbox, kvm, or vmware.
http://www.linuxfoundation.org/collaborate/workgroups/networking/netem

I was able to get tc working with the docker containers.
I added a commit to raintank-docker, so that network emulation rules are applied to the interfaces on all of the collector containers to increase their latency.
https://github.com/raintank/raintank-docker/commit/145736ae75998db86e1a8343572c504b3d25d35b
The increased latency wont be applied if the endpoint is localhost.  But will work for other addresses.  So i would recommend that you change env-load to use the address of the docker0 interface instead of localhost.

good stuff AJ. i just did https://github.com/raintank/raintank-docker/commit/1b6462560a9f6321b7ccfd6a1fc87f9b3780b228 but otherwise works great.

the server now should have functioning rollups, i just have a hard time visually verifying because the metrics don't show up in the graphite-api output so i can't draw them in grafana.

been making progress on serving consolidated responses in the http handler https://github.com/raintank/raintank-metric/pull/63 if anyone is curious to see the work in progress.

with #63 gearing up it's time to start finding a great set of rollup intervals/settings. i know @woodsaj at one point had a google doc with a table of suggested rollup settings. can you share ( you shared "by the numbers v2" but that looks like smth else)
some thoughts:

I found that on the fly aggregation in Go is very fast. aggregating 1k values takes <1µs, so doing it 1k times, eg for each point on a graph still means no more than 1ms. this was on my laptop. presumably in graphite-web it's slow because it's python ? so the main value of computing offline aggregations will be for storage space and potentially faster network tx between c* and our graphite/tank stack. not so much faster graph rendering.
rollup data gives more bang for buck the higher the point reduction between the various stages (raw vs aggregation resolution 1 vs resolution 2 etc). <=10x difference in points/size does not seem worth it.
other than what we drive through litmus (and litmus should only be a fraction of the total viz being done on our tsdb), we don't really know what people will be looking at. grafana's timepicker gives a plethora of options and it seems we'll see a fairly random distribution of timeframes of several days, several weeks, months but >= 1 year seems less likely.
in litmus, people can configure an interval of 10/30/60/120s for raw data. for non-litmus data i expect 1s will become common too and litmus will start doing 1s too probably (for ping at least)
in the extreme case, people may want to see 4 years of data on a full HD screen, so 1920 pix wide. we can sufficiently serve this with about 1 point every 10px, so 192pix or 7days per point.
I like the idea of having full days as aggregation buckets, not just for scenarios like the above (which are probably not very common) but I think they would be useful for smartSummarize() and the like as well. @woodsaj seems more of a fan of max 6h buckets, which I'm fine with until we have better insights. using 6h buckets we should be able to easily compute per-day and per-7 days stats as well at runtime. (42 points, 192 times to be precise for the above scenario)
so raw is 1~120s. max bucket is 21600s (6h), it's going to be an interesting exercise finding the right layers in between and why. we should of course also take into account how long we would store each interval for, which affects the number.
for length-of-interval, i always like to do like 9 days, 6 weeks, 14 months. so that you can do "how does today/yesterday compare to same day last week", "how does last week compare to same week a month ago", etc.
also allow multiple input resolutions, good fit of rollups for each. (i think high resolution should also stay fairly high resolution throughout different bands, whereas if data comes in at low resolution, we can also be more aggressive in our rollups) @woodsaj you've thought about this in the past right?

the amount of wall time needed to perform aggregation isnt the problem.  The problem is CPU time.  A production deployment wont be able to dedicated a CPU core for the full duration of time needed to process large sets of data.  This means lots of context switches and L1,L2 cache misses.  Having to aggregate millions of points (ie, avg Ping latency across all probe locations over 7Days) down to a few hundred is very resource intensive. Factor in that there are 10-20 of these queries per dashboard, and you quickly realize that computing aggregations on the fly is not an option.   Just the savings in network transfer will be substantial. 7days of raw data for "litmus.google_com.*.ping.avg" is about 45Mb (Kairosdb data, not metric-tank), with a 1gb network interface it would take at best ~300ms to transfer.  Add in disk read latency and you are probably already above 1second before you event start aggregating the data.

also allow multiple input resolutions, good fit of rollups for each. (i think high resolution should also stay fairly high resolution throughout different bands, whereas if data comes in at low resolution, we can also be more aggressive in our rollups)

If rollup periods are not the same across all series, then there needs to be an index of the rollup periods that each series has available.   At this stage we need to optimize for code simplicity.

Factor in that...you quickly realize

that makes sense. so would you say each step in the rollup interval should be about 10x of the previous?  For example if maxDataPoints is 800 and we set minDataPoints to 80 (it seems proper to allow points anywhere from 1 point per pixel to 1 point every 10 pixels), then if we had rollup intervals all about multiples of 10, then we would always be able to find a matching rollup interval that can be served without doing any further reduction at runtime.
right now i'm playing with these settings in devstack:
https://github.com/raintank/raintank-docker/commit/55e10422b912c81e7014f0c7dd54c5af284a9a41
needs some further thinking of course and instrumentation in the code of how proper our retention intervals correspond to requests, how much overhead there is, etc.
and @woodsaj can you share the table of numbers of rollup intervals/retentions you had?
the main issue i have at this point with my settings now is that the raw stream can have a very broad range of resolutions. for litmus currently 10s to 120s but non litmus or litmus in the future i can see anywhere from 1s to 1h, this means the compression rate of the first rollup interval varies wildly and the first rollup level can be anywhere from basically useless to drastically insufficient, still requiring major runtime aggregation.
but like you say we can get the basic form working first and then worry about per-series/per-customer adjustments later once we have a better understanding of what we want.

@Dieterbe if the doc i shared with you doesnt have what you are looking for, then the information no longer exists.

playing with rollups like a pro

update your dev stack
the nsq tools still need to be manually compiled, sorry. use consolidation-at-read-time branch for raintank-metric
disable alerting in grafana config, it creates too many queries that make looking at the log annoying
add --log-level 0 to the metricTank command in the screen file.
and replace the tail with tail -f /var/log/raintank/nsq_metrics_tank.log | grep -v 'pushing value to agg' in the screen file
launch stack
kill graphite watcher for same reason as alerting
add an endpoint as grafana, use all defaults
run ./delay_collector.sh, ./delay_collector.sh dev1 500 10 and similar commands to change the latency profile at specific points in time and give it some time to run at specific latency profiles.
open the new rollups tester dashboard so you can focus on one particular series (new since https://github.com/raintank/raintank-docker/commit/ab35c6e8e0c0eb4a96005aaeebd49aad0cec624e)
looking at the dash and the metricTank log you can now do experiments with display interval, and see what kind of data it loads, and you can verify whether things look allright or not.

here's a video where i show it off: https://vimeo.com/147804095
i also merged this into master.

this has been implemented for a while.


What about a pipeline function make_contact_system etc... ?

t.make_elastic_contact_system(young=Es)
t.make_plastic_contact_system(young=Es, hardness=...)
t.make_adhesive_contact_system(young=Es, interaction=...)

No objections

Anything that makes using the code easier is good. We should at some point sit down and discuss the overall API.


ngSanitize can make input placeholder modiafiable in Internet Explorer 11

Do you want to request a feature or report a bug?
Report a bug.
What is the current behavior?
ngSanitize can make input placeholder modiafiable in Internet Explorer 11 if input element's parent has disabled attribute. User can click input and start modifying placeholder text. Without ngSanitize input is simply disabled in Internet Explorer 11.
If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (template: http://plnkr.co/edit/tpl:yBpEi4).
<!DOCTYPE html>
<html ng-app="customApp">
  <head>
    <title>Internet Explorer 11 and input placeholder</title>
  </head>
  <body disabled>
    <input type="text" size="60" placeholder="Placeholder can be modified in Internet Explorer 11">

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-sanitize.min.js"></script>
    <script>

    angular.module('customApp', ['ngSanitize']);

    </script>
  </body>
</html>

What is the expected behavior?
Input with placeholder would behave identically as plain HTML without AngularJS (i.e., input is simply disabled).
Which versions of AngularJS, and which browser / OS are affected by this issue? Did this work in previous versions of AngularJS? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.
AngularJS: 1.6.1, 1.6.2 and snapshot (build.5274+sha.79c4a71)
Internet Explorer 11 - versions 11.0.9600.18524 and 11.0.9600.18537

Hi,
there are a few things going on here, but essentially, this is a bug in IE11 and has nothing to do with AngularJS. You can remove ngSanitize and AngularJS completely and you will see the same behavior.
Also, putting disabled on the body is not suppowed to disable the children that are input elements. No other browser does anything when you do that. It looks like IE has a bug there.
in conclusion, it's a bug and if don't put disabled on parent elements, and this should not affect you.

Hi,
I agree that Internet Explorer 11 behaves strange. However if I change line with angular.module in my above example to:
angular.module('customApp', []);
Placeholder cannot be anymore modified. At least for me and that is why I thought it has to do something with AngularJS.
Using disabled in body was for providing a minimal example. You could for example have disabled as binding in your component:
<!DOCTYPE html>
<html ng-app="customApp">
  <head>
    <title>IE 11 and input placeholder</title>
  </head>
  <body>
    <custom-input disabled="true"></custom-input>

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-sanitize.min.js"></script>
    <script>

    angular.module('customApp', ['ngSanitize']).component('customInput', {
      bindings: {
        disabled: '<'
      },

      template: '<fieldset ng-disabled="$ctrl.disabled"><input type="text" placeholder="Placeholder"></fieldset>'
    });

    </script>
  </body>
</html>

In above example you get similar behavior with Internet Explorer 11 and Chrome 56 but placeholder text can be modified in Internet Explorer. However behavior is same for both browsers if ngSanitize is not used:
angular.module('customApp', []).component('customInput', {...

Ok, I was testing in IE11 11.576.14393.0, Update Version 11.0.38 and there was no difference with / without ngSanitize. Your and my version numbers looks quite different, so I can't say which was is newer.
It's also possible that I didn't correctly translate your example to this plnkr which I used to test: http://plnkr.co/edit/jDJv5NtwwDSsp9hRT2rf?p=preview Can you check if this fails for you in IE11?
It's always better to provide a runnable example instead of just the code.
That said, I don't think this is something we can / should fix, since the workaround is simple.

Thank you for example code. Internet Explorer behaves as I described earlier, but there is a catch. If I run the Plunker as such it does not work. You have to open the resulting iframe (right side, http://run.plnkr.co/...) in the browser and then you can see the behavior I described. At least in my Internet Explorer. I have no idea why the app cannot be in iframe.
Behavior can be changed by modifying app.js line 1:
var app = angular.module('plunker', ['ngSanitize']);
vs
var app = angular.module('plunker', []);
I agree that this is probably something that is not even worth trying to fix, but I wanted to bring this up just in case. My latter example is maybe a bit more concrete where somebody could use disabled as custom element attribute and might be surprised how Internet Explorer works.

FWIW, there's no change for me when I switch to run.plnkr ...

Thanks for investigating this problem.


[Improvement] Raw key reads for RPI

In regards to issue #379 and possibly #713
I have rewritten Raylib keyboard routines to read from the input/event rather that the STDIN I would very much like to submit this code for review, however I am unsure as to how one does this.
Do I post it here in the issue or some other way?
My changes were all made to core.c

Hi there!
The best way is to fork the raylib repository. Just read the link i provided it has all the info you want.
I'm new to github myself, if you need further help fell free to ask.
Have a great day!

@DarkElvenAngel thanks for the review! @Demizdor thanks for the answer! :)

Great thanks @Demizdor for the information.


Main to Live - picking up later additions

Learn Build status updates of commit 28e194a:
:warning: Validation status: warnings

File
Status
Preview URL
Details

microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Identity.SignIns/Update-MgInformationProtectionBitlocker.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Teams/Update-MgGroupTeamSchedule.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Teams/Update-MgTeamSchedule.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyCustomerPaymentJournalAccount.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyGeneralLedgerEntryAccount.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyJournalAccount.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyJournalLineAccount.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyPurchaseInvoiceLineAccount.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleCreditMemoLineAccount.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleCreditMemoSaleCreditMemoLineAccount.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleInvoiceLineAccount.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleOrderLineAccount.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleQuoteLineAccount.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Identity.SignIns/Update-MgInformationProtectionBitlocker.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Identity.SignIns/Update-MgPolicyDeviceRegistrationPolicy.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Identity.SignIns/Update-MgUserInformationProtectionBitlocker.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Teams/Update-MgGroupTeamSchedule.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Teams/Update-MgTeamSchedule.md
:warning:Warning
n/a (file deleted or renamed)
Details

microsoftgraph/docs-conceptual/app-only.md
:white_check_mark:Succeeded
View (graph-powershell-1.0 || graph-powershell-beta)

microsoftgraph/docs-conceptual/find-mg-graph-command.md
:white_check_mark:Succeeded
View (graph-powershell-1.0 || graph-powershell-beta)

microsoftgraph/docs-conceptual/find-mg-graph-permission.md
:white_check_mark:Succeeded
View (graph-powershell-1.0 || graph-powershell-beta)

microsoftgraph/docs-conceptual/get-started.md
:white_check_mark:Succeeded
View (graph-powershell-1.0 || graph-powershell-beta)

microsoftgraph/docs-conceptual/installation.md
:white_check_mark:Succeeded
View (graph-powershell-1.0 || graph-powershell-beta)

microsoftgraph/docs-conceptual/navigating.md
:white_check_mark:Succeeded
View (graph-powershell-1.0 || graph-powershell-beta)

microsoftgraph/graph-powershell-1.0/Microsoft.Graph.CloudCommunications/Invoke-MgInviteCommunicationCallParticipant.md
:white_check_mark:Succeeded
View (graph-powershell-1.0)

This comment lists only the first 25 files in the pull request.

microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Identity.SignIns/Update-MgInformationProtectionBitlocker.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Identity.SignIns/Update-MgInformationProtectionBitlocker.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Teams/Update-MgGroupTeamSchedule.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Teams/Update-MgGroupTeamSchedule.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Teams/Update-MgTeamSchedule.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Teams/Update-MgTeamSchedule.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyCustomerPaymentJournalAccount.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyCustomerPaymentJournalAccount.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyGeneralLedgerEntryAccount.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyGeneralLedgerEntryAccount.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyJournalAccount.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyJournalAccount.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyJournalLineAccount.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyJournalLineAccount.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyPurchaseInvoiceLineAccount.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanyPurchaseInvoiceLineAccount.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleCreditMemoLineAccount.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleCreditMemoLineAccount.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleCreditMemoSaleCreditMemoLineAccount.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleCreditMemoSaleCreditMemoLineAccount.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleInvoiceLineAccount.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleInvoiceLineAccount.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleOrderLineAccount.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleOrderLineAccount.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleQuoteLineAccount.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Financials/Update-MgFinancialCompanySaleQuoteLineAccount.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Identity.SignIns/Update-MgInformationProtectionBitlocker.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Identity.SignIns/Update-MgInformationProtectionBitlocker.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Identity.SignIns/Update-MgPolicyDeviceRegistrationPolicy.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Identity.SignIns/Update-MgPolicyDeviceRegistrationPolicy.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Identity.SignIns/Update-MgUserInformationProtectionBitlocker.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Identity.SignIns/Update-MgUserInformationProtectionBitlocker.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Teams/Update-MgGroupTeamSchedule.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Teams/Update-MgGroupTeamSchedule.md was deleted without redirection. To avoid broken links, add a redirection.

microsoftgraph/graph-powershell-beta/Microsoft.Graph.Teams/Update-MgTeamSchedule.md

[Warning: file-not-redirected - See documentation] File microsoftgraph/graph-powershell-beta/Microsoft.Graph.Teams/Update-MgTeamSchedule.md was deleted without redirection. To avoid broken links, add a redirection.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Learn Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel


Fix checks on Builder / Error handling

layout doesn't need to be checked, as it always has a value; text, desc, and image need however, as they could produce a ResourcesNotFoundException.

Actually layout needs to be checked because the default value can be falsely overwritten by a non existent resource. It would give a compiler warning though because the layout parameter is declared as @LayoutRes.


Notes on 'setting up a project'

I think the need to disambiguate subjects is pretty unusual - in our case it was the result of a sprawling project with many hands stirring the pot (and an accidental double upload, which I guess might happen more often).
Two thoughts:
We could explain that section of the text a little more (especially given the overhead of the process it mentions), and
How would someone proceed if they were happy to skip that step? i.e. they didn't want to run project.disambiguate_subjects but did want things in a dataframe?

I'm still going through the setup so I wasn't quite ready to close this, but I guess I can open an issue per thought - that might get annoying if I'm thinking aloud though!


How add 'binary sensor', 'swich'

Good day. Please add an example of the switch and binarysensor

Those are not add-ons, those are entities.
For more information about integrations and entities have a look here.
https://developers.home-assistant.io/docs/development_index


Warning always appears when using custom user model

https://github.com/arteria/django-hijack-admin/blob/e0773ff37777badfd35cf2d6ce09dfd5e46e536d/hijack_admin/checks.py#L23-L34
This warning seems to unconditionally appear when using a custom user model, even if one has the HijackUserAdminMixin mixed into their custom UserAdmin.
WARNINGS:
user.User: (hijack_admin.W001) django-hijack-admin does not work out the box with a custom user model.
	HINT: Please mix HijackUserAdminMixin into your custom UserAdmin.

Will you please release this fix?

@utapyngo this Issue is still open. If you take a look at #3 you can see the tests have failed and the coverage decreases.
We'll release a new version as soon as this Issue can be closed.

I can look into writing a test for that PR later today.

Added a working test. Coverage no longer decreases. 🎊


Update casting methods (T.let, T.cast, etc) to take the type as a block

NOTE: I know this would take some updates to the static type checking also but wanted to get a temperature check on this approach first.
Motivation
When debugging a performance issue we found that sometimes simply initializing types is slow. This is especially true to T.any (and thus T.nilable since it's an alias for T.any(NilClass, ...)). This means if you have a T.let on a hot path, there's no way to not pay a performance penalty even if you make an attempt with checked: false.
Here are some benchmarks
Benchmark.bm do |x|
  x.report('any                 ') { 10000.times { T.let(1, T.any(Integer, String), checked: false) } }
  x.report('nilable any         ') { 10000.times { T.let(1, T.nilable(T.any(Integer, String)), checked: false) } }
  x.report('complex type        ') { 10000.times { T.let(1..1, T::Range[Integer], checked: false) } }
  x.report('nilable complex type') { 10000.times { T.let(1..1, T.nilable(T::Range[Integer]), checked: false) } }
  x.report('simple type         ') { 10000.times { T.let(1, Integer, checked: false) } }
  x.report('nilable simple type ') { 10000.times { T.let(1, T.nilable(Integer), checked: false) } }
end

       user     system      total        real
any                   0.044301   0.000395   0.044696 (  0.050076)
nilable any           0.064349   0.000205   0.064554 (  0.064723)
complex type          0.005004   0.000049   0.005053 (  0.005101)
nilable complex type  0.035156   0.000288   0.035444 (  0.035752)
simple type           0.001076   0.000019   0.001095 (  0.001120)
nilable simple type   0.007957   0.000043   0.008000 (  0.008037)

I've explicitly disabled type checking in these benchmarks sure that simply initializing the types is the bottleneck
This PR updates T.let to take a block (similar to T.type_alias) and only evaluates the block if we actually want to type check. Here are the benchmarks after that PR when passing the types via block:
Benchmark.bm do |x|
  x.report('any                 ') { 10000.times { T.let(1, checked: false) { T.any(Integer, String) } } }
  x.report('nilable any         ') { 10000.times { T.let(1, checked: false) { T.nilable(T.any(Integer, String)) } } }
  x.report('complex type        ') { 10000.times { T.let(1..1, checked: false) { T::Range[Integer] } } }
  x.report('nilable complex type') { 10000.times { T.let(1..1, checked: false) { T.nilable(T::Range[Integer]) } } }
  x.report('simple type         ') { 10000.times { T.let(1, checked: false) { Integer } } }
  x.report('nilable simple type ') { 10000.times { T.let(1, checked: false) { T.nilable(Integer) } } }
end

       user     system      total        real
any                   0.001261   0.000065   0.001326 (  0.001369)
nilable any           0.001186   0.000002   0.001188 (  0.001190)
complex type          0.001253   0.000041   0.001294 (  0.001339)
nilable complex type  0.001200   0.000002   0.001202 (  0.001202)
simple type           0.001176   0.000002   0.001178 (  0.001179)
nilable simple type   0.001234   0.000007   0.001241 (  0.001272)

Test plan
See included automated tests.

Just wanted to clarify - is this (or #4181) something you would definitely not consider currently? This isn't something that can be monkey-patched since sorbet-static would need to be updated to handle parsing the type from the block (as you did in that other PR) so just wanted to bump this.
There technically is a workaround by using a type alias but it's still an order of magnitude slower than the block syntax. You can also pre-save the alias which makes it just as fast as the block syntax but makes for worse readability and a gotcha that you'd have to know to do.
CachedAlias = T.type_alias { T.nilable(T.any(Integer, String)) }

Benchmark.bm do |x|
  x.report('nilable any') { 10000.times { T.let(1, T.nilable(T.any(Integer, String)), checked: false) } }
  x.report('type alias ') { 10000.times { T.let(1, T.type_alias { T.nilable(T.any(Integer, String)) }, checked: false) } }
  x.report('saved alias') { 10000.times { T.let(1, CachedAlias, checked: false) } }
  x.report('block      ') { 10000.times { T.let(1, nil, checked: false) { T.nilable(T.any(Integer, String)) } } }
  x.report('simple     ') { 10000.times { T.let(1, Integer, checked: false) } }
  x.report('no let     ') { 10000.times { 1 } }
end; nil

       user     system      total        real
nilable any  0.105534   0.010640   0.116174 (  0.117069)
type alias   0.009197   0.001514   0.010711 (  0.010732)
saved alias  0.001278   0.000001   0.001279 (  0.001279)
block        0.001299   0.000004   0.001303 (  0.001311)
simple       0.001289   0.000020   0.001309 (  0.001333)
no let       0.000464   0.000001   0.000465 (  0.000465)

We're definitely open to making this change to the runtime. I think that because we've already vetted #4181 that we'll revive that PR. Knowing that others would make use of this functionality makes it easier to add, given that it didn't quite fit our original use-case.

We're definitely open to making this change to the runtime. I think that because we've already vetted #4181 that we'll revive that PR.

Great to hear! I’ll close this out in that case.


Fleeting implementation with spot instances failing when instance is reclaimed

Describe the bug
We are trying to use the fleeting plugin with the docker-autoscaler runner worker, multiple instance types and multi-AZ deployment, but sometimes when an instance is reclaimed by AWS if we restart the job it tries to connect to the terminated instance and doesn't try others. The only solution we have found is to re-trigger the entire pipeline.

To Reproduce
This is the configuration we where using (we had to revert):
module "runner-spot-xlarge" {
  source      = "cattle-ops/gitlab-runner/aws"
  version     = "8.1.0"
  environment = "xlarge"

  vpc_id    = module.vpc.vpc_id
  subnet_id = element(module.vpc.public_subnets, 0)

  runner_instance = {
    name                        = "${var.runner_name}-xlarge"
    monitoring                  = true
    collect_autoscaling_metrics = ["GroupDesiredCapacity", "GroupInServiceInstances"]
    private_address_only        = false
    type                        = "t3.small"
  }

  runner_install = {
    post_install_script = local.post-user-data
  }

  runner_networking = {
    security_groups_ids = [module.vpc.default_security_group_id]
    subnet_ids          = module.vpc.public_subnets
  }

  runner_manager = {
    maximum_concurrent_jobs = 50
  }

  runner_cloudwatch = {
    log_group_name = "gitlab_runners_xlarge"
  }

  runner_gitlab = {
    runner_version                                = "17.4.0"
    url                                           = "https://gitlab.com"
    preregistered_runner_token_ssm_parameter_name = "xlarge-runner-registration-token"
  }

  runner_gitlab_registration_config = {
    tag_list           = "xlarge"
    description        = "Gitlab Docker Spot Runner"
    locked_to_project  = "false"
    run_untagged       = "false"
    maximum_timeout    = "3600"
  }

  runner_worker = {
    environment_variables = ["REGISTRY_URL=docker.io/"]
    output_limit          = 409600
    type                  = "docker-autoscaler"
    ssm_access            = true
  }

  runner_worker_docker_autoscaler = {
    fleeting_plugin_version = "1.0.0"
    max_use_count           = 50
  }

  runner_worker_docker_autoscaler_ami_owners = ["amazon"]
  runner_worker_docker_autoscaler_ami_filter = {
    name = ["al2023-ami-ecs-hvm-*-kernel-6.1-x86_64"]
  }

  runner_worker_docker_autoscaler_instance = {
    root_size            = 16
    monitoring           = true
    private_address_only = false
    start_script         = file("scripts/worker_start_script.sh")
  }

  runner_worker_docker_autoscaler_asg = {
    subnet_ids                               = module.vpc.public_subnets
    types                                    = ["m4.xlarge", "m5.xlarge", "m5a.xlarge"]
    enable_mixed_instances_policy            = true
    on_demand_percentage_above_base_capacity = 0
    spot_instance_pools                      = 2
  }

  runner_worker_docker_autoscaler_autoscaling_options = [
    {
      periods      = ["* * * * *"]
      idle_count   = 0
      idle_time    = "30m"
      scale_factor = 1
    }
  ]

  runner_worker_docker_options = {
    privileged = true,
    volumes    = ["/cache", "/certs/client", "/var/run/docker.sock:/var/run/docker.sock"]
  }

  tags = {
    "tf-aws-gitlab-runner:example"           = "runner-default"
    "tf-aws-gitlab-runner:instancelifecycle" = "spot:yes"
  }

}

Expected behavior
We expect the correct reassignment of another spot instance to the job if the one it tries to use is reclaimed by AWS.

I believe this is an upstream bug: https://gitlab.com/gitlab-org/fleeting/plugins/aws/-/issues/52

I see, thanks for the info!


⚠ Samsung has degraded performance

In 91af29d, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2662 ms

Resolved: Samsung performance has improved in aa2d56a.


[Help/Feature Request]: Support for winit and rustix

I'm trying to build my game engine to work on a 3DS and noticed that it fails to compile because of an indirect dependency on rustix. I sent a report to both https://github.com/rust-windowing/winit/issues/3522 and https://github.com/bytecodealliance/rustix/issues/1023
I've already successfully tested against a project that uses ctru, so the environment itself is setup correctly. It just doesn't work for winit right now
compile-log.txt

The 3DS software stack doesn't support POSIX calls (since the OS is fundamentally different) except a couple that have been reimplemented or wrapped by the devkitARM toolchain. Furthermore, in HorizonOS (the 3DS's operating system) there is no windowing system that winit might even try to leverage, as those are fundamentally specific approaches made for common Linux/Windows/Mac platforms. Unless someone were to manually develop wraps and layers to support those libraries (something I personally believe to be impossible) there is no way those crates are ever going to compile in a functional state.
This is something we mention in the ctru-rs wiki:

Even while using ctru-rs, modules such as std::process and std::thread (plus most third party crates) may not work (or work differently than originally intended) because of how the OS operates. You can read more about that in System Flaws.

Please, do not expect such complex architecture to just work out-of-the-box with out or devkitARM's toolchain. This is something outside of our (or even the console's hardware) capabilities.
I suggest you close the issues opened in those third-party crates.

The winit people said they played around with the idea before, but are not looking at it as a high priority issue. They did mention how they were considering to implement it, so if I ever get the knowledge on how to implement a wrapper for this, I can look at implementing it in the future. In the meantime, I can play around with seeing if I can load it on Linux on the 3DS


feature: add clean command and refactor

Fixes: #12
Modifications

Created a new command, i.e. clean.go in cmd/. Moved and renamed setup/apply-chart.go to util/chart.go as it has functions used across multiple commands.
Verification

Ran:

./perfman setup
./perfman clean

As expected all the resources created in the first step were successfully deleted in the second step.

@ayildirim21 Implements is not a keyword for GitHub automation; fixes or closes are.


MAPREDUCE-7305. [JDK 11] TestMRJobsWithProfiler fails.

JIRA: https://issues.apache.org/jira/browse/MAPREDUCE-7305
Use Java Flight Recorder if the Java version >= 9.
Manually tested with AdoptOpenJDK 11.0.9:
[INFO] Running org.apache.hadoop.mapreduce.v2.TestMRJobsWithProfiler
[WARNING] Tests run: 2, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 55.928 s - in org.apache.hadoop.mapreduce.v2.TestMRJobsWithProfiler
[INFO]
[INFO] Results:
[INFO]
[WARNING] Tests run: 2, Failures: 0, Errors: 0, Skipped: 1

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
0m 31s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s

No case conflicting files found.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

+1 :green_heart:

0m  0s
test4tests
The patch appears to include 1 new or modified test files.

_ trunk Compile Tests _

+1 :green_heart:
mvninstall
34m 10s

trunk passed

+1 :green_heart:
compile
0m 46s

trunk passed with JDK Ubuntu-11.0.9+11-Ubuntu-0ubuntu<IP_ADDRESS>

+1 :green_heart:
compile
0m 34s

trunk passed with JDK Private Build-1.8.0_272-8u272-b10-0ubuntu1~18.04-b10

+1 :green_heart:
checkstyle
0m 31s

trunk passed

+1 :green_heart:
mvnsite
0m 39s

trunk passed

+1 :green_heart:
shadedclient
16m 40s

branch has no errors when building and testing our client artifacts.

+1 :green_heart:
javadoc
0m 30s

trunk passed with JDK Ubuntu-11.0.9+11-Ubuntu-0ubuntu<IP_ADDRESS>

+1 :green_heart:
javadoc
0m 26s

trunk passed with JDK Private Build-1.8.0_272-8u272-b10-0ubuntu1~18.04-b10

+0 :ok:
spotbugs
0m 52s

Used deprecated FindBugs config; considering switching to SpotBugs.

+1 :green_heart:
findbugs
0m 50s

trunk passed

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
0m 33s

the patch passed

+1 :green_heart:
compile
0m 28s

the patch passed with JDK Ubuntu-11.0.9+11-Ubuntu-0ubuntu<IP_ADDRESS>

+1 :green_heart:
javac
0m 28s

the patch passed

+1 :green_heart:
compile
0m 25s

the patch passed with JDK Private Build-1.8.0_272-8u272-b10-0ubuntu1~18.04-b10

+1 :green_heart:
javac
0m 25s

the patch passed

+1 :green_heart:
checkstyle
0m 20s

the patch passed

+1 :green_heart:
mvnsite
0m 29s

the patch passed

+1 :green_heart:
whitespace
0m  1s

The patch has no whitespace issues.

+1 :green_heart:
shadedclient
14m 48s

patch has no errors when building and testing our client artifacts.

+1 :green_heart:
javadoc
0m 23s

the patch passed with JDK Ubuntu-11.0.9+11-Ubuntu-0ubuntu<IP_ADDRESS>

+1 :green_heart:
javadoc
0m 21s

the patch passed with JDK Private Build-1.8.0_272-8u272-b10-0ubuntu1~18.04-b10

+1 :green_heart:
findbugs
0m 48s

the patch passed

_ Other Tests _

+1 :green_heart:
unit
134m  3s

hadoop-mapreduce-client-jobclient in the patch passed.

+1 :green_heart:
asflicense
0m 49s

The patch does not generate ASF License warnings.

211m 31s

Subsystem
Report/Notes

Docker
ClientAPI=1.40 ServerAPI=1.40 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2463/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/2463

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle

uname
Linux 947fbcdff0a1 4.15.0-60-generic #67-Ubuntu SMP Thu Aug 22 16:55:30 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
trunk / f56cd88d7d9

Default Java
Private Build-1.8.0_272-8u272-b10-0ubuntu1~18.04-b10

Multi-JDK versions
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.9+11-Ubuntu-0ubuntu<IP_ADDRESS> /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_272-8u272-b10-0ubuntu1~18.04-b10

Test Results
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2463/1/testReport/

Max. process+thread count
1344 (vs. ulimit of 5500)

modules
C: hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient U: hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2463/1/console

versions
git=2.17.1 maven=3.6.0 findbugs=4.0.6

Powered by
Apache Yetus 0.13.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

Thank you @tasanuma


Pause sound when minimized

I've tried all variations of setCategory and the sound just won't stop when the app is minimized on both iOS and Android. One can use AppState to pause it manually but I'm wondering if there is a sound category that will prevent the sound from playing when the app is minimized?

This issue is a bit old know but for anyone passing by you can use Appstate to determine if the app is suspended and stop the music that way:
componentDidMount() {
    AppState.addEventListener('change', (state) => {
      if(state === 'background'){
        this.mainMusic.stop()
      }
    })
  }


Right-aligned menu isn't positioned correctly

Nesting divs causes right alignment to break.  Maybe this is caused by padding?

This seems to have fixed the issue with bottom-right alignment for me:
jiawei@kismet ~/Code/heap/heap $  > git diff node_modules/material-design-lite/
diff --git a/node_modules/material-design-lite/material.js b/node_modules/material-design-lite/material.js
index 03568ae..4c59d76 100644
--- a/node_modules/material-design-lite/material.js
+++ b/node_modules/material-design-lite/material.js
@@ -1252,7 +1252,7 @@ MaterialMenu.prototype.handleForClick_ = function (evt) {
         if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {
         } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {
             // Position below the "for" element, aligned to its right.
-            this.container_.style.right = forRect.right - rect.right + 'px';
+            this.container_.style.right = this.forElement_.offsetParent.offsetWidth - (this.forElement_.offsetLeft + this.forElement_.offsetWidth) + 'px';
             this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';
         } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {
             // Position above the "for" element, aligned to its left.

I haven't checked, but I'd bet there are similar issues with some of the other orientations.

Bump!

Thanks for the issue and sorry for the late reply @jiaweihli.
Could you give us a CodePen that reproduces the issue? We could then use it as a test case when the rewrite of menus is happening for v2.

Missing an example we can work with :-/
Please reopen if this is still an issue, @jiaweihli!

@surma @sgomes So sorry for the delay!  Please re-open this, I can't seem to do so on my end.
Here's a codepen illustrating the problem, with commented-out javascript with my proposed fix:
http://codepen.io/jiaweihli/pen/XdKGqr

Bump!

Is this the same issue?
I got a problem where right aligned menu inside a container is placed faaar to the right of the screen.
https://jsfiddle.net/lebbe/o3jfb343/