deployment/ray/mednist_classifier_ray.ipynb

Describe the bug
[2023-04-12T03:18:09.303Z] Running ./deployment/ray/mednist_classifier_ray.ipynb
[2023-04-12T03:18:09.303Z] Checking PEP8 compliance...
[2023-04-12T03:18:10.232Z] Running notebook...
[2023-04-12T03:18:14.391Z] MONAI version: 1.2.0rc2+44.g6a7f35b7
[2023-04-12T03:18:14.391Z] Numpy version: 1.22.2
[2023-04-12T03:18:14.391Z] Pytorch version: 1.10.2+cu102
[2023-04-12T03:18:14.391Z] MONAI flags: HAS_EXT = False, USE_COMPILED = False, USE_META_DICT = False
[2023-04-12T03:18:14.391Z] MONAI rev id: 6a7f35b7e271cdf3b2c763ae35acf4ab25d85d23
[2023-04-12T03:18:14.391Z] MONAI __file__: /home/jenkins/agent/workspace/Monai-notebooks/MONAI/monai/__init__.py
[2023-04-12T03:18:14.391Z]
[2023-04-12T03:18:14.391Z] Optional dependencies:
[2023-04-12T03:18:14.391Z] Pytorch Ignite version: 0.4.11
[2023-04-12T03:18:14.391Z] ITK version: 5.3.0
[2023-04-12T03:18:14.391Z] Nibabel version: 5.1.0
[2023-04-12T03:18:14.391Z] scikit-image version: 0.19.3
[2023-04-12T03:18:14.391Z] Pillow version: 9.5.0
[2023-04-12T03:18:14.391Z] Tensorboard version: 2.9.0
[2023-04-12T03:18:14.391Z] gdown version: 4.7.1
[2023-04-12T03:18:14.391Z] TorchVision version: 0.11.3+cu102
[2023-04-12T03:18:14.391Z] tqdm version: 4.65.0
[2023-04-12T03:18:14.391Z] lmdb version: 1.4.1
[2023-04-12T03:18:14.391Z] psutil version: 5.9.4
[2023-04-12T03:18:14.391Z] pandas version: 1.1.5
[2023-04-12T03:18:14.391Z] einops version: 0.6.0
[2023-04-12T03:18:14.391Z] transformers version: 4.21.3
[2023-04-12T03:18:14.391Z] mlflow version: 2.2.2
[2023-04-12T03:18:14.391Z] pynrrd version: 1.0.0
[2023-04-12T03:18:14.391Z]
[2023-04-12T03:18:14.391Z] For details about installing the optional dependencies, please visit:
[2023-04-12T03:18:14.391Z]     https://docs.monai.io/en/latest/installation.html#installing-the-recommended-dependencies
[2023-04-12T03:18:14.391Z]
[2023-04-12T03:18:16.275Z] papermill  --progress-bar -k python3
[2023-04-12T03:18:16.531Z] /usr/local/lib/python3.8/dist-packages/papermill/iorw.py:153: UserWarning: the file is not specified with any extension : -
[2023-04-12T03:18:16.531Z]   warnings.warn(
[2023-04-12T03:18:50.608Z]
Executing:   0%|          | 0/27 [00:00<?, ?cell/s]
Executing:   4%|▎         | 1/27 [00:01<00:39,  1.53s/cell]
Executing:  15%|█▍        | 4/27 [00:23<02:22,  6.18s/cell]
Executing:  22%|██▏       | 6/27 [00:27<01:30,  4.31s/cell]
Executing:  41%|████      | 11/27 [00:31<00:35,  2.23s/cell]*** SIGTERM received at time=1681269530 on cpu 5 ***
[2023-04-12T03:18:50.608Z] PC: @     0x7f81decf246e  (unknown)  epoll_wait
[2023-04-12T03:18:50.608Z]     @     0x7f81dec16090  (unknown)  (unknown)
[2023-04-12T03:18:50.608Z] [2023-04-12 03:18:50,337 E 11614 11614] logging.cc:361: *** SIGTERM received at time=1681269530 on cpu 5 ***
[2023-04-12T03:18:50.608Z] [2023-04-12 03:18:50,337 E 11614 11614] logging.cc:361: PC: @     0x7f81decf246e  (unknown)  epoll_wait
[2023-04-12T03:18:50.608Z] [2023-04-12 03:18:50,337 E 11614 11614] logging.cc:361:     @     0x7f81dec16090  (unknown)  (unknown)
[2023-04-12T03:18:53.124Z]
Executing:  41%|████      | 11/27 [00:36<00:53,  3.33s/cell]
[2023-04-12T03:18:53.124Z] /usr/local/lib/python3.8/dist-packages/papermill/iorw.py:153: UserWarning: the file is not specified with any extension : -
[2023-04-12T03:18:53.124Z]   warnings.warn(
[2023-04-12T03:18:53.124Z] Traceback (most recent call last):
[2023-04-12T03:18:53.124Z]   File "/usr/local/bin/papermill", line 8, in <module>
[2023-04-12T03:18:53.124Z]     sys.exit(papermill())
[2023-04-12T03:18:53.124Z]   File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1130, in __call__
[2023-04-12T03:18:53.124Z]     return self.main(*args, **kwargs)
[2023-04-12T03:18:53.124Z]   File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1055, in main
[2023-04-12T03:18:53.124Z]     rv = self.invoke(ctx)
[2023-04-12T03:18:53.124Z]   File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1404, in invoke
[2023-04-12T03:18:53.124Z]     return ctx.invoke(self.callback, **ctx.params)
[2023-04-12T03:18:53.124Z]   File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 760, in invoke
[2023-04-12T03:18:53.124Z]     return __callback(*args, **kwargs)
[2023-04-12T03:18:53.124Z]   File "/usr/local/lib/python3.8/dist-packages/click/decorators.py", line 26, in new_func
[2023-04-12T03:18:53.124Z]     return f(get_current_context(), *args, **kwargs)
[2023-04-12T03:18:53.124Z]   File "/usr/local/lib/python3.8/dist-packages/papermill/cli.py", line 250, in papermill
[2023-04-12T03:18:53.124Z]     execute_notebook(
[2023-04-12T03:18:53.124Z]   File "/usr/local/lib/python3.8/dist-packages/papermill/execute.py", line 128, in execute_notebook
[2023-04-12T03:18:53.124Z]     raise_for_execution_errors(nb, output_path)
[2023-04-12T03:18:53.124Z]   File "/usr/local/lib/python3.8/dist-packages/papermill/execute.py", line 232, in raise_for_execution_errors
[2023-04-12T03:18:53.124Z]     raise error
[2023-04-12T03:18:53.124Z] papermill.exceptions.PapermillExecutionError:
[2023-04-12T03:18:53.124Z] ---------------------------------------------------------------------------
[2023-04-12T03:18:53.124Z] Exception encountered at "In [5]":
[2023-04-12T03:18:53.124Z] ---------------------------------------------------------------------------
[2023-04-12T03:18:53.124Z] RayActorError                             Traceback (most recent call last)
[2023-04-12T03:18:53.124Z] Cell In[5], line 1
[2023-04-12T03:18:53.124Z] ----> 1 serve.start()
[2023-04-12T03:18:53.124Z]       2 MedNISTClassifier.deploy()
[2023-04-12T03:18:53.124Z]
[2023-04-12T03:18:53.124Z] File /usr/local/lib/python3.8/dist-packages/ray/serve/api.py:100, in start(detached, http_options, dedicated_cpu, **kwargs)
[2023-04-12T03:18:53.124Z]      54 @guarded_deprecation_warning(instructions=MIGRATION_MESSAGE)
[2023-04-12T03:18:53.124Z]      55 @Deprecated(message=MIGRATION_MESSAGE)
[2023-04-12T03:18:53.124Z]      56 def start(
[2023-04-12T03:18:53.124Z]    (...)
[2023-04-12T03:18:53.124Z]      60     **kwargs,
[2023-04-12T03:18:53.124Z]      61 ) -> ServeControllerClient:
[2023-04-12T03:18:53.124Z]      62     """Initialize a serve instance.
[2023-04-12T03:18:53.124Z]      63
[2023-04-12T03:18:53.124Z]      64     By default, the instance will be scoped to the lifetime of the returned
[2023-04-12T03:18:53.124Z]    (...)
[2023-04-12T03:18:53.124Z]      98           Serve controller actor.  Defaults to False.
[2023-04-12T03:18:53.124Z]      99     """
[2023-04-12T03:18:53.124Z] --> 100     client = _private_api.serve_start(detached, http_options, dedicated_cpu, **kwargs)
[2023-04-12T03:18:53.124Z]     102     # Record after Ray has been started.
[2023-04-12T03:18:53.124Z]     103     record_extra_usage_tag(TagKey.SERVE_API_VERSION, "v1")
[2023-04-12T03:18:53.124Z]
[2023-04-12T03:18:53.124Z] File /usr/local/lib/python3.8/dist-packages/ray/serve/_private/api.py:236, in serve_start(detached, http_options, dedicated_cpu, **kwargs)
[2023-04-12T03:18:53.124Z]     227     http_options = HTTPOptions()
[2023-04-12T03:18:53.124Z]     229 controller = ServeController.options(**controller_actor_options).remote(
[2023-04-12T03:18:53.124Z]     230     controller_name,
[2023-04-12T03:18:53.124Z]     231     http_config=http_options,
[2023-04-12T03:18:53.124Z]     232     head_node_id=head_node_id,
[2023-04-12T03:18:53.124Z]     233     detached=detached,
[2023-04-12T03:18:53.124Z]     234 )
[2023-04-12T03:18:53.124Z] --> 236 proxy_handles = ray.get(controller.get_http_proxies.remote())
[2023-04-12T03:18:53.124Z]     237 if len(proxy_handles) > 0:
[2023-04-12T03:18:53.124Z]     238     try:
[2023-04-12T03:18:53.124Z]
[2023-04-12T03:18:53.124Z] File /usr/local/lib/python3.8/dist-packages/ray/_private/client_mode_hook.py:105, in client_mode_hook.<locals>.wrapper(*args, **kwargs)
[2023-04-12T03:18:53.124Z]     103     if func.__name__ != "init" or is_client_mode_enabled_by_default:
[2023-04-12T03:18:53.124Z]     104         return getattr(ray, func.__name__)(*args, **kwargs)
[2023-04-12T03:18:53.124Z] --> 105 return func(*args, **kwargs)
[2023-04-12T03:18:53.124Z]
[2023-04-12T03:18:53.124Z] File /usr/local/lib/python3.8/dist-packages/ray/_private/worker.py:2382, in get(object_refs, timeout)
[2023-04-12T03:18:53.124Z]    2380             raise value.as_instanceof_cause()
[2023-04-12T03:18:53.124Z]    2381         else:
[2023-04-12T03:18:53.124Z] -> 2382             raise value
[2023-04-12T03:18:53.124Z]    2384 if is_individual_id:
[2023-04-12T03:18:53.124Z]    2385     values = values[0]
[2023-04-12T03:18:53.124Z]
[2023-04-12T03:18:53.124Z] RayActorError: The actor died unexpectedly before finishing this task.
[2023-04-12T03:18:53.124Z] 	class_name: ServeController
[2023-04-12T03:18:53.124Z] 	actor_id: 6ec82977fa4d1a9958a4b8f701000000
[2023-04-12T03:18:53.124Z] 	name: SERVE_CONTROLLER_ACTOR:WCUrZZ
[2023-04-12T03:18:53.124Z] 	namespace: serve
[2023-04-12T03:18:53.124Z] The actor is dead because its owner has died. O Owner worker exit type: SYSTEM_ERROR Worker exit detail: Owner's node has crashed.
[2023-04-12T03:18:53.124Z] The actor never ran - it was cancelled before it started running.
[2023-04-12T03:18:53.124Z]

cc @Nic-Ma

Hi @ericspod  could you please help review the notebook? https://github.com/Project-MONAI/tutorials/blob/main/deployment/ray/mednist_classifier_ray.ipynb if it's a testing environment issue I'll change the script to skip the test.

hi @wyli, I'm not sure what's causing this. I can run the notebook through all the way in Colab without any issues so it's possibly a timing problem. The startup and shutdown commands for Ray take a bit of time to execute so perhaps that's it, but for now if you wanted to skip this one it does appear to still be correct.

added to skip the test https://github.com/Project-MONAI/tutorials/blob/18314deed1070e81a6e0f4dc2729ae2b5bb59b57/runner.sh#L100


Introduced ModuleKey

Based on the conversation here: https://goo.gl/HTcLuA
Introduced a new key class to uniquely identify module descriptors. This class also contains methods to convert to/from string UID representations.

Closed in favor of https://github.com/spring-cloud/spring-cloud-data/pull/4.


How are we preventing people for buying and selling votes?

A common problem with digital voting (especially if not done through dedicated hardware) is the vastly increased possibility for buying votes, if you can't identify that the physical person with authority to cast the vote is in fact the person casting the vote you also allow for vote buying with both ease and confirmation.
If a fraudulent party intend to buy ones vote in order to cast an illicit vote.

What prevents one from selling ones access code for third party use?

Access codes could easily be distributed through various digital communication services.
A potential buyer would gain access to confirmation that vote is in fact cast to their intended precipitant.

What prevents one from letting a third party buy access to the electors computer and cast the vote

The third party could use various remote control principles such as VNC, RDP, X11 forwarding, SSH, etc.

These are just some of many concerns surrounding electronic elections, especially online/network-based ones without dedicated hardware. If digital network based voting paves the path for increased feasibility in electoral fraud, then do we really want to adopt this technology?
I am not yet convinced that network or even digital voting at all is a good idea.

How is this different from "I will pay you to vote for x,y,z" when using a paper-based system?

It is not possible neither feasable to implement a voting system that is perfect and protects against any and all malicious use. Using a paper based system is not perfect either, but it is good enough.
Somewhere you have to draw a line and say it is good enough for our use.
// My two cents :1234:

It's much harder to exploit vote selling in a paper based system as it's almost impossible for the buyer to get a receipt confirming that the vote is actually made in their payed interest, making it easy for one to take the money and still not cast their vote for the malicious party. And as it's people turning in paper sheet you'll easily notice if one would try to turn in several votes.
With this sort of digital that kind of malicious use suddenly becomes feasible. I still do not think using a digital system is a good idea, especially with people running the client on their own computers. We haven't even considered other new attack vectors such as spreading malware to electors which manipulate votes, I'm not very keen on introducing a whole array of new attack vectors into a system that already works well for the purpose as is. In the end I believe we've got more to lose then to win.

@Hultner: have you read the requirements file? It is not to be hosted on their own computer.

@Hultner: Have you considered the posibility that someone might bribe two students to be vote counters and make them manipulate the result in our current system. Having the "someone might pay people to vote" arguement seems flawed. I consider this question as closed. Then again. I'm not digIT.

@lindskogen I'm talking about end user using their own hardware for voting.
@krabban91 Isn't the reason to have two independent vote counters partly to reduce the risk of corruption. I'm not saying the current is system is perfect either but if we actually consider using this system I do think that it should be a collaborative decision taken by the student division following a serious discussion pro et contra the change.

Not an issue for the VoteIT software.


Reusing destinations with different set of navigation arguments

Hi @raamcosta - me again 😄
This isn't so much an "issue" as it is a "discussion".
I'm curious if Compose Destinations supports cases where we want to reuse a destination but provide a different set of navigation arguments.
I've done some initial investigating into this which I'm happy to share below.
For example, consider the following scenarios (image)

Scenario 1

User makes a search, and results come back as a slug which we pass to the configure screen.
The configure screen fetches all details pertaining to that slug, and allows users make a configuration based on that. After choosing a configuration, we pass the associated ids to the details screen.
The details screen presents details according to the ids provided.

Scenario 2

User wants to edit an existing search, which is already encapsulated as ids, and we pass those ids to the configure screen
The configure screen uses the ids to fetch all the details of the other configurations available, and allows users to update their configuration based on that. After choosing the configuration, we pass the new ids back to the search screen.
Back in the search screen, the existing search is updated according to the new configuration

For both scenarios, the configure screen is the same, but it is used differently.
There are several ways we could implement this in code.
Single navArgsDelegate and enums
We can use a single navArgsDelegate for both, and leverage an enum to denote how the Configure screen should behave:
data class ConfigureArgs(
    val slug: String?,
    val id1: Int?,
    val id2: Int?,
    val mode: ConfigureMode, // "Search" or "Edit"
)

However, this approach isn't "typesafe" as it would open some confusion on how different "combinations" of args would be used, and makes it confusing what exactly is required and not.
Single navArgsDelegate and sealed interfaces
Alternatively, we could continue using a single navArgsDelegate, but leverage Kotlin's sealed interfaces to make things "typesafe":
data class ConfigureArgs(
    val mode: ConfigureMode,
)

sealed interface ConfigureMode {
    data class Search(val slug: String): ConfigureMode
    data class Edit(val id1: Int, val id2: Int): ConfigureMode
}

However, ksp throws an error:
[ksp] com.ramcosta.composedestinations.codegen.commons.IllegalDestinationsSetup: Composable 'ConfigurePage': 'navArgsDelegate' cannot have arguments that are not navigation types. (check argument 'mode')

Given that, it seems sealed interface is not supported by Compose Destination. I've also tried using sealed class instead, but I get the same error.
Multiple navArgsDelegate
I decided to explore the multiple navArgsDelegate approach for each scenario so we can make it clear just what the args are used for. Using Compose Destinations, I've gone ahead and built it like this:
UI (note the Navigator, ViewModel and PageContent are the same)
//
// Scenario 1
//

data class SearchConfigureArgs(
    val slug: String
)

@Destination(
    navArgsDelegate = SearchConfigureArgs::class
)
@Composable
fun SearchConfigurePage(
    navigator: ConfigureNavigator,
    viewModel: ConfigureViewModel = hiltViewModel(),
) {
    ConfigurePageContent()
}

//
// Scenario 2
//

data class EditConfigureArgs(
    val id1: Int,
    val id2: Int,
)

@Destination(
    navArgsDelegate = EditConfigureArgs::class
)
@Composable
fun EditConfigurePage(
    navigator: ConfigureNavigator,
    viewModel: ConfigureViewModel = hiltViewModel(),
) {
    ConfigurePageContent()
}

Since we access the navigation arguments from inside the ViewModel's SavedStateHandle, we need our SavedStateHandle to support both set of arguments, otherwise the app will crash due to casting errors.
I've gone ahead and defined our ConfigureMode which is privately scoped to our ViewModel.
Mode and ViewModel
private sealed interface Mode {
    data class Search(val args: SearchConfigureArgs) : Mode
    data class Edit(val args: EditConfigureArgs) : Mode

    companion object {
        fun SavedStateHandle.navArgsMode(): Mode {
            try {
                return Search(navArgs())
            } catch (e: Exception) {
                // proceed
            }

            // throw if error
            return Edit(navArgs())
        }
    }

    fun toInput(): GetConfigurationChoicesUseCase.Input = when (this) {
        is Search -> {
            GetConfigurationChoicesUseCase.Input.Slug(
                slug = this.args.slug,
            )
        }
        is Edit -> {
            GetConfigurationChoicesUseCase.Input.Id(
                id1 = this.args.id1,
                id2 = this.args.id2,
            )
        }
    }
}

@HiltViewModel
class ConfigureViewModel @Inject constructor(
    savedStateHandle: SavedStateHandle,
    getConfigurationChoices: GetConfigurationChoicesUseCase,
) {
    private val argsMode = savedStateHandle.navArgsMode()
    private val choices = getConfigurationChoices.invoke(input = argsMode.toInput())

    // [...]

    fun handleActionClick() {
        when (argsMode) {
            is Search -> {
                // navigate user to Details page
            }
            is Edit -> {
                // send result back to previous screen and navigate back
            }
        }
    }
}

The above implementation works just as we'd need, but as you can see there's a decent amount of boilerplate we need to add to support this scenario.
💨
What do you think of this approach? Or is there another way that Compose Destinations can do this for us more easily?
Thank you in advance! 🙏

Hi @trod-123!
So your second approach with the sealed interface can work if you annotate it with @Serializable from kotlinx serialization or you make the interface extend Parcelable (which is also an interface) which will then force each of your options inside that sealed interface to also be annotated with kotlinx serialization (if you go that route) or implement the Parcelable interface.
Note that destinations are defined by their navigation arguments (they're literally part of their route id when using official compose navigation) so you must only one set of arguments. Like you suggested, either a sealed hierarchy or a class with both nullables can work or by having different Composables annotated with @Destination that then call the same composable. To be honest, I don't dislike the last approach, but I think you might prefer the sealed interface.
Let me know if that fixes it for you!

Hi Rafael,
The Parcelable bit did it ✅ .
With the following, I can define a single Configure destination with different "modes".
data class ConfigureArgs(
    val mode: ConfigureMode,
)

sealed interface ConfigureMode : Parcelable {
    @Parcelize
    data class Search(val drugSlug: String) : ConfigureMode

    @Parcelize
    data class Edit(val drugId: Int, val quantity: Int) : ConfigureMode
}

@Destination(
    navArgsDelegate = ConfigureArgs::class
)
@Composable
fun ConfigurePage(
    navigator: ConfigureNavigator,
    viewModel: ConfigureViewModel = hiltViewModel(),
)

The ViewModel handling is a lot cleaner, and I no longer need all that brittle boilerplate involved with juggling different navArgsDelegate types. I think it also looks nicer for the consumer to not need to think about different ConfigureDestination to choose from; just pass the mode of interest.
Regarding deep linking... that's something I'll need to explore in more detail next. I know you suggested making each enumeration of the sealed interface Parcelable, but do you foresee any issues if I wanted to launch a specific mode of Configure screen via deep links?
Thanks again in advance.

Hi @trod-123
Deep linking into destinations that have arguments of type Parcelable (or Serializable) means that by default your link is gonna have a long base64 string. So it depends of what your needs are with the deep link. If you’re generating the link inside the app itself and you’re using it to put on a notification for example, then you can easily create the link by calling YourDestination(yourArgs).route and since the link won’t even be visible to the user, it should be fine.
However, if you need to generate the deep links somewhere else and/or the user will see the link, then it will make sense to provide a NavTypeSerializer that basically will let you choose how the argument type will be represented in the route. If you do that, then you won’t need Parcelable anymore and creating the deeplink outside the app will be easierbas well as the link will be prettier 🙂

This is good, thanks @raamcosta.
I'll mark this issue as resolved for the time being, and open a new one for deep linking if I come across anything weird. Hopefully not 😃


P4RT-2.1 -Removing false Errorf for MasterArbitration failure for unset election ID

P4RT 2.1 - Deleted t.Errof for MasterArbitration response for UnsetElectionIdTest

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1236

Relevant Lines:
2173

💛  - Coveralls

@rsindhujha Would you please elaborate on this? Which error do you expect to see in such a scenario?

@rsindhujha Would you please elaborate on this? Which error do you expect to see in such a scenario?

@LimeHat , UnsetElectionID sends code NotFound which is expected. Hence MasterArbitration Error needs to be ignored.So removed t.Errorf
https://github.com/openconfig/featureprofiles/blob/6d91b187aff00107cf4da854b622eb30399ca60b/feature/experimental/p4rt/tests/p4rt_election/p4rt_election_test.go#L368

UnsetElectionID sends code NotFound which is expected.

I agree with the first part.
However, grpc status code is validated on lines L363-L366:
https://github.com/openconfig/featureprofiles/blob/6d91b187aff00107cf4da854b622eb30399ca60b/feature/experimental/p4rt/tests/p4rt_election/p4rt_election_test.go#L362-L370
I.e. my question is what error is expected together with a grpc NotFound status code when we retrieve it via getRespCode(&test) call on L363.

UnsetElectionID sends code NotFound which is expected.

I agree with the first part. However, grpc status code is validated on lines L363-L366:
https://github.com/openconfig/featureprofiles/blob/6d91b187aff00107cf4da854b622eb30399ca60b/feature/experimental/p4rt/tests/p4rt_election/p4rt_election_test.go#L362-L370
I.e. my question is what error is expected together with a grpc NotFound status code when we retrieve it via getRespCode(&test) call on L363.

I believe, except for status OK, rest are considered error codes by itself. There isn't any additional error here.

Let me ask this another way.
As far as I see it, if you just return code 5 (NOT_FOUND) in MasterArbitrationUpdate message status, it will be captured in resp variable but not in err.
I'm trying to understand where does non-nil err comes from in this scenario.

where does non-nil err comes from in this scenario.

When the grpc status code is other than 0, the function getRespCode, returns the grpc status code along with error itself.
Hence the err itself is non-nil here.
https://github.com/openconfig/featureprofiles/blob/b2929abe9cc0c9d694d93826319ab249ac2ee0ca/feature/experimental/p4rt/tests/p4rt_election/p4rt_election_test.go#L160

When the grpc status code is other than 0

Could you please be more specific here, in which field/message?
Thank you,

When the grpc status code is other than 0

Could you please be more specific here, in which field/message? Thank you,

Line 363:
resp, err := getRespCode(&test)
The function getRespCode processes the ArbitrationResponse error and returns both the error code and the error itself back to the caller. Code snippet below:
if err := p4rtutils.StreamTermErr(args.handle.StreamTermErr); err != nil {
if err != nil {
return int32(status.Code(err)), err
}
Due to this, 'resp' contains the numeric error code and 'err' contains the error detail. Hence, 'err' wont be nil and that is expected. Previously, the script was erroring out if 'err' wasn't nil. I am changing it to a 'Logf' from an 'Errorf'. For all practical purposes we could delete the block that checks what 'err' contains, given that we have already checked 'resp'.
Hope that clarifies it. Thanks!

Hope that clarifies it. Thanks!

I'm sorry, but not really.. can you describe in P4RT terms what message with what fields set do you return that triggers this code path?
As I mentioned a few comments above, "if you just return code 5 (NOT_FOUND) in MasterArbitrationUpdate message status, it will be captured in resp variable but not in err."
On the other hand, if you, for instance, close the stream with the error code -> I'd expect would be captured just as you described.
Do you populate error message in StreamMessageResponse in this case?

Hope that clarifies it. Thanks!

I'm sorry, but not really.. can you describe in P4RT terms what message with what fields set do you return that triggers this code path?
As I mentioned a few comments above, "if you just return code 5 (NOT_FOUND) in MasterArbitrationUpdate message status, it will be captured in resp variable but not in err." On the other hand, if you, for instance, close the stream with the error code -> I'd expect would be captured just as you described.
Do you populate error message in StreamMessageResponse in this case?

Yes, you're right. The stream gets disconnected with unset Election ID, Hence err is not nil and status code comes through as NOT_FOUND.

Right, but I don't think that should be the case?
@Ankur19 probably can confirm/clarify, but my read of the spec is that you are supposed to allow that connection and just return a status code 5 in masterArbitrationUpdate message, no errors.
I.e. sections 5.3 && 5.4 of the spec just talks about settings status.code to google.rpc.NOT_FOUND,

Otherwise, the controller becomes a backup. If the controller was previously a primary (and downgraded itself), then an advisory message is sent to all controllers for this device_id and role. Otherwise, the advisory message is only sent to the controller that sent the initial MasterArbitrationUpdate. See the following section for the format of the advisory message.

Otherwise, if there is no primary currently, for all backup controllers, status is set to non-OK (with status.code set to google.rpc.NOT_FOUND).

and section 16.6 specifically says that arbitration errors should not be reported via StreamError messages

Note that client arbitration errors are never reported using the StreamError message. Invalid MasterArbitrationUpdate messages sent by the client cause the stream to be terminated and the appropriate error code to be returned to the client immediately. See section 5.3.

And this is why, in my opinion, we should be hitting inly this line of getRespCode() fn, which actually extracts the status_code from arbitration update (and not the error code from some other place):
https://github.com/openconfig/featureprofiles/blob/2b2ce7e8ac64300b792ef107b5f00336831a9b52/feature/experimental/p4rt/tests/p4rt_election/p4rt_election_test.go#L167

Right, but I don't think that should be the case?
@Ankur19 probably can confirm/clarify, but my read of the spec is that you are supposed to allow that connection and just return a status code 5 in masterArbitrationUpdate message, no errors.
I.e. sections 5.3 && 5.4 of the spec just talk about settings status.code to google.rpc.NOT_FOUND,

Otherwise, the controller becomes a backup. If the controller was previously a primary (and downgraded itself), then an advisory message is sent to all controllers for this device_id and role. Otherwise, the advisory message is only sent to the controller that sent the initial MasterArbitrationUpdate. See the following section for the format of the advisory message.

Otherwise, if there is no primary currently, for all backup controllers, status is set to non-OK (with status.code set to google.rpc.NOT_FOUND).

and section 16.6 specifically says that arbitration errors should not be reported via StreamError messages

Note that client arbitration errors are never reported using the StreamError message. Invalid MasterArbitrationUpdate messages sent by the client cause the stream to be terminated and the appropriate error code to be returned to the client immediately. See section 5.3.

And this is why, in my opinion, we should be hitting only this line of getRespCode() fn, which actually extracts the status_code from arbitration update (and not the error code from some other place):
https://github.com/openconfig/featureprofiles/blob/2b2ce7e8ac64300b792ef107b5f00336831a9b52/feature/experimental/p4rt/tests/p4rt_election/p4rt_election_test.go#L167

Hi! I think I see the issue here.
Currently getRespCode() is returning all error codes. Both StreamTermErr codes as well as ArbitrationResponse.Status.Code codes.
// Handle exception when GetCode is empty.
respCode := arbResp.Arb.GetStatus().GetCode()

These two errors are very different in the sense that StreamTermErr gets generated when stream gets terminated and ArbitrationResponse.Status.Code gets generated when stream is not terminated.
In our scenario the stream doesn't get terminated. So, instead of changing t.Errorf to t.Logf, here is what I propose:

Split ``getRespCode()into two functions:getStreamTermErr()andgetArbitrationResponseErr()`.
Based on the scenario. Validate the correct Error. i.e. In our case: for unset electionID: ``getStreamTermErr()==null&&getArbitrationResponseErr()==NOT_FOUND`

Thanks Ankur. I agree it would be a nice enhancement to split this function into the two.
I don't think it would make a functional change for the "pass" behavior as it is written today, though -> it seems that the origin of this PR is a non-null StreamTermErr (which is not expected and correctly captured with a t.Error call)

Thanks Ankur. I agree it would be a nice enhancement to split this function into the two.
I don't think it would make a functional change for the "pass" behavior as it is written today, though -> it seems that the origin of this PR is a non-null StreamTermErr (which is not expected and correctly captured with a t.Error call)

Right. I think so too. For a correctly behaving device, err will be null.

Thanks Ankur. I agree it would be a nice enhancement to split this function into the two.
I don't think it would make a functional change for the "pass" behavior as it is written today, though -> it seems that the origin of this PR is a non-null StreamTermErr (which is not expected and correctly captured with a t.Error call)

Right. I think so too. For a correctly behaving device, err returned from getRespCode() should be null.

hi @Ankur19 ,
Thanks for the detailed reply.
Based on recent discussion, I would add deviation for Juniper for this test. Shall i modify the same git PR or open a new one?

Can you please update the description to accommodate the recent change with deviation? Also, please add more context in to why the deviation.

Sorry, I can not tell for sure what's the review status now? @Ankur19 @LimeHat any further concerns?

/gcbrun

/gcbrun


Lab Refactor: Tier 3: Implement SDS

[ ] Implement SDS for form components
[ ] Implement SDS for modals

Closing in favor of the v2 rebuild


[Bug]: Type 'Engine' is missing the following properties from type 'Engine': _domArray, _eventDispatcher, _initialized, _loader

Contact Details
No response
What happened?
This exact line of code from the documentation is causing an error message:
  const particlesInit = useCallback(async (engine: Engine) => {
    console.log(engine);

    // you can initialize the tsParticles instance (engine) here, adding custom shapes or presets
    // this loads the tsparticles package bundle, it's the easiest method for getting everything ready
    // starting from v2 you can add only the features you need reducing the bundle size
    await loadFull(engine);
}, []);

Error Message:
Argument of type
'import("d:/project_name/node_modules/tsparticles-engine/types/engine").Engine'
is not assignable to parameter of type
'import("D:/project_name/node_modules/.pnpm/tsparticles-engine@2.5.2/node_modules/tsparticles-engine/types/engine").Engine'.

Type 'Engine' is missing the following properties from type 'Engine': _domArray, _eventDispatcher, _initialized, _loader

tsParticles Version
^2.5.3
Which library are you using?
React.js (react-particles, react-tsparticles, react-particles-js)
tsParticles Configuration
Config doesn't cause an issue

What browsers are you seeing the problem on?
No response
Relevant log output
No response
Code of Conduct

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

@Blankeos can you share the full code of your imports and particles usage?

https://codesandbox.io/s/staging-flower-72is51?file=/src/ParticlesBackground.tsx
I've created this CodeSandbox but it works as expected, can you replicate the issue there?

Hi @matteobruni! Thanks for the code sandbox, that helped me figure it out. I think the error was caused by the fact that tsparticles-engine was inside my node_modules folder but not in my package.json? It's a huge facepalm moment 🤦♂ I know...
Possible Cause:

I migrated from using yarn to pnpm months ago. It wasn't causing issues before... only until now. Or maybe I just haven't opened the file ever since because it wasn't really causing issues on deployment when type-checking with tsc when it should have. Does installing tsparticles also install tsparticles-engine as an included package? I assumed it was because intellisense shows that it found the module, so I never really opted to pnpm add tsparticles-engine to see if that was the fix.

In any case, an error message of "module not found" could have been more straightforward to help me solve it. I think the yarn to pnpm migration is the strongest cause here.
Thanks again! I'll just go ahead and close this issue.

tsparticles-engine is a dependency of both react-tsparticles and tsparticles, I had some issues with PNPM in the past and they were solved by their team in newer versions 😅
tsparticles-engine for both packages are required only when using TypeScript


Default value will be used it the value of the request body data field is null

I just had a look at this commit:
https://github.com/woohoolabs/yin/commit/c2ace26d24710ac407b30a4da481deb806f44ff8#diff-8b9b082f8f14fc68d1683252b988283eR486
Won't that cause an issue when you send null as the value? Like in this case: http://jsonapi.org/format/#crud-updating-to-one-relationships
PATCH /articles/1/relationships/author HTTP/1.1
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "data": null
}

Would perhaps be better to use the array_key_exists method.

I am not sure if it is a problem.
The current implementation can be advantageous for the following use-case:
$data = $jsonApi->getRequest()->getResource([]);
hydrate($data);

function hydrate(array $data) {
    //...
}

because type hinting is easier as you don't have to specify a null default value for the $data parameter.
However, JSON API POST and PATCH requests must always contain a data object, so THAT question is the following: should $request->getResource() make difference between a valid request which removes a relationship and an invalid request which doesn't have a data object.
I don't have a clear answer here because I don't like when getters make validation as a "bonus" but maybe these two cases should really be distinguished. On the other hand, the current approach makes type hinting really convenient and there are other ways to validate if the request is valid (e.g.: with the RequestValidator class).
What is your stance on this?

I am closing this, but feel free to reopen the issue if you have further concerns about my reasoning. :)


Preinstall is no longer ran when installing plugins (broke hyperambient)

Recent change: bd5e802e1fb76d36955aae9359f829b3b7f8ce4e changed the install behaviour so that preinstall is no longer run and at least hyperambient that used preinstall step for it's configurable dependencies no longer works.

Is there a particular reason for dropping lifecycle scripts, btw? Seems somewhat limiting, and it's a little awkward to debug install issues unless documented clearly for plugin authors.

Related to #408

I'm going to revert it. I thought it was a security measure but it didn't make much sense.

https://github.com/zeit/hyperterm/commit/05b491f62c43db100316176b9bb0d8e50487b902
Will be in 0.7.1

Awesome, thanks @rauchg!


FEAT: Handy issue template

Hi Mohamed,
Hope you are well. This Github issue template might come handy and I've modified it to save you time on what happened on https://github.com/efabless/openlane2/issues/98
Just an idea in case you find it useful in case you want to extend it!
Cheers,
Dario

Done in #174- thank you!


TLS is skipped per registry.

Instead of skipping TLS if any registry to search is insecure.
Patches: #932
Signed-off-by: haircommander<EMAIL_ADDRESS>

Could you improve the description of this PR?

All kinds of test unhappiness @haircommander

LGTM
@rh-atomic-bot r+


Bad antialiasing when using mask

The antialiasing doesn't work if a sprite contains a mask.
Fiddle : http://jsfiddle.net/gkkgp5bt/2/

this is a limitation of WebGL i'm afraid, sprite masking requires the scene be rendered to a framebuffer.  Should look nicer, but means pixi needs to do a little more work.
Hope that helps!

Thank you for the quick answer!
The first solution isn't acceptable in my context because i need a mask with transparency level and i think it's not possible with graphics' mask, is it?
I've alredy tried the second solution but the FXAA filter seems to poorly render the text elements.

If you set the alpha off the container you are masking - does that achieve
the same effect?
Final resort,  you could also try increasing the resolution of your app too!
On Thu, Aug 11, 2016 at 1:01 PM Louis @Atome<EMAIL_ADDRESS>wrote:

Thank you for the quick answer!
The first solution isn't acceptable in my context because i need a mask
with transparency level and i think it's not possible with graphics' mask,
is it?
I've alredy tried the second solution but the FXAA filter seems to poorly
render the text elements.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/pixijs/pixi.js/issues/2792#issuecomment-239141450,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AC998vRcaAYgDh1tpAOs6ubTQBKK8Tsaks5qew7_gaJpZM4Jh-m-
.


Flip default for pow2-lb, stop using flag in new models

13:03:41 [ERROR] Failures:
13:03:41 [ERROR]   LbServicesProducerTest.use_power_of_two_lb_is_configured_from_feature_flag:120
13:03:41 [ERROR]   LbServicesProducerTest.use_power_of_two_lb_is_configured_from_feature_flag:120
13:03:41 [INFO]

Merge conflict

Closed in favour of #17233


Add @iasa-school.org.il

Link to website:
iasa-school.org.il

@guyKN I am sorry for a delay with processing your request.
Pull request merged. Thank you

@guyKN I am sorry for a delay with processing your request.
Pull request merged. Thank you


Fix install-ca-files to use basename, not path

I ran into this while trying out the instructions in the README. This change was required so that it will read the file correctly and handle the linking.

#873 will fix this as well.

Oh bollocks, thanks -- can you fix the indentation to match the surrounding block? (tabs vs spaces)

@tianon Updated.

Thanks, LGTM :+1:


Support for single-quoted core.sshCommand

Changed so there's no warning when $sshCommand and $configuredSshCommand differs only in quoting.

Thanks! If you could fix the failing test and undo the change to the module version number then I'll get this merged in.

I'm going to go ahead and close this as the requested changes haven't been made. If you'd still like this to be included please rebase your changes, fix the failing test and revert the change to the module version.


add support for mjml language

https://mjml.io/documentation/

@MatasSim This looks like XML syntax.  Is there anything uniquely different about the syntax?  If this is just XML syntax then it is already supported provided a slight modification to this file:
https://github.com/Glavin001/atom-beautify/blob/master/src/languages/xml.coffee

@MatasSim : If the answer to @prettydiff 's question is Yes, mjml is just the XML syntax then please let us know! We can add official support for mjml language to Atom-Beautify so you do not have to change the Atom grammar to XML whenever you want to beautify it.

I reopened the issue as the request is valid.  We just need a minor technical confirmation to complete and verify support.

Hi, I think mjml is more like HTML than XML syntax because MJML supports inline css for e-mail templating. I have changed Atom syntax from XML to HTML and beautified code, results were pretty the same. actually there is nothing unique about this syntax so I think we can close this issue.

I have changed Atom syntax from XML to HTML ...  actually there is nothing unique about this syntax so I think we can close this issue.

We would want to add support for MJML such that you do not have to change the selected grammar for Atom.


Confused about cookiejar.txt

Hi,
I'm trying to get this working;
I'm getting after $login->success;
Array ( [steamid] =><PHONE_NUMBER>9392XXX [sessionId] => 5f00b13a8c3bd59923142XXX [cookies] => )
My issue is my cookies array/string is returning empty; so I had a poke around and looking at this
'cookies' => $this->cookiejarToString(file_get_contents($this->config['datapath'].'/cookiejar.txt'))
Nothing in this script sets /cookiejar.txt with data at any point during login process ? So when the cookiejarToSring function is getting an empty file, am I missing something here?

Hello,
Your datapath have chmod setted on 777?


SAK-48986 dashboard Add course list to home dashboard

https://sakaiproject.atlassian.net/browse/SAK-48986

I don't know what to do about the windows build. The npm.exe download is failing.


Toggle: Usage and Style documentation

A review of the toggle's Usage and Style pages was carried out as part of an accessibility review.  Note that there are comments from both Jess Lin and myself (and I sometimes respond to something she said).
Key items to consider:

the Usage page lacks an Anatomy section, which would go a long way to answering some questions we had about how a Heading would be used in a toggle (there are no examples). It may also help align terms on the usage and style pages.
the usage page does not list all the variants. There are at least 2, possibly 3: the default, a small WITH on/off text, and a small without on/off text. It's worth making it clear that the on/off text is only optional on the Small variant, not the default
on the Style page, an 'off' toggle is shown with a darker switch circle, which makes the entire construct potentially fail non-text contrast (since the contrast between the outline and the circle is only 2.5:1). It appears this is an anomaly (does not appear on the React components page for example), but the toggle button presentation on all 4 themes (white, grey 10, etc) should be carried out to ensure that the color of the circle is the same as the page background AND that the outline of the toggle contrasts at least 3:1 against this background.

^ bad example

^ less poor example (although I'd bump up the grey of the off toggle while leaving the disc the colour of the background)

This document should be opened in Adobe Acrobat Reader (not in a browser) so that all the comments and replies can be reviewed.

Needs new Usage template treatment.

Looks like the Toggle doc has been updated, most of issues were already addressed. Designers can double check/consider if these feedback is outdated

[ ] Adding an Anatomy image
[ ] Listing all variants (2- Default and Small)
[ ] Improving the color contrast of the Off toggle\
[ ] Updating some issues in the Content section
[ ] Considering the Adding information to Carbon Data table component https://github.ibm.com/IBMa/E2E/issues/4761

Thank you! @mbgower


display serial number in delete dialog #563

Description
display serial number in the delete dialog instead of database id
Testing instructions
Add a set up instructions describing how the reviewer should test the code

[ ] Review code
[ ] Check Actions build
[ ] Review changes to test coverage
[ ] {more steps here}

Agile board tracking
closes #563

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

Project coverage is 94.54%.

Additional details and impacted files
@@            Coverage Diff            @@
##           develop     #564    +/-   ##
=========================================
  Coverage    94.54%   94.54%
=========================================
  Files           64       64
  Lines        19403    19403
  Branches      2701     2325   -376
=========================================
  Hits         18345    18345
- Misses        1052     1056     +4
+ Partials         6        2     -4

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


style: jQuery global (fix #180)

Please check if the PR fulfills these requirements

[x] It's submitted to right branch according to our branching model
[x] It's right issue type on title
[x] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
[x] The commit message follows our guidelines
[x] Tests for the changes have been added (for bug fixes/features)
[x] Docs have been added/updated (for bug fixes/features)
[x] It does not introduce a breaking change or has description for the breaking change

Description
Minor change for using jQuery global.

Thank you for your contribution to TOAST UI product. 🎉 😘 ✨

Thank you very much!


fix: this is rfc, do not deploy until resolved; details in comments

RFC: DO NOT DEPLOY UNTIL RESOLVED
I am working on the fix for https://github.com/flyteorg/flyte/issues/1085 and have identified where the workflow breaks. This change fixes the issue (short version: id's were being used as keys but their values were truncated and thus we had duplicates) however I am new to the code base and unclear on the implications of removing this ternary.  Where/why do we use metadata rather than id?
Can someone with more context please take a look and help me understand if there are any edge cases I am missing here?
Type

[ X] Bug Fix
[ ] Feature
[ ] Plugin

Are all requirements met?

[X] Code completed
[X] Smoke tested
[ ] Unit tests added
[ ] Code documentation added
[ ] Any pending items have an associated Issue

Tracking Issue
https://github.com/flyteorg/flyte/issues/1085

@jsonporter I could be wrong, but I believe this is a case of backwards-compatibility. For complex nested workflows, we may end up executing the same node multiple times. Each node execution will have a dynamically-generated id. But it will point to a node in the workflow spec by using metadata.specNodeId. However, we aren't guaranteed that the specNodeId will be set, so we fall back to node.id. I believe by removing the usage of metadata, we would break certain use cases of dynamic execution where a node is run multiple times.
cc @kumare3 and @anandswaminathan for more context.

@jsonporter whats the status on this one?


Overlay scroll disable

The overlay doesn't disable the scroll on other components of the screen. How should i do that?

Hi @rikusen0335 , For now. Once the reference needs to scroll down(now it automatically) to view the entire coach mark screen. Seem it does not work correctly by the position. Can you check this issue?

Sorry I can't get what are you talking about, could you make an example gif that describe the issue or tell me more context.

@rikusen0335 sorry for missing that. I think we should have more of a prop like scrollElement to specify the element scrolled.
const scrollElement = props.scrollElement
		? document.querySelector(props.scrollElement)
		: window;

useEffect(() => {
	if (!(props.activate && props.element)) return;

	props.element?.scrollIntoView({ behavior: 'smooth', block: 'center' });
	dimensionSetter({ element: props.element, setDimension });
	const scrollEvent = () =>
		debounce(dimensionSetter, 300)({ element: props.element, setDimension });
	if (!scrollElement) return;

	scrollElement.addEventListener('scroll', scrollEvent);
	scrollElement.addEventListener('resize', scrollEvent);

	return () => {
		scrollElement.removeEventListener('scroll', scrollEvent);
		scrollElement.removeEventListener('resize', scrollEvent);
	};
}, [props.activate, props.element, scrollElement]);

What is currently actual behavior?


[Request] Enable reopening VS Code to the same workspace and set of files as when VS Code was closed (like Notepad++ default)

VSCode Version: Code - Insiders 1.4.0-insider (f4780e67933164a2289b86f2c279aaa05fda672f, 2016-
07-19T05:07:05.876Z)
OS Version: Windows_NT ia32 10.0.14390

Steps to Reproduce:

Open VS Code
Open some files from disk
Open some Untitled editors and make some changes
Close VS Code
Reopen VS Code

Actual:
Nothing was opened and need to reopen editors (especially frustrating with daily updates to VS Code).
(And no option to change this behavior to opt-in.)
Desired:
The same editors and workplace that was opened when I closed VS Code are reopened so I can continue working where I left off with minimal disruption.
(There should at least be an option to opt-in/opt-out of this behavior.)
Clarifcation:
Should work even if a workspace/folder was not opened (just using VS Code as a text editor).

This is a duplicate of #101.


crypto/http/http_client.c: Add the check for OPENSSL_strdup

As the potential failure of the OPENSSL_strdup(), it should
be better to check the return value and return error if fails.
Signed-off-by: Jiasheng Jiang<EMAIL_ADDRESS>
Checklist

[ ] documentation is added or updated
[ ] tests are added or updated

Merged to master and 3.0 branches. Thank you for your contribution.


SSL connect error when fetching crates from Win 8.1: schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE

Problem
cargo build now fails to fetch my deps. It was working on this same Win 8.1 computer before I updated my rustup/nightly.
> cargo build
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (2 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
warning: spurious network error (1 tries remaining): [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)
error: failed to download from `https://crates.io/api/v1/crates/addr2line/0.15.2/download`

Caused by:
  [35] SSL connect error (schannel: initial InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.)

It seems I get this error for each dependency.
Btw, when I go to the url https://crates.io/api/v1/crates/addr2line/0.15.2/download in chrome, it downloads the addr2line-0.15.2.crate file successfully!
Notes
Output of cargo version: cargo 1.56.0-nightly (b51439fd8 2021-08-09)

It was working before I updated my nightly, on this same Win 8.1 computer!
I updated my rust-toolchain file from nightly-2021-06-09 to nightly-2021-08-14:
> cargo new foo
info: syncing channel updates for 'nightly-2021-08-14-x86_64-pc-windows-msvc'
info: latest update on 2021-08-14, rust version 1.56.0-nightly (5a19ffe1c 2021-08-13)
info: downloading component 'cargo'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: installing component 'cargo'
info: using up to 500.0 MiB of RAM to unpack components
info: installing component 'rust-std'
info: installing component 'rustc'
memory allocation of 16777216 bytes failed

> rustup show
Default host: x86_64-pc-windows-msvc
rustup home:  D:\Program Files\.multirust

info: syncing channel updates for 'nightly-2021-08-14-x86_64-pc-windows-msvc'
info: latest update on 2021-08-14, rust version 1.56.0-nightly (5a19ffe1c 2021-08-13)
info: downloading component 'rustc'
info: downloading component 'cargo'
info: downloading component 'rust-std'
info: downloading component 'rust-docs'
 17.1 MiB /  17.1 MiB (100 %)   1.6 MiB/s in  9s ETA:  0s
info: downloading component 'rustfmt'
  2.1 MiB /   2.1 MiB (100 %)   1.7 MiB/s in  1s ETA:  0s
info: downloading component 'clippy'
info: removing previous version of component 'rustc'
warning: during uninstall component rustc was not found
info: removing previous version of component 'cargo'
warning: during uninstall component cargo was not found
info: removing previous version of component 'rust-std'
warning: during uninstall component rust-std was not found
info: removing previous version of component 'rust-docs'
warning: during uninstall component rust-docs was not found
info: removing previous version of component 'rustfmt'
warning: during uninstall component rustfmt was not found
info: removing previous version of component 'clippy'
warning: during uninstall component clippy was not found
info: installing component 'rustc'
info: using up to 500.0 MiB of RAM to unpack components
 75.5 MiB /  75.5 MiB (100 %)  11.3 MiB/s in  6s ETA:  0s
info: installing component 'cargo'
info: installing component 'rust-std'
 20.0 MiB /  20.0 MiB (100 %)  11.6 MiB/s in  1s ETA:  0s
info: installing component 'rust-docs'
 17.1 MiB /  17.1 MiB (100 %) 692.2 KiB/s in  1m  7s ETA:  0s
 13 IO-ops /  13 IO-ops (100 %)   2 IOPS in  5s ETA:  0s
info: installing component 'rustfmt'
 10 IO-ops /  10 IO-ops (100 %)   4 IOPS in  2s ETA:  0s
info: installing component 'clippy'
installed toolchains
--------------------

nightly-2020-10-19-x86_64-pc-windows-msvc
nightly-2020-11-24-x86_64-pc-windows-msvc
nightly-2020-11-25-x86_64-pc-windows-msvc
nightly-2021-03-25-x86_64-pc-windows-msvc
nightly-2021-06-09-x86_64-pc-windows-msvc
nightly-2021-08-14-x86_64-pc-windows-msvc
nightly-x86_64-pc-windows-msvc (default)
1.52.1-x86_64-pc-windows-msvc

active toolchain
----------------

nightly-2021-08-14-x86_64-pc-windows-msvc (overridden by 'D:\projects\foo\rust-toolchain')
rustc 1.56.0-nightly (5a19ffe1c 2021-08-13)

Do you know how I can get it working with the latest nightly on Win 8.1? :)
Any help would be greatly appreciated.

Btw, when I manually use the curl.exe from here to fetch this URL, it gives no SSL errors:
D:\curl-7.78.0-win64-mingw\bin> curl https://crates.io/api/v1
/crates/addr2line/0.15.2/download -v
*   Trying <IP_ADDRESS>:443...
* Connected to crates.io (<IP_ADDRESS>) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: D:\curl-7.78.0-win64-mingw\bin\curl-ca-bundle.crt

*  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=crates.io
*  start date: Oct 21 00:00:00 2020 GMT
*  expire date: Nov 20 23:59:59 2021 GMT
*  subjectAltName: host "crates.io" matched cert's "crates.io"
*  issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon
*  SSL certificate verify ok.
* Using HTTP2, server supports multiplexing
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0

* Using Stream ID: 1 (easy handle 0x19542fb200)
> GET /api/v1/crates/addr2line/0.15.2/download HTTP/2
> Host: crates.io
> user-agent: curl/7.78.0
> accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 302
< content-length: 0
< location: https://static.crates.io/crates/addr2line/addr2line-0.15.2.crate
< server: nginx
< date: Sat, 14 Aug 2021 18:42:30 GMT
< x-content-type-options: nosniff
< x-frame-options: SAMEORIGIN
< x-xss-protection: 1; mode=block
< content-security-policy: default-src 'self'; connect-src 'self' *.ingest.sentr
y.io https://docs.rs https://play.rust-lang.org https://static.crates.io; script
-src 'self' 'unsafe-eval' 'sha256-n1+BB7Ckjcal1Pr7QNBh/dKRTtBQsIytFodRiIosXdE=';
 style-src 'self' 'unsafe-inline' https://code.cdn.mozilla.net; font-src https:/
/code.cdn.mozilla.net; img-src *; object-src 'none'
< access-control-allow-origin: *
< strict-transport-security: max-age=31536000
< via: 1.1 vegur, 1.1 c71d96b07b5616a6017c1713d231dd8f.cloudfront.net (CloudFron
t)
< vary: Accept,Accept-Encoding,Cookie
< x-cache: Miss from cloudfront
< x-amz-cf-pop: MRS52-C2
< x-amz-cf-id: 6c28hSZdPMDWIgCi82qy5_R7TJ9yDZb54Sl1C_fwMqkVmbh0OBAdfQ==
<
* Connection #0 to host crates.io left intact

Likely caused by https://github.com/rust-lang/rust/pull/86874.  It's hard to tell which change in libcurl might cause this, as there were a lot of TLS changes in 7.77.

@Boscop We discussed this in today's @rust-lang/cargo meeting. We'd like some help tracking down the specific issue that changed here, so that we can evaluate what it would take to address it. If it's something straightforward to fix, we'd be happy to upgrade to a fixed version of a dependency to address this. If it's more fundamental or not straightforward to fix, we should talk about the amount of effort that should go into continuing to support host tools on Windows 8.
@rustbot ping windows

Adding a note:  I think this may get fixed in 7.78: https://github.com/curl/curl/pull/7138  I think that is slated for around September 15th.  That needs more investigation.

Oh, I misread, 7.78 was already released a while ago.  I have confirmed that it fixes the issue, and posed #9809 to fix it.

I discovered that this also affects Windows Server 2012 as it hit one of my jobs in CI that happened to be using that.

I'm currently having the same problem pointed out by @ehuss on a Windows Server 2012 https://community-tc.services.mozilla.com/tasks/e8JaLE-UTGKHkiLtxsdfyg/runs/0/logs/public/logs/live_backing.log#L267
If there is another issue opened, sorry for this necroposting

I'm currently having the same problem pointed out by @ehuss on a Windows Server 2012 https://community-tc.services.mozilla.com/tasks/e8JaLE-UTGKHkiLtxsdfyg/runs/0/logs/public/logs/live_backing.log#L267
If there is another issue opened, sorry for this necroposting

I tried install this https://support.microsoft.com/en-us/topic/update-adds-new-tls-cipher-suites-and-changes-cipher-suite-priorities-in-windows-8-1-and-windows-server-2012-r2-8e395e43-c8ef-27d8-b60c-0fc57d526d94 and set CURL_SSL_BACKEND=openssl and it works

@phanmn
Thank you for your help!
I tried to add set CURL_SSL_BACKEND=openssl to our CI, but it doesn't seem to work.
But how can I install the Microsoft update during CI run? May you provide me an example please? Thanks in advance!

hi @Luni-4
I updated it manually on our Windows server 2012


Implement text rise for the SVG back-end

The property and the setter for text rise were already present, but they were never used or called. This patch completes the implementation by calling the setter when the operator is encountered and by using the text rise value when rendering text.
To verify the current behavior:

Open https://mozilla.github.io/pdf.js/web/viewer.html
Run PDFViewerApplication.preferences.set('renderer', 'svg'); in the console and refresh.
Download https://www.pdflib.com/fileadmin/pdflib/Cookbook/pdf/footnotes_in_text.pdf and open it using the Open File button in the viewer. Notice that the 1 and 2 in the footnotes are not in superscript and that the console contains a message about the unimplemented operator setTextRise.

To verify the new behavior:

Open the preview viewer.
Run PDFViewerApplication.preferences.set('renderer', 'svg'); in the console and refresh.
Open the footnotes_in_text.pdf fule using the Open File button in the viewer. Notice that the 1 and 2 in the footnotes are in superscript and that the console message is gone.

/botio-linux preview

/botio test

@Rob--W Since you're also working on the SVG-backend, would you perhaps have time to review this?
/botio-windows test

Why is the unit test in Chrome failing on Windows?
TEST-UNEXPECTED-FAIL | gets destinations, from /Names (NameTree) dictionary | Error: close should have stream controller thrown

This is a known intermittent after the stream API changes landed, but somehow I forgot to file it before. I just did that in #8816. It's not related to this patch.

/botio-linux preview

The intermittent unit test failure is fixed, so it should be fine now.

/botio-linux preview

/botio test

Thanks for the patch. I wish that we also had reftesting for the SVG backend.


Metrics from old pods not purged?

Hello, I don't know if I did something wrong, but I get this pattern on a cluster with a lot of ephemeral pods (because it hosts gitlab jobs):

It looks like it does not purge metrics from pods that does not exist anymore.

Thanks for bring this up @mcanevet
Seems like we might need some filtering when scraping the k8 api on the surface here. I am going to have to research when k8s evicts dead pods from it's API query results.
A feature improvement we can make is adding pod labels to our exporter. I created a issue for it.
https://github.com/jmcgrath207/k8s-ephemeral-storage-metrics/blob/master/main.go#L140
FWIW, I am current working on adding integration testing and hosted helm/images #4 . Hopefully I am done in the next few days and will start looking deeper into this.
If you find anything in the meantime let me know

@mcanevet  would a pod with init containers be a good test case for this?

@jmcgrath207 I'm not sure it's due to lack of filtering when scraping the k8s API because when I restart the exporter's pod, the count starts from 0 again, so I guess the API does not return the dead pods, otherwise we would have them even after a restart. My guess is that you continuously append to the same variable, which mean there is also a possible memory leak.

@mcanevet
I just added some e2e tests for this and I believe the issue is fixed. It's on main now.
https://github.com/jmcgrath207/k8s-ephemeral-storage-metrics/actions/runs/6522694929


Fix: Models not saving. Issue #559

This is in response to an issue caused by my latest PR. Now that saving actually returns the results of generateSlug, it was returning false if the slug was not updated--preventing the Laravel saving observer from updating the model. I couldn't think of a single reason that saving in the SluggableObserver should ever override the model update so I removed the return statement entirely. Before version 8.0.6 this method was always guaranteed to return null, so this should simply be reverting the behavior of the method to that patch.
It feels weird just deleting a return statement, so I am happy to look closer if I have overlooked anything; but I wrote a test for this behavior and tested the change in a current Laravel project and the problem seems to be resolved. I can't think of any further features this should cripple.

✅ provided a rationale for your change (I try not to add features that are going to have a limited user-base)
✅ used the PSR-2 Coding Standard
✅ added tests
☑   documented any change in behaviour (e.g. updated the README.md, etc.) N/A
✅ only submitted one pull request per feature

Got the same problem! models not saving on latest release.

8.0.7 released and 8.0.6 deleted.


Fix szip linking

Fix https://github.com/Unidata/netcdf-c/issues/2828

The failure is unrelated, taking care of that now.


reverted example links so that the filenames are not version-specific.

also fixed an incorrect slice for the DiagnosticReport slicing of the result attribute (per chat with Chris).

I manually tested the examples.html links on the IG generation. Also, the output of the IG creation shows the following:
Error checking links for http://hl7.org/fhir/us: http://hl7.org/fhir/us/package-list.json?nocache=1563233072894
... 4373 html files, 0 pages invalid xhtml (0%)                                (00:06:51.0642sec)
... 2151398 links, 0 broken links (0%)                                         (00:06:51.0642sec)


中文匹配数据集的评测结果中的模型可以在哪里下载呢？

Describe the Question
Describe your attempts

[ ] I walked through the tutorials
[ ] I checked the documentation
[ ] I checked to make sure that this is not a duplicate question

我没上传，自行训练。

哦哦好的感谢


SSL_ERROR_SYSCALL, errno 10054

Hi.
Thank you for this great product. After a long time loading, some websites give a load time out and the following is printed in the debug output window.

BoringSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
kDidFail on io Thread:56, https://xxx
url cancelledError:

Examples :
https://nl.hotels.com/
https://www.planetwin365.com/
Any suggestions?
GJ

hi, I try it, that was true.
i suspect it is a bug of boringssl or curl.
let me further confirm


Add listener filter stat docs

When doing https://github.com/envoyproxy/envoy/pull/5231 it was noticed that there are no stat docs for the existing listener filters. We should fix that.

cc @PiotrSikora @ggreenway


char type return whole length  include padding whitespace

Version
1.15.0
What happened?
Hi, I just find when inserting a string to the Postgres column char type, the response & subsequent query for it returns the whole char's length including padding whitespace, I am not sure if this is designed in purpose, or if there is any config to return only insert content without padding whitespace? I haven't seen this in another orm

Relevant log output
No response
Database schema
CREATE TABLE public."accounts"(
    "id" bigserial PRIMARY KEY,
    "username" CHAR(60) NOT NULL,
    "password" CHAR(120) NOT NULL,
    "gender" GENDER NOT NULL,
    "birth" DATE,
    "created" TIMESTAMPTZ DEFAULT NOW(),
    "modified" TIMESTAMPTZ DEFAULT NULL
);

SQL queries
-- name: GetAccounts :many
SELECT * FROM accounts ORDER BY username LIMIT $1 OFFSET $2;

Configuration
version: "1"
project:
    id: ""
packages:
  - name: "sqlc"
    engine: "postgresql"
    ...
    emit_json_tags: true
    emit_prepared_queries: false
    emit_interface: false
    emit_exact_table_names: false

Playground URL
No response
What operating system are you using?
Linux
What database engines are you using?
PostgreSQL
What type of code are you generating?
Go

Maybe I am missing something. You created a field of type CHAR(60) The postgres docs state that this is a fixed-length, blank padded field, therefore I would expect the result to be a string exactly 60 characters long. If you want a variable length, you should use VARCHAR(60).


Support for Other Types of Tensors in tf.data (For example RaggedTensors / Sparse Tensors)

Please make sure that this is a feature request. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:feature_template
System information

TensorFlow version (you are using): 2.0
Are you willing to contribute it (Yes/No): Yes

Describe the feature and the current behavior/state.
Currently tf.data only supports Regular Tensors.
Will this change the current api? How?
This will not change the API on a large scale. This will just allow tf.data to return RaggedTensor or SparseTensors depending on the Users Need. This will save a lot of memory when it comes to reading Variable Length Sequences.
Who will benefit with this feature?
Anyone Who is using tensorflow.
Any Other info.
I did some digging in the repository, while trying to manually trace function calls and see which functions and classes are needed to be updated.

A similar Overload of GetNextInternal is needed in dataset.h for every new type of vector of Tensor to be Supported.(Sparse and Ragged) https://github.com/tensorflow/tensorflow/blob/222fea0388a9ca5ef5e736156e6604fbe51f07b0/tensorflow/core/framework/dataset.h#L840-L842
A new similar overload of GetNext() with new type of vector of the type of Tensor to be supported (Sparse and Ragged) https://github.com/tensorflow/tensorflow/blob/222fea0388a9ca5ef5e736156e6604fbe51f07b0/tensorflow/core/framework/dataset.h#L720-L721
Implement this GetNextInternal definition in the data kernel ops. Similar to these
https://github.com/tensorflow/tensorflow/blob/222fea0388a9ca5ef5e736156e6604fbe51f07b0/tensorflow/core/kernels/data/interleave_dataset_op.cc#L162-L164
Create modifications of Python Interfaces for these kernels, here https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/data/ops/dataset_ops.py

I'ld like to work on this issue / Collaborate.
@jsimsa

@captain-pool your statement that tf.data only supports regular tensors is not true.
It already supports tf.SparseTensors and there is an internal PR in progress that will add support for tf.RaggedTensors.
Note that the support exists at Python level and is provided through the Structure module (for instance see https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/data/util/structure.py#L501).
The idea is that non-dense tensors are boxed as regular tensors when they are passed into op kernels because in C++ there are no counterparts to tf.SparseTensor or tf.RaggedTensor. The added benefit of doing that is that we do not have to write N kernels for each tf.data op, where N would be the number of types to support.
In other words, this feature request is already partially addressed and will be completely address once the RaggedTensor support is completed. For the time being, I am assigning the to @edloper who is leading the RaggedTensor effort.

@captain-pool your statement that tf.data only supports regular tensors is not true.
It already supports tf.SparseTensors and there is an internal PR in progress that will add support for tf.RaggedTensors.
Note that the support exists at Python level and is provided through the Structure module (for instance see https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/data/util/structure.py#L501).
The idea is that non-dense tensors are boxed as regular tensors when they are passed into op kernels because in C++ there are no counterparts to tf.SparseTensor or tf.RaggedTensor. The added benefit of doing that is that we do not have to write N kernels for each tf.data op, where N would be the number of types to support.
In other words, this feature request is already partially addressed and will be completely address once the RaggedTensor support is completed. For the time being, I am assigning the to @edloper who is leading the RaggedTensor effort.

Thanks for Clearing out the Doubts. @jsimsa will definitely look into it.

tf.data support for RaggedTensors was added by 5fe90dc.

Thank you for your work!
However I think, there is a bug somewhere. I tried the following code in tensorflow 2.0.0-beta0:
import tensorflow as tf
from tensorflow.data import Dataset

data = tf.ragged.constant([
        [[1, 1],
         [2, 2]],

        [[3, 3]],

        [],

        [[4, 4],
         [5, 5]]
    ], dtype=tf.float32, ragged_rank=1)

ds = Dataset.from_tensor_slices(data)
ds = ds.batch(2)

for i, batch in enumerate(ds):
    print("batch", i)
    for x in batch:
        print(x.numpy())

The output is:
batch 0
[[1. 1.]
 [2. 2.]
 [3. 3.]]
[]
batch 1
[]
[[4. 4.]
 [5. 5.]]

the correct output should be:
batch 0
[[1. 1.]
 [2. 2.]]
[[3. 3.]]
batch 1
[]
[[4. 4.]
 [5. 5.]]

Thanks for pointing this out -- I agree that something looks broken there.
We'll look into it and get back to you.
Thanks,
-Edward
On Fri, Jun 14, 2019 at 6:56 AM PistaSaki<EMAIL_ADDRESS>wrote:

Thank you for your work!
However I think, there is a bug somewhere. I tried the following code in
tensorflow 2.0.0-beta0:
import tensorflow as tffrom tensorflow.data import Dataset
data = tf.ragged.constant([
[[1, 1],
[2, 2]],
    [[3, 3]],

    [],

    [[4, 4],
     [5, 5]]
], dtype=tf.float32, ragged_rank=1)

ds = Dataset.from_tensor_slices(data)
ds = ds.batch(2)
for i, batch in enumerate(ds):
print("batch", i)
for x in batch:
print(x.numpy())
The output is:
batch 0
[[1. 1.]
[2. 2.]
[3. 3.]]
[]
batch 1
[]
[[4. 4.]
[5. 5.]]
the correct output should be:
batch 0
[[1. 1.]
[2. 2.]]
[[3. 3.]]
batch 1
[]
[[4. 4.]
[5. 5.]]
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/issues/27653?email_source=notifications&email_token=ABMFVDEH4MXTRXWXSIWNZOTP2N2MNA5CNFSM4HEMR2W2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXWOB3Q#issuecomment-502063342,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABMFVDCBVOWKHMYZEAF6UMLP2N2MNANCNFSM4HEMR2WQ
.

Is this fixed now?

Yes this was fixed by 84cf4d436eb5e41b0a7b24a3a079fd20c1603594.

Thank you, it seems to work!
I have a related problem, but maybe I should open it as another issue:
I have a dataset from generator, containing uneven tensors. After batching I would expect it to return dataset with RaggedTensors. At present it fails.
Here is a minimal example:
import numpy as np
import tensorflow as tf
from tensorflow.data import Dataset

def get_iterator():
    return map(lambda x: np.ones([x, 1]), range(4))

ds = Dataset.from_generator(get_iterator, output_types= tf.float32,
                            output_shapes=[None, 1])

for x in ds:
    print(x)

print("Batched:")

for x in ds.batch(2):
    print(x)

@PistaSaki, @edloper,
Is there an approach that returns a tf.RaggedTensor using tf.data.Dataset.from_generator instead of a tf.Tensor?

@PistaSaki, @VitaliKaiser If you have dense data and want to batch it to become ragged, you can use tf.data.experimental.dense_to_ragged_batch.
@Ceceu There is a pull request (#37400) that will update Dataset.from_generator to work with RaggedTensor (or other composite tensors).  But I think it's been stalled for a little while on making sure it doesn't break a test.


Update readmes in all rail repos

I wrote this text for an update of the original RAIL repo's README shortly before the big refactoring that would need modification for each of the standalones (mostly for the links). Apologies in advance for the many PRs. . .
<div align="center">

[![DOI](https://zenodo.org/badge/223043497.svg)](https://zenodo.org/badge/latestdoi/223043497)
[![PyPI](https://img.shields.io/pypi/v/pz-rail?color=blue&logo=pypi&logoColor=white)](https://pypi.org/project/pz-rail/)
[![Read the Docs (version)](https://img.shields.io/readthedocs/lsstdescrail/stable?color=blue&logo=readthedocs&logoColor=white)](https://lsstdescrail.readthedocs.io/en/stable/#)

[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/LSSTDESC/RAIL/rail?logo=Github)](https://github.com/LSSTDESC/RAIL/actions/workflows/main.yml)
[![codecov](https://codecov.io/gh/LSSTDESC/RAIL/branch/master/graph/badge.svg)](https://codecov.io/gh/LSSTDESC/RAIL)

</div>

# RAIL: Redshift Assessment Infrastructure Layers

RAIL is a flexible software library providing tools to produce at-scale photometric redshift data products, including uncertainties and summary statistics, and stress-test them under realistically complex systematics.
A detailed description of RAIL's modular structure is available in the [Overview](https://lsstdescrail.readthedocs.io/en/stable/source/overview.html) on ReadTheDocs.

RAIL serves as the infrastructure supporting many extragalactic applications of the Legacy Survey of Space and Time (LSST) on the Vera C. Rubin Observatory, including Rubin-wide commissioning activities.
RAIL was initiated by the Photometric Redshifts (PZ) Working Group (WG) of the LSST Dark Energy Science Collaboration (DESC) as a result of the lessons learned from the [Data Challenge 1 (DC1) experiment](https://academic.oup.com/mnras/article/499/2/1587/5905416) to enable the PZ WG Deliverables in [the LSST-DESC Science Roadmap (see Sec. 5.18)](https://lsstdesc.org/assets/pdf/docs/DESC_SRM_latest.pdf), aiming to guide the selection and implementation of redshift estimators in DESC analysis pipelines.
RAIL is developed and maintained by a diverse team comprising DESC Pipeline Scientists (PSs), international in-kind contributors, LSST Interdisciplinary Collaboration for Computing (LINCC) Frameworks software engineers, and other volunteers, but all are welcome to join the team regardless of LSST data rights.

## Installation

Installation instructions are available under [Installation](https://lsstdescrail.readthedocs.io/en/stable/source/installation.html) on ReadTheDocs.

## Contributing

The greatest strength of RAIL is its extensibility; those interested in contributing to RAIL should start by consulting the [Contributing guidelines](https://lsstdescrail.readthedocs.io/en/stable/source/contributing.html) on ReadTheDocs.

## Citing RAIL

RAIL is open source and may be used according to the terms of its [LICENSE](https://github.com/LSSTDESC/RAIL/blob/main/LICENSE) [(BSD 3-Clause)](https://opensource.org/licenses/BSD-3-Clause).
If you make use of the ideas or software here in any publication, you must cite this repository <https://github.com/LSSTDESC/RAIL> as "LSST-DESC PZ WG (in prep)" with the [Zenodo DOI](https://doi.org/10.5281/zenodo.7017551).
Please consider also inviting the developers as co-authors on publications resulting from your use of RAIL by [making an issue](https://github.com/LSSTDESC/RAIL/issues/new/choose).
Additionally, several of the codes accessible through the RAIL ecosystem must be cited if used in a publication.
A convenient list of what to cite may be found under [Citing RAIL](https://lsstdescrail.readthedocs.io/en/stable/source/citing.html) on ReadTheDocs.

Whoops, I thought #50 was done, my bad.


Patch issue #871. Added componentDidMount

Q
A

Bug fix?
yes

New feature?
no

New sample?
no

Related issues?
fixes #871

What's in this Pull Request?
Added componentDidMount and moved shared logic with componentDidUpdate into initSwagger method.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: gobigfoot sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Hi @gobigfoot ,
Thanks for fixing the issue! :)
Laura